alif — Alif Ensemble SoC -funktiot¶
Moduuli alif tarjoaa Alif Ensemble SoC -piirille porttikohtaista toiminnallisuutta, mukaan lukien lohkolaitekääreen sisäänrakennetulle OSPI flash-muistille sekä apuvälineen SoC-tietojen dumppaamiseen Secure Enclave -palveluista.
Esimerkki:
import alif
alif.info()
flash = alif.Flash()
Funktiot¶
Luokat¶
- class alif.Flash(*, start: int = -1, len: int = -1)¶
Luo lohkolaiteobjektin, jonka taustana on sisäänrakennettu OSPI flash-muisti. Tämä luokka on käytettävissä vain, kun laiteohjelmisto on käännetty OSPI-tuki käytössä.
Ilman argumentteja kutsuttuna palauttaa oletussingleton-objektin, joka kattaa flash-muistin kirjoitettavan tiedostojärjestelmäalueen.
starton tavusiirtymä flash-tallennusalueelle. Sen on oltava flash-lohkokoon monikerta ja flash-tallennusalueen sisällä. Oletusarvo on-1, mikä tarkoittaa aloitusta siirtymästä0.lenon objektin paljastaman flash-alueen pituus tavuina. Sen on oltava flash-lohkokoon monikerta eikä se saa ulottua flash-tallennusalueen loppua pidemmälle. Oletusarvo on-1, mikä tarkoittaa kaikkien jäljellä olevien tavujen käyttöä kohdastastartlähtien.Objekti toteuttaa myös puskuriprotokollan, mikä mahdollistaa vain luku -tyyppisen muistikartoitetun pääsyn flash-alueelle OSPI XIP -perusosoitteen kautta. Tämä tarjoaa koko alueesta nollakopioisen näkymän ilman yhtäkään flash-lukua:
flash = alif.Flash() view = memoryview(flash) magic = bytes(view[:4]) # read the first 4 bytes directly from XIP
- readblocks(block_num: int, buf: bytearray) int¶
- readblocks(block_num: int, buf: bytearray, offset: int) int
Lue tavuja flash-muistista puskuriin
buf. Kaksi ylikuormitusta paljastaa yksinkertaisen ja laajennetun rajapinnan:Yksinkertainen muoto (
readblocks(block_num, buf)): lukee kokonaisia lohkoja alkaen lohkoindeksistäblock_num. Arvonlen(buf)on oltava flash-lohkokoon monikerta.Laajennettu muoto (
readblocks(block_num, buf, offset)): lukeelen(buf)tavua – ei välttämättä kokonaista määrää lohkoja – alkaen tavustaoffsetlohkonblock_numsisällä. Arvollalen(buf)ei ole kohdistusrajoitusta.Palauttaa
0onnistuessaan tai negatiivisen virhekoodin. Huomaa, että MicroPythonin vakiintunut lohkolaiteprotokolla palauttaaNone;alif-ajuri paljastaa tarkoituksella alla olevan OSPI-tilakoodin, jotta kutsujat, jotka ohittavatvfs-moduulin, voivat reagoida laitteistovirheisiin.
- writeblocks(block_num: int, buf: bytes) int¶
- writeblocks(block_num: int, buf: bytes, offset: int) int
Kirjoita tavuja puskurista
bufflash-muistiin. Kaksi ylikuormitusta paljastaa yksinkertaisen ja laajennetun rajapinnan:Yksinkertainen muoto (
writeblocks(block_num, buf)): kirjoittaa kokonaisia lohkoja alkaen lohkoindeksistäblock_num. Arvonlen(buf)on oltava flash-lohkokoon monikerta. Jokainen kohteena oleva lohko tyhjennetään automaattisesti ennen kirjoittamista.Laajennettu muoto (
writeblocks(block_num, buf, offset)): kirjoittaalen(buf)tavua – ei välttämättä kokonaista määrää lohkoja – alkaen tavustaoffsetlohkonblock_numsisällä. Arvollalen(buf)ei ole kohdistusrajoitusta, eikä mitään implisiittistä tyhjennystä suoriteta – kutsujan on varmistettava, että kohteena olevat lohkot on tyhjennetty aiemmallaioctl(6, block_num)-kutsulla.Palauttaa
0onnistuessaan tai negatiivisen virhekoodin (katsoreadblocks()perustelut).
- ioctl(cmd: int, arg: int) int¶
Suorittaa lohkolaitteen ohjaustoiminnon.
cmdon yksi MicroPythonin vakiintuneistaMP_BLOCKDEV_IOCTL_*-komennoista:1(init) — palauttaa0.2(deinit) — palauttaa0.3(sync) — palauttaa0.4(block count) — palauttaa alueen lohkojen määrän.5(block size) — palauttaa flash-lohkokoon tavuina.6(block erase) — tyhjentää lohkon indeksissäargja palauttaa tyhjennystoiminnon tuloksen.
Muut
cmd-arvot palauttavatNone.