FATFS -moduulin sovellushuomautus (2024)

  1. Kuinka portaat
  2. Rajat
  3. Muistin käyttö
  4. Moduulin koon pienentäminen
  5. Pitkä tiedostonimi
  6. Unicode API
  7. exfat -tiedostojärjestelmä
  8. 64-bittinen LBA
  9. Uudelleensuuntaus
  10. Kopiotiedoston käyttö
  11. Suorituskykyinen tiedostokäyttö
  12. Huomaa Flash Memory Media
  13. Kriittinen osa
  14. Erilaisia ​​käyttökelpoisia toimintoja FATFS -projekteille
  15. Tietoja FATFS -lisenssistä

Kuinka portaat

Perusnäkökohdat

FATFS -moduuli olettaa siirrettävyyden olosuhteiden jälkeen.

  • Ansi 100
    FATFS -moduuli on Ansi C: ssä kirjoitettu väliohjelma (C89).Alustariippuvuutta ei ole, kunhan kääntäjä on C89: n tai uudemman mukainen.Vain EXFAT -ominaisuus vaatii C99: n.
  • Kokonaislukutyyppien koko
    • Kokohiiltyäon oltava 8-bittinen.
    • Kokoint, samoin kuin kokonaislukukampanja, on oltava 16-bittinen tai 32-bittinen.
    • Kokolyhytjapitkäon oltava 16-bittinen ja 32-bittinen.(vain C89: ssä)
  • Riippuvuus
    • 89string.h.
    • Huoneistot:string.hjastdint.h.
    • Valinnainen:stdarg.hjamatematiikka.

Kokonaislukutyypit FATFS -sovellusliittymässä

FATFS: ssä käytetyt kokonaislukutyypit on määriteltyff.hKuten alla on kuvattu.Se perustuu Win32 -sovellusliittymään (Windef.h).Tämä ei ole ongelma useimmissa alustalla.Kun konflikti olemassa olevien määritelmien kanssa tapahtui, sinun on ratkaistava se huolellisesti.

TAVU
8-bittinen allekirjoittamaton kokonaisluku välillä 0-28- 1.
SANA
16-bittinen allekirjoittamaton kokonaisluku välillä 0-216- 1.
Dina
32-bittinen allekirjoittamaton kokonaisluku välillä 0-232- 1.
Qword
64-bittinen allekirjoittamaton kokonaisluku välillä 0-264- 1.
Uina
Aliasallekirjoittamaton intKäytetään minkä tahansa numeron määrittämiseen.
Kiemurha
AliasSANAKäytetään UTF-16-koodiyksikön määrittämiseen.
Tchar
Aliashiiltyä-KiemurhataiDinaKäytetään merkin koodausyksikön määrittämiseen.
Fsize_t
AliasDinataiQwordKäytetään tiedostojen siirtymän osoittamiseen ja tiedoston koon määrittämiseen.
Lba_t
AliasDinataiQwordKäytetään LBA: n sektorien käsittelemiseen ja sektorien lukumäärän määrittämiseen.

Järjestelmäjärjestöt

Alla esitetty riippuvuuskaavio on tyypillinen, mutta ei spesifinen sulautetun järjestelmän konfiguraatio FATFS -moduulilla.

FATFS -moduulin sovellushuomautus (1)

(a) Jos toimitetaan FATFS: n toimiva levymoduuli, mitään muuta ei tarvita.(b) Jotta olemassa olevat levy -ohjaimet kiinnitetään erilaisilla rajapinnalla, tarvitaan joitain liimatoimintoja FATF: ien ja kuljettajan välisten rajapintojen kääntämiseksi.

FATFS -moduulin sovellushuomautus (2)

Vaadittavat toiminnot

Sinun on tarjottava vain FATFS -moduulin vaatimat MAI -toiminnot eikä mitään muuta.Jos kohdejärjestelmän toimivan laitteen ohjausmoduuli on käytettävissä, sinun on kirjoitettava vain liimatoiminnot liittääksesi sen FATFS -moduuliin.Jos ei, sinun on kiinnitettävä toinen laitteen ohjausmoduuli tai kirjoitettava se tyhjästä.Suurin osa MAI -toiminnoista ei aina vaadita.Esimerkiksi kirjoitustoimintoa ei vaadita vain lukumäärityksessä.Seuraava taulukko näyttää, mikä toiminto vaaditaan, riippuu määritysvaihtoehdoista.

FunktioVaaditaan kun:Huomautus
disk_status
disk_initialize
levy
AinaLevy I/O -toiminnot.
Näytteet saatavana ffsample.zip.
Verkossa on monia toteutuksia.
levy
get_fattime
disk_ioctl (ctrl_sync)
Ff_fs_readonly == 0
disk_ioctl (get_sektor_count)
disk_ioctl (get_block_size)
Ff_use_mkfs == 1
disk_ioctl (get_sektor_size)Ff_max_ss! = Ff_min_sss
disk_ioctl (ctrl_trim)Ff_use_trim == 1
ff_uni2oem
ff_oem2uni
ff_wtoupper
Ff_use_lfn! = 0Unicode -tukitoiminnot.
Lisää valinnainen moduuli ffunicode.c projektiin.
ff_mutex_create
ff_mutex_delete
ff_mutex_take
ff_mutex_give
Ff_fs_reentrant == 1O/S -riippuvat toiminnot.
Näytekoodi on saatavana ffsystem.c: ssä.
ff_mem_alloc
ff_mem_free
Ff_use_lfn == 3

FATFS ei välitä siitä, millaista säilytyslaitetta ei käytetä tai miten se toteutetaan.Vain vaatimus on, että se on kiinteän koon lohkoissa luettava/kirjoitettu lohkolaite, johon pääsee edellä määritettyjen levy I/O-toimintojen kautta.

Rajat

  • Tiedostojärjestelmätyyppi: FAT, FAT32 (Rev0.0) ja ExFat (Rev1.0).
  • Avoimen tiedostojen lukumäärä: Rajoittamaton.(riippuu käytettävissä olevasta muistista)
  • Volumien lukumäärä: enintään 10.
  • Sektorin koko: 512, 1024, 2048 ja 4096 tavua.
  • Vähimmäismäärän koko: 128 sektoria.
  • Suurin tilavuuskoko: 232-1 sektoria 32-bittisessä LBA: ssa, käytännössä rajoittamaton 64-bittisessä LBA: ssa EXFAT: lla.
  • Tiedoston enimmäiskoko: 232- 1 tavua rasvan tilavuudessa, käytännössä rajoittamaton EXFAT -äänenvoimakkuudessa.
  • Klusterikoko: jopa 128 sektoria rasvan tilavuudella ja jopa 16 Mt: n exfat -tilavuudella.

Muistin käyttö

Muistin käyttö vaihteleemääritysvaihtoehdot.

Keihäs
este
Keihäs
Peukalo
CMZ
Peukalo-2
AvrH8/300hPIC24MajesteettinenV850esSH-2ARX600IA-32
KääntäjäGCCGCCGCCGCCCH38C30CC78K0RCA850SHCRXCMSC
.Text (def, r/w)10.CHKminulla on6.1k12,5k11.0a11.CHK13.0aZ.P.A.6,5 ktZ.
.Text (min, r/w) 7.0a4. Oikea4.A. 8,5k st. H 9,5ksh.6.CHK4. Oikea6.CHK
.Text (def, r/o) 4.P.A.A. Haq 6.1k Kh 5.CHK 6,5 kth.4.A.P.A.h.
.Text (min, r/o) A. Haq2,5 kt2,1k 4.CHK 4.0a 4.A. 5.1k3.CKzk2,5 kt3,5k
.BSSV*4 + 2V*4 + 2V*4 + 2V*2 + 2V*4 + 2V*2 + 2V*2 + 2V*4 + 2V*4 + 2V*4 + 2V*4 + 2
Työ alue
(Ff_fs_tiny == 0)
V*564
+ F*552
V*564
+ F*552
V*564
+ F*552
V*560
+ F*546
V*560
+ F*546
V*560
+ F*546
V*560
+ F*546
V*564
+ F*552
V*564
+ F*552
V*564
+ F*552
V*564
+ F*552
Työ alue
(Ff_fs_tiny == 1)
V*564
+ F*40
V*564
+ F*40
V*564
+ F*40
V*560
+ F*34
V*560
+ F*34
V*560
+ F*34
V*560
+ F*34
V*564
+ F*40
V*564
+ F*40
V*564
+ F*40
V*564
+ F*40

Nämä ovat FATFS -moduulin muistin käyttö, jolla ei ole alhaisempaa kerrosta joissakin kohdejärjestelmissä seuraavassa kunnossa.Vmerkitsee asennettujen määrien määrää jaFtarkoittaa avoimien tiedostojen määrää.Jokainen tässä tässä näytteessä on optimoitu koodikoko.

FATFS R0.15 Vaihtoehdot: FF_FS_Readonly 0 (r/W, lue/kirjoita) tai 1 (R/O, vain lue) ff_fs_minimize 0 (def, kaikilla perustoiminnoilla) tai 3 (min, täysin minimoitu) ff_fs_tiny 0 (oletusarvoinen) tai 1 (pieni tiedostoobjekti) ja kaikki muut vaihtoehdot jätetään muuttumattomiksi alkuperäisestä asetuksesta.

Moduulin koon pienentäminen

Seuraava taulukko näyttää, mikä API -toiminto poistetaan konfigurointivaihtoehtojen avulla moduulin koon pienentämiseksi.API -toiminnon käyttämiseksi funktion rivin on oltava selkeä.

FunktioFf_fs_minimizeFf_fs_readonlyFf_use_strfuncFf_fs_rpathFf_use_findFf_use_chmodFf_use_expandFf_use_labelFf_use_mkfsFf_use_forwardFF_MULTI_PARTION
0 -1230 -10 -10 -120 -10 -10 -10 -10 -10 -10 -1
f_mount
f_open
f_close
f_read
f_write x
f_sync x
f_lseek x
f_opendir xx
f_closedir xx
f_readdir xx
f_findFirst xx x
f_findnext xx x
f_stat xxx
f_getfree xxx x
f_truncat xxx x
f_unlink xxx x
f_mkdir xxx x
f_rename xxx x
F_dory x
f_chdrive x
f_getcwd xx
Ruoste x x
f_utime x x
f_getlabel x
F_the x x
f_expand x x
f_forward x
f_mkfs x x
f_fdisk x x x
f_putc xx
f_puts xx
f_printf xx
f_get x

Pitkä tiedostonimi

FATFS -moduuli tukee Fat -tiedostojärjestelmän pitkää tiedostonimi (LFN).Tiedoston kaksi erilaista tiedostonimiä, lyhyt tiedostonimi (SFN) ja LFN ovat läpinäkyviä sovellusliittymässä.LFN -ominaisuuden tuki on oletusarvoisesti poistettu käytöstä.Aseta LFN: n käyttöönottoFf_use_lfn1, 2 tai 3 ja lisääffunicode.cprojektiin.LFN -ominaisuus vaatii tietyn toimivan puskurin.Puskurin koko voidaan määrittääFf_max_lfnkäytettävissä olevan muistin mukaan.LFN -määritelmä mahdollistaa LFN: n pituuden jopa 255 merkkiä, niin ettäFf_max_lfntulisi asettaa 255: een jokaiselle olemassa olevalle tiedostonimille.Jos työpuskurin koko ei ole riittävä syöttötiedostonimelle, tiedostotoiminto epäonnistuuFr_invalid_name.Kun käytät minkäänlaista paluuta tiedosto-sovellusliittymään LFN-ominaisuudella RTOS-ympäristössä,Ff_use_lfnon asetettava arvoon 2 tai 3. Tässä tapauksessa tiedostotoiminto allokoi pinoon tai kasaan toimivaan puskurin.LFN: n työpuskuri käyttää(Ff_max_lfn + 1) * 2tavua ja ylimääräistä(Ff_max_lfn + 44) / 15 * 32tavua, kun EXFAT on käytössä.

Koodisivun ja moduulin koko

LFN: llä CM3 + GCC: ssä
Ff_code_pageKoodikoko
437-869 (SBCS)+Z.
932 (japanilainen)Tai
936 (yksinkertaistettu kiinalainen)+177 K
949 (korea)+ 140k
950 (perinteinen kiinalainen)+111k
0 (kaikki koodisivut)+486k

Kun LFN on käytössä, moduulin koko korotetaan riippuu määritetystä koodisivusta.Oikea taulukko näyttää koodin koon lisäyksen joillakin koodisivuilla.Erityisesti CJK: n alueella käytetään kymmeniä tuhansia merkkejä.Valitettavasti se vaatii valtavan OEM-Unicode-kaksisuuntaisen muuntotaulukon ja moduulin kokoa lisääntyy dramaattisesti taulukon osoittamalla tavalla.

Tuloksena DBCS-koodisivuilla olevia LFN: llä olevia FATF: iä ei voida siirtää eniten 8-bittisiin MCU-järjestelmiin.Jos kohdejärjestelmä on vanhanaikainen, vain Unicode ja mitä tahansa ANSI/OEM-koodia ei käytetä ollenkaan, koodisivun asetus on merkityksetön.Voit vähentää koodikokoa määrittämällä FATFS Unicode -sovellusliittymälle jollain SBCS -koodisivulla.

LFN: n käytöstä avoimen lähdekoodin projektissa on joitain rajoituksia, koska Fat -tiedostojärjestelmän LFN -laajennus oli Microsoft Corporationin patentti.Kaikki asiaan liittyvät patentit ovat kuitenkin vanhentuneet, ja LFN -ominaisuuden käyttäminen on ilmainen kaikille projektille.

Unicode API

Oletuksena FATFS käyttää ANSI/OEM -koodia, joka on asetettu sovellusliittymään jopa LFN -kokoonpanossa.FATF: t voivat myös vaihtaa sovellusliittymän koodauksen Unicode -konfigurointivaihtoehtonaFf_lfn_unicode.Tämä tarkoittaa, että FATFS on täydennetty LFN -määritelmän mukainen.TietotyyppiTcharMäärittää polun nimen kielet sovellusliittymässä on kummankin aliashiiltyä(ANSI/OEM tai UTF-8),Kiemurha(UTF-16) taiDina(UTF-32) riippuu tästä vaihtoehdosta.Lisätietoja on kuvauksessaTiedoston nimi.

Huomaa, että koodisivun asettaminen,Ff_code_page, ei oikeastaan ole merkitystä, kun FATFS on määritetty Unicode -sovellusliittymään.Se tulisi asettaa 437 moduulin koon pienentämiseksi.Se vaikuttaa kuitenkin edelleen merkkijonon I/O -toimintojen koodin muuntamiseenFf_strf_encode== 0ja myös taaksepäin yhteensopivuus vanhojen järjestelmien kanssa.Tässä tapauksessa koodisivu on ehkä määritettävä oikein, jos sitä pidetään ongelmana.

exfat -tiedostojärjestelmä

EXFAT (Microsoftin laajennettu tiedostojen allokointitaulukko) tiedostojärjestelmä on FAT/FAT32 -tiedostojärjestelmän peräkkäin, jota on käytetty laajasti sulautetuissa järjestelmissä, kuluttajalaitteissa ja kannettavissa tallennusvälineissä.SDA (SD Association) hyväksyy sen SDXC -kortin tiedostojärjestelmänä, 64 Gt: n ja suuremman, ja ne toimitetaan tällä muodolla.Siksi EXFAT on yksi irrotettavan median ja rasvan tavanomaisista tiedostojärjestelmistä.EXFAT -tiedostojärjestelmä sallii tiedostokoon, joka ylittää 4 Gt: n rajan, mitä rasvatiedostojärjestelmä sallii, ja jotkut tiedostojärjestelmän yleiskustannukset, etenkin klusterin allokointiviive, vähenee myös.Nämä ominaisuudet sallivat tallentaa suuret tiedot jakamatta joihinkin tiedostoihin ja parantamaan tiedoston kirjoitustutkimusta.

Huomaa, että EXFAT -tiedostojärjestelmä on Microsoft Corporationin patentti.FATFS: n exfat -ominaisuus on toteutus, joka perustuuMEILLE.Pat.Sovellus.Pub.Nro 2009/0164440 A1.FATFS -moduuli voi kytkeä EXFAT: n päälle tai pois päältä määritysvaihtoehdolla,Ff_fs_exfat.Kun kaupallisten tuotteiden ExFat otetaan käyttöön, Microsoftin lisenssi riippuu tuotteiden lopullisesta määränpäästä.

Huomautuksia: ExFatin käyttöönotto hylkää C89-yhteensopivuuden ja haluaa C99: n 64-bittisen kokonaislukutyypin tarpeen.

64-bittinen LBA

LBA (looginen lohko -osoite) on osoitemenetelmä, jolla määritetään datalohkon sijainti, nimeltäänsektori, tallennusvälineissä.Se on yksinkertainen lineaarinen osoite, joka alkaa 0: sta ensimmäisenä sektorina, 1 toisena sektorina ja niin edelleen.Isäntäjärjestelmän ei tarvitse pohtia, kuinka datalohko sijaitsee ja hallitaan tallennuslaitteessa.FATFS tukee vain LBA: ta median pääsyyn.32-bittinen LBA on yleinen koko LBA-järjestelmässä.Se voi osoittaa jopa 232Sektorit, 2 TB 512 tavulla/sektorilla.Kun käytetään enemmän kuin 2 TB: n tallennuslaitetta, säilytyslaitteen koko sektorien käsittelemiseksi tarvitaan suurempaa sektorikokoa tai 64-bittistä LBA: ta.

Oletuksena FATFS toimii 32-bittisessä LBA: ssa median pääsyyn.FATF: t voivat myös vaihtaa sen 64-bittiseen LBA: iin määritysvaihtoehdollaFf_lba64.Se mahdollistaa myös GPT: n (GUID -osiotaulukko) osien hallintaan tallennuslaitteessa.Katso lisätietoja GPT: stäf_mkfsjaf_fdisktoiminto.

Uudelleensuuntaus

Kahden tehtävän tiedostotoiminnoterilaiset määrätJokainen on aina uudelleenlähetys ja se voi toimia samanaikaisesti ilman keskinäistä poissulkemista konfiguraatioista riippumatta paitsi silloin, kun LFN on käytössä staattisella työpuskurilla (Ff_use_lfn = 1).

Kahden tehtävän tiedostotoiminnotsama tilavuusei ole oletuksena ketjuvarvoinen.FATF: t voidaan myös määrittää, jotta se olisi langan turvallinen vaihtoehtonaFf_fs_reentrant.Kun tiedostofunktiota kutsutaan, kun äänenvoimakkuutta käytetään toisella tehtävällä, tiedostotoiminto äänenvoimakkuuteen keskeytetään, kunnes tämä tehtävä jättää tiedostotoiminnon.Jos odotusaika ylitti määritelty ajanjaksoFf_timeout, tiedostotoiminto keskeyttääFr_timeout.Aikakatkaisuominaisuutta ei ehkä tueta jollain OSS: llä.Tämän ominaisuuden mahdollistamiseksi OS: n riippuvat synkronoinnin ohjaustoiminnot,ff_mutex_create/ff_mutex_delete/ff_mutex_take/ff_mutex_give, on lisättävä projektiin.On esimerkkikoodiffsystem.cJoillekin OSS: lle.

Huomaa, että uudelleensuunnitelmasta on poikkeusf_mountjaf_mkfstoiminto.Tiedät miksi se on.Nämä äänenvoimakkuudenhallintatoiminnot eivät aina ole säie-turvallisia käsiteltävälle äänenvoimakkuudelle.Kun käytät näitä toimintoja, muiden tehtävien on vältettävä vastaavan äänenvoimakkuuden käyttämiseksi.

FunktioTapaus 1Tapaus 2Tapaus 3
disk_statusJooJooJoo(*)
disk_initializeEiJooJoo(*)
levyEiJooJoo(*)
levyEiJooJoo(*)
disk_ioctlEiJooJoo(*)
get_fattimeEiJooJoo

Tapaus 1: Sama tilavuus.
Tapaus 2: Erilainen tilavuus samassa asemassa.
Tapaus 3: Eri volyymi eri asemalla.
(*) Vain erilaisessa aseman numerossa.

Huomautuksia: Tässä osassa kuvataan itse FATFS-moduulin uudelleensuuntaus.SeFf_fs_reentrantVaihtoehto mahdollistaa vain kunkin tiedostojärjestelmäobjektin ja FATF: n yksinoikeuden käytön ei estä tallennuslaitteen ohjaustoimintojen palauttamista.Siten laitteen ohjauskerroksen on oltava aina langasturvallista, kun FATFS-sovellusliittymä on tulossa uudelleen eri tilavuuksille.Oikea taulukko näyttää, mikä ohjaustoiminto voidaan palata uudelleen, kun FATFS-sovellusliittymä tulee palauttaa joissakin olosuhteissa.

Kopioitu tiedosto auki

FATFS -moduuli ei tue tiedostolle avoimien kopioiden luku-/kirjoituskokouksen hallintaa.Kopioitu avoin on sallittua vain, kun jokainen tiedoston avoin menetelmä on lukutila.Kopioitu avoinna yhdellä tai useammalla kirjoitustilalla tiedostoon on aina kielletty, eikä myöskään avointa tiedostoa saa nimetä uudelleen tai poistaa uudelleen.Näiden sääntöjen rikkominen voi aiheuttaa tietojen romahtamisen.

Tiedoston lukitusohjaus voidaan ottaa käyttöönFf_fs_lockvaihtoehto.Option arvo määrittelee avoimien objektien määrän hallita samanaikaisesti.Tässä tapauksessa, jos edellä kuvailtua tiedoston jakamissääntöä koskevaa tiedoston jakamissääntöä koskevaa avaamista, nimeämistä tai poistamistaFr_locked.Jos avoimien objektien, tiedostojen ja alihakemistojen lukumäärä on yhtä suuri kuinFf_fs_lock, ylimääräinenf_open/f_opendirToiminto epäonnistuuFr_too_many_open_files.

Suorituskykyinen tiedostokäyttö

Sovellusohjelmoijan tulee harkita, mitä prosessi tehdään FATFS -moduulissa, jotta saadaan hyvän lukemisen/kirjoitusten läpimenon pienille sulautetuille järjestelmille.Volyymin tiedostotiedot siirretään seuraavassa järjestyksessäf_readtoiminto.

Kuva 1. Sektori ei -kohdistamaton lukeminen (lyhyt)
FATFS -moduulin sovellushuomautus (3)

Kuva 2. Sektori ei -kohdistamaton lukeminen (pitkä)
FATFS -moduulin sovellushuomautus (4)

Kuva 3. Täysin sektori kohdistettu lukema
FATFS -moduulin sovellushuomautus (5)

Tiedoston I/O -puskuri on sektoripuskuri, joka luetaan/kirjoittaa osa dataa alalla.Sektoripuskuri on joko tiedostotiedoston puskuri jokaisessa tiedostoobjektissa tai jaetussa sektoripuskissa tiedostojärjestelmäobjektissa.Puskurin kokoonpanovaihtoehtoFf_fs_tinyMääritä, mitä sektoripuskuria käytetään tiedoston tiedonsiirtoon.Kun pieni puskurin kokoonpano (1) valitaan, datamuistin kulutus väheneeFf_max_sstavua jokainen tiedostoobjekti.Tässä tapauksessa FATFS -moduuli käyttää vain sektoripuskuria tiedosto -objektissa tiedostojen tiedonsiirtoon ja rasvan/hakemiston käyttöoikeuksiin.Pienen puskurin kokoonpanon haitta on: Alakäyttöpuskurissa välimuistissa rasvatiedot menetetään tiedoston tiedonsiirrolla ja se on ladattava uudelleen jokaisessa klusterin rajassa.Se sopii kuitenkin suurimpaan osaan sovellusta kunnollisen suorituskyvyn ja matalan muistin kulutuksen näkökulmasta.

Kuvio 1 osoittaa, että osittainen sektori, sektorin yksimielinen osa tiedostoa, siirretään tiedoston I/O -puskurin kautta.Kuvassa 2 esitetyssä pitkässä tiedonsiirrossa yhden tai useamman sektorin siirtodatan keskimmäinen siirtotiedot siirretään suoraan sovelluspuskuriin.Kuvio 3 osoittaa, että Elier -siirtotietojen tapaus kohdistuu sektorin rajaan.Tässä tapauksessa tiedosto I/O -puskuria ei käytetä.Suorassa siirrossa sektoreiden enimmäismäärä luetaanlevyToiminto kerrallaan, mutta monisektorin siirto on jaettu klusterin rajaan, vaikka se olisi vierekkäinen.

Siksi pyrkimys sektoriin kohdistettuihin luku-/kirjoitusoikeuksiin eliminoi puskuroitua tiedonsiirtoa ja luku-/kirjoitussuorituskyky paranee.Vaikutuksen lisäksi välimuistissa olevia rasvatietoja ei huuhdella tiedostojen tiedonsiirtolla pienessä kokoonpanossa, jotta se voi saavuttaa saman suorituskyvyn kuin ei-pienet kokoonpanot pienellä muistijalanjälkillä.

Huomaa Flash Memory Media

Maksimoidaksesi Flash -muistivälineiden, kuten SDC: n, CFC: n ja U -levyn, kirjoitussuorituskyvyn, sitä on valvottava sen ominaispiirteiden huomioon ottamiseksi.

Monisektorin kirjoittaminen

Kuva 6. Useiden/yksisektorin kirjoittamisen vertailu
FATFS -moduulin sovellushuomautus (6)

Flash -muistivälineiden kirjoitusosasta tulee pahin yhden sektorin kirjoitustapahtumassa.Kirjoittamisen läpimenoaika kasvaa, kun sektoreiden lukumäärä kirjoitustapahtumaa kohden kuvassa 6 esitetään. Tämä vaikutus enemmän appers nopeammalla rajapinnan nopeudella ja suoritussuhteesta tulee usein raastimia kuin kymmenen.Tämä tulosselittää selvästi, kuinka nopeasti on useita lohko -kirjoituksia (W: 16K, 32 sektoria) kuin yhden lohkon kirjoitus (W: 100, 1 sektori), ja myös suurempi kortti on yleensä hidas yhden lohkon kirjoituksessa.Kirjoittamisten lukumäärä vaikuttaa myös flash -muistin median elämäaikaan.Verrattuna samaan määrään kirjoitustietoja, yllä olevassa kuvassa 6 oleva yksi sektori kirjoitus käyttää Flash -muistivälineitä 16 kertaa enemmän kuin alla olevassa kuvassa 6.Yhden sektorin kirjoitus on melko kipua flash -muistin medialle.

Siksi sovellusohjelman tulisi kirjoittaa tiedot suureen lohkoon mahdollisimman.Ihanteellinen kirjoituspala -koko ja alighment on sektorin koko, ja klusterin koko on paras.Tietysti kaikissa sovelluksen ja tallennuslaitteen välisissä kerroksissa on oltava huomio usean sektorin kirjoituksessa, mutta useimmissa avoimen lähdekoodin muistikortti-ohjaimissa puuttuu se.Älä jaa monisektorin kirjoituspyyntöä yhden sektorin kirjoituskaupoihin tai kirjoitusten läpäisy tulee huonoksi.Huomaa, että FATFS -moduuli ja sen näytelevyohjaimet Supprt Multiple Sektor -luku/kirjoitustoiminta.

Pakotusmuistin poistaminen

Kun poista tiedostof_unlinkToiminto, tiedoston miehittämät tietoklusterit on merkitty rasvalle ”ilmainen”.Tiedostotiedot sisältävät datasektorit eivät kuitenkaan ole sitä, että jäljellä olevat tiedostotiedot ottavat osan Flash -muistiryhmästä 'live -lohkoksi'.Jos tiedostotiedot voidaan poistaa tiedoston poistamisessa, nämä tietolohkot muutetaan vapaaksi lohko -allasksi.Tämä voi ohittaa sisäisen lohkon poistamisen seuraavan kirjoitustoimenpiteen datalohkoon.Seurauksena kirjoitussuorituskykyä voidaan parantaa.FATFS voi hallita tätä toimintoa asettamallaFf_use_trim1. Huomaa, että koska tämä vaikutus on tallennuslaitteen sisäisen prosessin odotuksista, se ei ole aina tehokas.Useimmat sovellukset eivät tarvitse tätä toimintoa.Myösf_unlinkToiminto voi viedä aikaa, kun poistat suuren tiedoston.

Kriittinen osa

Jos rasvan määrän kirjoitusoperaatio keskeytetään vahingossa tapahtuvan vian, kuten äkillisen sähkökatkon, väärän väliaineiden poisto- ja palauttamattoman levyvirheen takia, tilavuuden rasvarakenne voidaan rikkoa.Seuraavat kuvat näyttää FATFS -moduulin kriittisen osan.

Kuva 4. Pitkä kriittinen osa
FATFS -moduulin sovellushuomautus (7)

Kuva 5. Minimoitu kriittinen osa
FATFS -moduulin sovellushuomautus (8)


Punaisen osan keskeytys voi aiheuttaa poikkilinkin;Seurauksena on, että objekti voi kadottaa.Jos keltaisen osan keskeytyminen tapahtuu, alla on yksi tai useampi mahdollisuus.

  • Uudelleenkirjoitettavat tiedostotiedot on romahtanut.
  • Liitteenä oleva tiedosto palauttaa alkuperäisen tilan.
  • Uuteen luotu tiedosto on kadonnut.
  • Uuteen tai korvaamana luotu tiedosto on edelleen, mutta ei sisältöä.
  • Levyn käytön tehokkuus pahenee kadonneiden klusterien takia.

Jokainen tapaus ei vaikuta tiedostoon, jota ei ole avattu kirjoitustilassa.Tietojen menetyksen riskin minimoimiseksi kriittinen osa voidaan minimoida minimoimalla aika, jonka tiedosto avataan kirjoitustilassa tai käyttämälläf_syncToiminto, kuten kuvassa 5 on esitetty.

Erilaisia ​​käyttökelpoisia toimintoja FATFS -projekteille

Nämä ovat esimerkkejä FATFS -sovellusliittymien laajennetusta käytöstä.Uusi kohde lisätään, kun hyödyllinen koodiesimerkki löytyy.

  1. Avaa tai luo tiedosto liitettä varten(Korjattu FA_OPEN_APPEND -lippu lisättynä R0.12)
  2. Poista ei-tyhjä alihakemisto(R0.12: lle ja uudemmalle)
  3. Luo vierekkäinen tiedosto(Korjattu F_EXPAND -toiminnolla lisätty R0.12)
  4. Testaa onko tiedosto vierekkäinen vai ei
  5. Yhteensopivuuden tarkistaja tallennuslaitteen ohjausmoduuli
  6. Suorituskyvyn tarkistaja tallennuslaitteen ohjausmoduulissa
  7. Rasvan äänenvoimakkuuden luoja(Ennakkomaksut sisäänrakennettu rasvan tilavuus)
  8. Virtuaali -aseman ominaisuus (katso LPC176X/ INffsample.zip-A
  9. Sulautetut unicode -merkkijono -apuohjelmat(OEMXXX → Unicode, Unicode → OEMXXX, Unicode → Unicode)

Tietoja FATFS -lisenssistä

Fatfs on kehitetty kirjailijan Chanin henkilökohtaisena projektina.Se on vapaa koodista, jonka kukaan muu kirjoitti nykyisessä julkaisussa.Koodilohkona on kopio lähdetiedostoihin sisältyvästä FATFS -lisenssiasiakirjasta.

/*---------------------------------------------------------------------------- // FATFS-Yleinen rasva-tiedostojärjestelmämoduuli rx.xx // ----------------------------------------------------------------------------- /// Copyright (C) 20xx, Chan, kaikki oikein varattu.// FATFS-moduuli on avoimen lähdekoodin ohjelmisto.FATF: ien uudelleenjako ja käyttö IN/ lähde- ja binaarimuodoissa, muutoksella tai ilman muutoksia on sallittu/ että seuraava ehto täyttyy: // 1. Lähdekoodin uudelleenjakojen on säilytettävä yllä oleva tekijänoikeusilmoitus,/ tämä ehto ja seuraava vastuuvapauslauseke.// Tämän ohjelmiston tarjoavat tekijänoikeuksien haltijat ja avustajat "sellaisenaan"/ ja kaikki tähän ohjelmistoon liittyvät takuut hylätään.---------------------------------------------------------------------------*/

Siksi FATFS-lisenssi on yksi BSD-tyylisistä lisensseistä, mutta ominaisuus on merkittävä.FATFS on tarkoitettu pääasiassa sulautettuihin järjestelmiin.Kaupallisten tuotteiden käytettävyyden laajentamiseksi binaarimuodon FATF: ien uudelleenjakautumiset, kuten sulautettu koodi, binaarikirjasto ja minkä tahansa lomakkeen ilman lähdekoodia, ei tarvitse sisällyttää asiakirjoihin FATF: ää.Tämä vastaa 1-lausekkeen BSD-lisenssiä.Tietenkin FATFS on yhteensopiva suurimman osan avoimen lähdekoodin ohjelmistolisensseistä sisältää GNU GPL: n.Kun jaat FATFS-lähdekoodin uudelleen mahdollisilla muutoksilla tai luot haarukkaa, lisenssi voidaan myös muuttaa GNU GPL: ksi, BSD-tyyliseen lisenssiin tai mihin tahansa FATFS-lisenssin kanssa yhteensopivaan avoimen lähdekoodin ohjelmistolisenssiin.

FATFS -moduulin sovellushuomautus (2024)
Top Articles
Latest Posts
Article information

Author: Stevie Stamm

Last Updated:

Views: 5410

Rating: 5 / 5 (60 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Stevie Stamm

Birthday: 1996-06-22

Address: Apt. 419 4200 Sipes Estate, East Delmerview, WY 05617

Phone: +342332224300

Job: Future Advertising Analyst

Hobby: Leather crafting, Puzzles, Leather crafting, scrapbook, Urban exploration, Cabaret, Skateboarding

Introduction: My name is Stevie Stamm, I am a colorful, sparkling, splendid, vast, open, hilarious, tender person who loves writing and wants to share my knowledge and understanding with you.