class Flash – pääsy sisäänrakennettuun flash-muistiin¶
Flash-luokka mahdollistaa suoran pääsyn STM32-pohjaisten OpenMV Cam -kameroiden ensisijaiseen flash-laitteeseen.
Useimmissa tapauksissa pysyvän datan tallentamiseen laitteeseen kannattaa käyttää korkeamman tason abstraktiota, esimerkiksi tiedostojärjestelmää Pythonin standardin tiedosto-API:n kautta, mutta tämä rajapinta on hyödyllinen tiedostojärjestelmän määrityksen mukauttamiseen tai matalan tason tallennusjärjestelmän toteuttamiseen sovellustasi varten.
Muista
OpenMV Cam H7 Plus, Pure Thermal ja N6 käyttävät ulkoista SPI/QSPI/XSPI flash-piiriä ensisijaisena tallennustilana; muut STM32-pohjaiset OpenMV Cam -kamerat käyttävät MCU:n sisäistä flash-muistia. Python-rajapinta on molemmissa tapauksissa identtinen.
Konstruktorit¶
- class pyb.Flash¶
- class pyb.Flash(*, start: int = -1, len: int = -1)
Luo
vfs.AbstractBlockDev-yhteensopiva lohkolaite laudan flash-muistille. Kaksi muotoa on olemassa:Flash()(ilman argumentteja): palauttaa vanhan singleton-objektin, joka tuo esiin koko flash-muistin virtuaalisella osiotaulukolla edeltämänä. Varsinainen flash-data alkaa lohkosta0x100. Tämä muoto on vanhentunut ja poistetaan tulevassa MicroPython-julkaisussa.Flash(start=..., len=...): palauttaa uuden lohkolaitteen, joka käyttää flash-muistia tavusiirtymästästart(oletus0) alkaenlentavun verran (oletus: laitteen loppuosa). Molempien arvojen on oltava taustalla olevan lohkokoon monikertoja (tyypillisesti 512 tavua sisäiselle flash-muistille; ulkoiset SPI/QSPI/XSPI-osat käyttävät suurempaa pyyhintäsektorin kokoa).
Metodit¶
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Lue tavuja flash-muistista puskuriin
buf. Kaksi ylikuormitusta tuo esiin yksinkertaisen ja laajennetun rajapinnan:Yksinkertainen muoto (
readblocks(block_num, buf)): lukee kokonaisia lohkoja lohkoindeksistäblock_numalkaen.len(buf)on oltava flash-lohkokoon monikerta.Laajennettu muoto (
readblocks(block_num, buf, offset)): lukeelen(buf)tavua – ei välttämättä kokonaista lohkomäärää – alkaen tavustaoffsetlohkonblock_numsisällä.len(buf)ei ole kohdistusrajoituksia. Tuettu vain objekteissa, jotka on luotu eksplisiittisillästart/len-argumenteilla, ei vanhentuneessa singletonissa.
- writeblocks(block_num: int, buf: bytes | bytearray) None¶
- writeblocks(block_num: int, buf: bytes | bytearray, offset: int) None
Kirjoita tavuja puskurista
bufflash-muistiin. Kaksi ylikuormitusta tuo esiin yksinkertaisen ja laajennetun rajapinnan:Yksinkertainen muoto (
writeblocks(block_num, buf)): kirjoittaa kokonaisia lohkoja lohkoindeksistäblock_numalkaen.len(buf)on oltava flash-lohkokoon monikerta. Jokainen vaikutuksen alainen lohko pyyhitään automaattisesti ennen kirjoittamista.Laajennettu muoto (
writeblocks(block_num, buf, offset)): kirjoittaalen(buf)tavua – ei välttämättä kokonaista lohkomäärää – alkaen tavustaoffsetlohkonblock_numsisällä.len(buf)ei ole kohdistusrajoituksia, ja mitään implisiittistä pyyhintää ei suoriteta – kutsujan on varmistettava, että vaikutuksen alaiset lohkot on pyyhitty aiemmallaioctl(6, block_num)-kutsulla. Tuettu vain objekteissa, jotka on luotu eksplisiittisillästart/len-argumenteilla.
- ioctl(cmd: int, arg: int) int | None¶
Standardi
vfs.AbstractBlockDevioctl -sisääntulopiste. Katsocmd-arvojen täydellinen luettelo kohdastavfs.AbstractBlockDev.ioctl().cmd=5palauttaa flash-lohkokoon tavuina;cmd=6pyyhkii lohkon, jonka indeksi onarg.