Fórum témák
» Több friss téma |
Flash filesystemből egy mókás dolog jutott eszembe. Ahányszor módosul egy file - még ha a hossza nem is változott - van egy utolsó hozzáférési idő a főkönyvtári bejegyzésben. Flash filesystem esetén elvileg törölni csak nagyon nagy blokkot lehet. Mondjuk, hogy elindul egy linux, és írja a log file-ok némelyikét. Minden alkalommal egyész mamut blokk töröl / újra ír, hogy fel lehessen jegyezni az utolsó file hozzáférési időt abban az egy szektorban? Vagy valamit nagyon benéztem volna?
Vannak olyan fájlrendszerek, amik nem így működnek, pont flashre vannak kitalálva.
Ezeket nézd végig: Bővebben: Link Bővebben: Link Bővebben: Link Bővebben: Link Az Openwrt pl. JFFS2-t használt, amikor legutoljára néztem. Unixokon vigyázni kell, mert alapból az olvasást is jegyzi a rendszer, azaz nem csak last modified időpontja van a fájloknak, hanem last accessed időpontja is. Ezt azért józan életű emberek ki szokták kapcsolni, mert csak fölöslegesen tekeri a diszkeket.
Sziasztok!
AVR-el tervezek SD kártyás cuccokat építeni, de pár ELMÉLETI dolog még nem tiszta számomra. A fájlrendszerekkel már általános iskolás koromban kezdtem foglalkozni(unatkoztam), hamar megismertem a FAT12 és FAT16 alapjait, kezelését, programozását. Később a FAT32 és a partíciós tábla értelmezése sem okozott nagyobb fejtörést, max. a hosszú fájlnevek kezelése ami még nem százas de már tanulgatom. Szóval: van egy 1GB-os SD kártyám, amin a 0. szektor a boot szektor. Egy másik, 2GB fajtán meg a 0. szektor egy MBR (lenne), de csak a kártyán lévő egyetlen kötet leíróját tartalmazza(16 bájtban a 446. bájttól), a többi rész mind nulla. Illetve még a signature is megvan a szektor végén(55h, AAh). Mind a két SD kártya formázás után ilyen. A kérdésem hogy ez most hogy is van? Mi dönti el hogy MBR (partíciós tábla egyetlen bejegyzéssel) kerül a kártya 0. szektorába, vagy a "rendes" boot szektor? Van egy 1GB-os pendrive, azon sincs MBR, de egy 8 gigás, WIN7 telepítősön meg van. Utóbbin rendes rendszertöltő kóddal ellátott MBR, a partíció meg NTFS. A hozzászólás módosítva: Nov 10, 2013
Üdv!
Én úgy tudom, hogy normális esetben a MBR kerül a 0. szektorra, és ugye ez mutat a boot szektorra (szektorokra). Azokon a kártyákon (sd, cf), amiket eddig próbáltam, mindegyiken így volt. Próbáld meg SDFormatter-el formázni a kártyát, ha nincs rajta MBR.
Üdv!
Amikor én kezdtem foglalkozni az sd kártyákkal én is találkoztam ezzel a jelenséggel. A hiba kiküszöbölése érdekében azt csináltam, hogy amikor a program megkeresi a mbr-ot akkor megvizsgálja először a 0. szektort, ha ott megtalálja a fáljrendszer típusát, nálam "FAT32" akkor ebből a szektorból olvassa ki a szükséges információt, ha ne találta meg, akkor az általad említett helyről keresi ki a mbr helyét. Ha érdekelnek részletek akkor írj, csak most nincs túl sok időm, kezdődik az előadás.
Hello!
Köszönöm, így már tudom hogy a jelenség nem egyedi. Sokáig úgy hittem hogy semelyik pendrive/sd kártya nem tartalmaz MBR-t, mert az csak a partíciókra osztáshoz lenne szükséges. Nem akarom hogy a készülő cuccosaim speckó formázást igényeljenek a kártyákra, az MBR meglétét/hiányát detektáló néhány plusz sorba nem fogok belehalni. Csak azért kérdeztem hogy mennyire általános, mennyire szórnak a cuccok, így érdemes felkészíteni a programot a többféle lehetőségre. A "FAT32" vagy a "FAT16" szöveg kiolvasása a megfelelő helyről valóban megadja hogy éppen MBR vagy DBR(DOS Boot Record) szektorról van szó. Gondolom (MBR híján) a két fájlrendszer megkülönböztetése is csak így lehetséges, azaz a DBR-ben a megfelelő pozíciókban keresni kell a "FAT16" és "FAT32" szövegeket. Elfogadok és megköszönök mindenfajta segítséget(az SD kártya I/O műveleteknél még elakadhatok), de a cuccot a nulláról szeretném felépíteni. Márcsak azért is, mert kombinált FAT16/FAT32 kezelő programot akarok létrehozni(a netes példák általában csak az egyikre jók), esetleg FAT12 és exFAT is szóbajöhet. A saját cucc azért is jó, mert ha hiba van akkor egyszerűbben tudok keresni.
Sziasztok!
Tervbe van véve SD kártya kezelése PIC-el. Keresgettem a FAT32-ről leírásokat, elsősorban magyarul. Találtam egy jó anyagot, ami inkább az SD kezeléséről szól, de kitér a FAT32-re is. Ha valakinek van ehez hasonló anyaga, szívesen fogadom! Bővebben: Link
Üdv!
Fat32 fájlrendszerről nagyon kicsi az esélye, hogy magyarul találsz valamilyen leírást, még angolul is elég szerény a kínálat, ami mélyebben tárgyalná a fájlrendszer felépítését. Az előző oldalon belinkeltem néhány oldalt, amiből el lehet indulni. Milyen mértékben szeretnéd kezelni a fájlrendszert? Arra gondolok, hogy csak olvasni szeretnéd, vagy írni is? Üdv Máté
Szia!
Azokat az oldalakat nézegetem most is, köszi! Elsősorban olvasni, de írni is jó volna! Az írás sokkal nehezebb?
Üdv!
Írni nehezebb, mint már meglévő adatot kiolvasni, de nem lehetetlen, szerintem először mindenképpen már meglévő adat kiolvasásával kezd és csak utána hozz létre új fájlt. Ajánlom neked a hexeditor használatát, mivel így te magad is láthatod, hogy mi rejtőzik az adott SD kártyán, és így könnyebb lesz a dolgod a program megírásánál. Régen úgy kezdtem, hogy leformáztam az SD kártyát FAT-ra, majd rátettem egy szöveges dokumentumot, fontos, hogy TXT legyen a kiterjesztése, majd hexeditorral elkezdtem keresgélni a leírások alapján, hogy hol található maga a fájl. Azért jó a TXT fájl, mert a hexeditor kiírja annak a tartalmát és nem tudod összetéveszteni mással. Javaslom, hogy kezdj először csak FAT-al, a felépítése nagyban hasonlít a 32-es verzióhoz, viszont kisebb számokkal kell dolgoznod.
A hexeditort már leszedtem, ezt a TXT-s dolgot meg kipróbálom, köszi az ötletet!
Már a root könyvtárt megtalálom, ott vannak a file nevek is, de nem tudom kiszámolni sehogy sem, hogy hol kezdődik a file. Start cluster is megvan. Két különböző számítást is találtam, de nem sikerül rájönnöm, hogy hogyan számolják ki. Sajnos angolom nem túl erős. Tudnátok adni valami instrukciót? Ezt az oldalt nézegettem elsősorban
Szia,
Ha már megvan a ROOT könyvtár, akkor onnan kezdve már nem nehéz megtalálni a fájlodat. A ROOT könyvtárban többnyire 32 bájt hosszú egy bekezdés, most nem szeretnék belemenni a hosszú fájlnevek kezelésébe, a lényeg, hogy ha megvan a kívánt fájlod, akkor megnézed annak a bejegyzésnek a 21. 20. 27. 26. bájtjait, ezekből készítsz egy szép 32 bites számot (szándékosan írtam ilyen sorrendben, az első bájt a legjelentősebb), majd ez a szám megadja, hogy mennyivel van eltolva a root könyvtárhoz képest a fájl kezdete szektorokban.
Szia !
Nem tudom, hogy feltétlenül te akarod-e megírni az elejétől, vagy elegendő lenne egy "kész" fájlrendszer kezelő is, amit azután könnyű használni. Amit először belinkeltél anyagot, az hivatkozik a Chan Fatfs-re. Ezt itt elérheted komplett forrással, magyarázattal, példákkal.
Lehet, hogy tényleg nem nekem kellene megírni, mert már megírták, és én is mindíg abba a hibába esek, hogy újra fel akarom találni a spanyolviaszt De szeretem a kihívásokat, meg sokat lehet vele szerintem tanulni. Köszi a linket, megnézem!
Szia!
Ha mégis magad próbálnád megírni, akkor ajánlom EZT az oldalt. Igaz angolul, de elég jól leírja a FAT16 fájlrendszer működését. Én ez alapján indultam el, és (ahogy Gyimate is tanácsolta neked) a Hexeditor-al kísérletezgettem egy SD kártyán. Ha megérted a működését, akkor már a FAT32 sem fog gondot okozni.
Köszi, jó az oldal, ezen nézegettem én is!
(Bocs, valahogy elkerülte a figyelmemet, hogy pont ezt az oldalt linkelted be Te is.)
Sikerült közben rájönnöd, hogy hogyan számold ki a fájl helyét?
Majdnem Valamiért 32 szektorral arréb van, mint ahogy számolom. Nem jöttem rá, hogy miért. Így számolom, nemtudom jól-e:
Először a rootdir kezdetét = FAT táblák száma * FAT tábla méretével + Foglalt szektorok. File kezdete = rootdir kezdete + (File start cluster - 2) * Cluster/Szektor + 32 Valamit tuti nem jól csinálok, de így megvan a file kezdete. Az a 32 elvileg a directory tábla mérete? De az honnan jön ki? A hozzászólás módosítva: Jan 3, 2014
Ismerned kell az első cluster címét, ami rögtön a root mappa után kezdődik.
Fat16 esetén a boot blokk-ban megtalálod, hogy hány fájl/mappa/fln entry (bejegyzés) lehet maximum a root mappában. Ez általában 512, ezt kell megszorozni 32-vel (egy entry mérete bájtban), így kapod meg a root mappa méretét bájtban. Ezt osztod 512-vel (sd blokk méret), és hozzáadod a root mappa kezdőcímét. Így kapod meg az első cluster címét. Ha FAT32-t használsz, akkor a root mappa mérete egy cluster. A fájl kezdete: A fájl kezdő clusterének számából kivonsz 2-t, így megkapod, hogy hanyadik clusterben kezdődik a fájlod.
Ez zavart össze:
Idézet: „Így kapod meg az első cluster címét.” Itt szektorban értendő a kezdő cím Idézet: „A fájl kezdete: A fájl kezdő clusterének számából kivonsz 2-t, így megkapod, hogy hanyadik clusterben kezdődik a fájlod.” Itt pedig clusterben, amit meg kell szoroznom a szektor/clusterrel ahoz hogy szektorban kapjam a címet. Jól mondom?
Csak szólok hogy az "első cluster" ami adatot tárol az mindig a MÁSODIK, azaz a "2"-es számú.
FAT32 esetén a root könyvtár pedig nem egy cluster méretű, hanem KORLÁTLAN! A boot szektorból olvasható a kezdő clustere(általában a 2-es), majd a FAT táblák mutatják a többit. Ha EOF-hoz érsz a FAT táblában, ott ér véget a root könyvtár... Ha van kártyaolvasód, használd a sectedit programot (csatolom) még mielőtt AVR-re kötöd! R*hadt egyszerű, és a vinyókat, floppyt is meg tudod nézni vele. De vigyázz, ne írj át semmit! A hozzászólás módosítva: Jan 5, 2014
Sziasztok egy SD - kártyás zenelejátszót szeretnék építeni AVR - el. MicroSD kártyát akarok használni és hozzá adaptert. Namost ezen az adapteren van egy LOCK kapcsoló. Ez pontosan hogyan működik? Mondjuk valamelyik adatvezetéket megszakítja? És mégegy kérdésem van, a microSD és az SD kártya ugyanaz, csak más a tokozása?
A hozzászólás módosítva: Jan 6, 2014
A LOCK valójában nem egy kapcsoló, hanem csak egy műanyag pöcök, ami benyom egy nyelvet a foglalatban és a mikrokontrollernek kell a megfelelő lépéseket meglépnie. A másik kérdésedre: Nagyjából igen, a két kártya majdnem ugyan az.
Szia köszönöm a választ végülis aztán szétszedtem egy ilyen adaptert, de semmivel nem volt összekötve ez a pöcök csak szabadon mozgott...érdekes.
Sziasztok eljutottam odáig hogy tudom inicializálni a microSD kártyát, és a regisztereket tudom benne olvasni (OCR,CID...). Egyszerű zenelejátszót akarok építeni, egyelőre fájlkezelés nélkül. Ha mondjuk PC - ről feltölteném a zenéket *.wav formátumban a kártyára, akkor ezt ki lehet olvasni csak simán mindenféle fájlkezelés nélkül? Illetve honnan lehetne megtudni a 32 bites címeket amit ugye ki kell küldeni az SD kártyának.
|
Bejelentkezés
Hirdetés |