A privát üzenet rendszerben karbantartásokat végzünk. Lassulások előfordulhatnak!
Fórum témák
» Több friss téma |
Sziasztok!
Lenne néhány nem túl vad kérdésem SD kezeléssel kapcsolatban. Valószínűleg én is meg tudnám válaszolni őket némi utánajárás után, de jó lenne pár gyors egyszerű válasz, hogy tudjam, merre induljak arccal. 1.: Anélkül, hogy komolyabb fájlkezelésbe belemennék (azt írtátok többen is, hogy nem egyszerű), tudok-e SD kártyára valamilyen struktúra szerint tárolni? Tehát meg tudom-e mondani íráskor, hogy milyen címnél kezdjen el írni, mint egy RAM esetében? 2.: Ha jól láttam/értettem, vannak különböző parancsok, amiket ki lehet neki adni.. Ez SPI-n keresztül is megoldható? Azért kérdezem, mert többen írtátok, hogy "SPI-n összekötöd a PIC-el, azt' hányod rá az adatokat"... tehát honnan tudja például hogy ami küldök az most adat lesz vagy parancs? Egyáltalán, van neki valami vezérlési protokollja, amin meg kell mondani először, hogy "most adat jön" és utána mehet a cucc? Főként a dolgok hardveres részével szoktam foglalkozni, tehát a fenti kérdések kicsit lámák, de muszáj tudnom, mielőtt nekifogok komolyabban és eltöltök vele x időt. Bármilyen infó jöhet, akinek van tapasztalata. Köszönöm! ádám
A 3.6 fejezettől tárgyalják a kommunikációt, a 7.-től az SPI módot. Bővebben: Link
A memória blokkokra van osztva, mérete függ az SD méretétől(512KB, 1MB, 2MB). Törölni csak blokkonként lehet, írni bármilyen címtől egy blokkon belül.
Aha, aha.
Beleolvastam, és a szövegből az egyértelműen látszik (az SPI-s fejezet bevezetőjéből), hogy SPI-n keresztül is teljes értékűen lehet használni az eszközt. Te pedig megnyugtattál azzal kapcsolatban, hogy az írás bárhonnan kezdődhet és ezt én tudom meghatározni. Nem sokára majd el kezdek foglalkozni a dologgal komolyabban, és biztos, hogy lesznek kérdéseim. Köszönöm!
Sziasztok!
Pic-el szeretnék kezelni valami jelenkori sd / micro sd -t (8/16 giga valahol abban a méreti kategóriában), és kissé ellentmondó információkat találtam az automatikus hibajavító mechanizmusokról. Némelyik doksi azt írja, hogy fat módban automatikusak a javítások, de nyers blokkok esetén nem. Némelyik azt írja, hogy ha SPI felületen keresztül kezelem a kártyát, akkor az automata hibajavítás egyáltalán nem működik. Kissé a bőség zavarában vagyok a halom sok ellentmondó doksinak, ezért inkább megkérdezem itt. SPI felületen keresztül nyers 1K adatblokkok kellenek nekem írni (magnószalag módjára csak végigírnám az egészet) / visszaolvasni. Ha néhol buggol egyet az sd kártya, tapasztalatok szerint meg fog történni az automatikus javítás (írás után visszaolvasás, hiba esetén automata újraírás, olvasás esetén automata hibajavítás), vagy nekem kell külön gondoskodnom a visszaolvasásról / újraírásról / olvasás után ellenőrzésről és hibajavításról is? Meg úgy egészében, ha nem hajtottam halálra azt a szerencsétlen sd-t (csak egyszeri végigírás lesz), tétel még foglalkozni a mai sd-k adathibáival, vagy már teljesen transzparens minden, és levan róla a gond? Köszönöm.
Szia, mostanság elég sokat foglalkoztam a szimpla kis kapacitású SD kártyák kezelésével, a helyzet az, hogy az SD kártyákkal kétféleképpen lehet beszélgetni, az 1. módszer ami az alapértelmezett az SD kártyáknál az SD mód, azaz 4 adatvonalon történő komunikáció, ebben az esetben a CRC be van kapcsolva, a másik az SPI, ahol az inicializálást követően kikapcsol a CRC védelem. azért mondom, hogy utána, mert az első parancsot helyes CRC-vel kell elküldeni az SD kártyának, azaz a "GO IDLE STATE(0)" és a "SEND OP COND (1)" parancsokat. Az, hogy te használsz-e CRC-t rajtad függ, tapasztalatom szerint a mai SD kártyák nem hajlamosak az adattévesztésre, viszont ha fontos, hogy véletlenül se fordulhasson elő a hiba használd a CRC-t, ezt a "CRC ON OFF (59)" paranccsal teheted meg. Még annyit, hogy a FAT fájlrendszer használata nem hordozza magában a CRC használatát, az többek között azt árulja el, hogy az adott adat kezdete hol található meg a kártyán, illetve ha több szektort foglal el az adat, akkor a következő szektorok helyét is tartalmazza, meg persze a fájlok nevét, kiterjesztését stb...
Remélem érthető voltam
Annyit még, hogy a CRC sem automata hibajavítást jelent, csak jelzi, hogy ha nem egyezik meg az általa kiszámolt CRC azzal, amit te az adataid végére tettél. Ezt a jelzést neked kell lekezelni minden esetben(újraküldöd, ha végképp nem megy, másik címtartományt választasz és megjegyzed, hol halt el az SD stb.), és nincs ez másképpen sehol, mindig külön protokoll gondoskodik az adatok helyes átviteléről, elosztásáról, kondícionálásról. Van kivétel(CAN), de az SPI és a SD vonalak nem ilyenek.
Én nem vagyok meggyőződve arról, hogy az a CRC, amiről beszéltek, az a kártyára kerülő adatot védi, azaz a beküldött CRC-vel rögzíti a kártya vezérlője az adatot, és azt adja vissza, amit oda beküldtél.
Szerintem ez a CRC csak a mikrokontroller/számítógép és a kártyán levő vezérlő közötti kommunikációt védi. Az már a kártyán levő vezérlő problémája, hogy a tárolt adat integritását biztosítsa, de erre szerintem nem ezt a CRC-t használja, és nem is lehet azt kikapcsolni.
Köszönöm a tippeket, akkor hát foglalkoznom kell a CRC-vel is.
Egyébként sajnos fontos lenne a zéró adathiba. Ha mást nem, feláldozom a kártya kapacitás és i/o sebesség 2/3-ad részét, és játszom azt a hibatűrést, hogy 3x írok ki mindent, és visszaolvasásnál egybemosom őket 3 adatból legalább 2 egyezik kódolással.
A microSD kártyák kommunikációs parancsai azonosak low-end és hig-end kapacitású kártyák között (128M-től 32G-ig), vagy akad valahol a kapacitás függvényében vízválasztó? Gondolok itt olyan problémákra, ami miatt eltérő parancs settel kellene kezelni kártyákat a maximális kapacitásuk függvényében.
Igen, vannak különbségek a kártyáktól függően, ugyanis megkülönböztetünk több típust is, ami téged érint az a microSD és a microSDHC kártya. Igazából csak annyiban tér el a kettő, hogy máshogy kell őket inicializálni és más a blokkméret. 4GB-ig SD-ről beszélünk, afölött általában SDHC-t kapunk.
Az MC libek lekezelik automatikusan a különbséget? Vagy jobb ötlet megmaradni csak a korlát egyik oldalán?
Szia!
Milyen nyelven/kontrollerrel kezeled az SD kártyát?
Szia,
Berendeltem egy ilyet, és kicsit eljátszadozom vele. FreeRTOS alatt MC libek vannak egybedolgozva, és C-ben van minden. Elvileg illik normálisnak lennie.
Köszi a választ!
Akkor ez már nem a kezdő C18 kategória..
Sajnos nem ismerem ezeket a függvényeket, ezért nem tudok neked mit mondani róluk, én saját függvényeket írtam az SD kártya kezelésére és a FAT32 fájlrendszerre is, az enyém nem kezeli az SDHC-kat. Mit szeretnél rajtuk tárolni, mondjuk a 4GB is elég nagy tárhely egy PIC-nek. Ha a szimpla SD-kről van valami kérdésed abban tudok segíteni, de ha érdekel utánanézek az SDHC-nak is.
Szerintem ne töltsd vele feleslegesen az időt. Bele tudok férni akár 2gb-be is, és nincs gond. Mindössze azt néztem, hogy 2gb-től 8gb-ig alig van árkülönbség a microsd-ken. Miért is ne vegyek nagyobbat, ha majdnem ingyen van? De annyira azért nem fontos, hogy problémát is megérjen. Egy logikai analizátor lenne a hobby project célja, "magnószalag" gyanánt kell az egész flash. Majd sűrűbben mentegetem le.
Ha csak írni/olvasni szeretnéd akkor elég átírni az inicializálási folyamatot, hogy támogassa az SDHC-ket, meg még a maximális blokkméretet, viszont ezáltal több ramot is fogyasztana a program, bár ez egy PIC32-esnek meg sem kottyan, holnap utánanézek az SDHC-k inicializálásának, még nekem is jól jöhet a későbbiekben.
Ha amúgy is kíváncsi vagy rá, ám nézz utána. Ehhez a freertos-hoz több különféle lib van, és doksikból egyszerűen csak nem könnyű az igazságot kihámozni. Ha majd kezemben lesz az a cucc, tutira meg fogom vizsgálni, tudja-e. Megkockáztatok egy sdhc-t. Ha berakom, és megy vele a fatfs demó tesz, akkor kezeli. Ha nem, akkor majd turkálok egyet a mélyben, bár nem két perc lesz, mire előásom a megfelelő részeket, amiket módosítani kell.
A fentebb linkelt eszköznek úgy tűnik nincs rendben a micro sdhc supportja - "error initializing".
Nem mindegyik SDHC támogatja az SPI-t, van amelyik csak SD-vel megy(4vezetékes).
Hmm, na erről pld nem találtam semmit a doksikban. Mindenütt ott volt az spi is megemlítve. Ilyen gyengeség előfordul a sima SD-k esetében is?
Sima SD-k esetében mindig van SPI-re lehetőség, bár ahogy keresgéltem a google-el én sem találtam ilyen gyengeséget, viszont megtaláltam a megfelelő inicializálást az SDHC kártyákhoz, nem nehéz átírni a már meglévőt, belinkelek egy oldalt ahol részletesen leírja, hogy hajtja vévgre az inicializációt: Bővebben: Link
Remélem ez segít.
Linket köszönöm. Viszont lévén felvetődött annak lehetősége is, hogy mégis magával az spi-vel lesz gond, egyenlőre megnézem normál microsd-vel is.
Különben az is lehet, valami alapvető hiba lesz az elektronikával - forrasztási hiba, bármi - és azokat most le kell csekkolnom. Jelenleg éppen budapest boltjait kotrom, és különben az a vicc, hogy mindenütt csak micro sdhc-k vannak készleten. Egyik boltos azt mondta, sima micro sd-t ő már 3 éve nem is látott egyetlen darabot sem Aki esetleg tud olyat budapesten, ne tartsa magában. A hozzászólás módosítva: Máj 24, 2013
Én az eboltban vettem tavaly egy 2gb-os Kingstont, nem is volt drága.
Most néztem stét a v@t3rán (nem akarok reklámozni...) és van 790-ért 2GB-s SIMA micro sd.
Érdemes lenne felvenni az illetővel a kapcsolatot.
Nos, a mai napra sem maradt kilométer hiányom így késő délutánra. 2gb normál micro sd-t magamnak is sikerült végül beszereznem. Ami végül kiderült a fentebb linkelt eszközről - és a freeRtos libekről:
-nem szereti a fat32-t -fat16-al nincs gondja (2gb-ig van support) -csak 1 partíciót szeret a memóriakártyán -nincs init gondja micro sdhc-val sem 8gb micro sd-re rávarázsoltam partíció managerrel egy 2gb-s fat16-ot, meg kezeletlennek meghagytam 6gb-t. Így elfogadta. Persze így 6gb kuka, de legalább nem lesz para, hogy csak micro sdhc kapható mindenütt, micro sd meg problémás. Uccsó 6gb-t úgyis magam akartam kezelni. Köszönöm a segítséget mindenkinek.
Vagy megírod a FAT32 supportot, és akkor tudod használni a többit is.
Egyébként a "csak 1 partíciót szeret", az szerintem nem véletlen, én úgy emlékszem, mintha az SD kártya speckóban benne is lenne, hogy nem köteles a host kezelni tudni, ha valami bonyolultabb (amúgy PC-n tök elfogadottnak nevezhető) partícióstruktúra van a kártyán.
Éppenséggel a FAT16-ot 32-re átírni elég problémás tud lenni, mint a nevéből is kiderül a FAT16 csak 2 bájton tárolja a fájl kezdőpozícióját, persze a szektor számát, míg a fat32 ha jól emlékszem talán 28 biten, persze nem ez az egyetlen különbség a kettő között. Az a driver amit én írtam PIC-re az FAT32-őt kezel, és felkészítettem már több partíció kezelésére is, erre azért is volt szükség mert az egyik kártyámat a windows eleve úgy formázta le, hogy létrehozott egy partíciót, ilyenkor mindössze annyi a teendő, hogy megkeressük az összes partíció kezdőpontját, ami az első szektoron van eltárolva, majd ezt kezdjük kiolvasni. Arra is oda kell ebben az esetben figyelni, hogy megfelelően határozzuk meg a root könyvtár kezdőpontját... Erről szinte ódákat lehetne zengeni, én is még a mai napig tanulmányozom a fájlrendszer összes funkcióját, most a hosszú fájlneveket akarom hozzáadni a könyvtáramhoz.
Akad valahol egy normálisabb leírás a fat32-ről, amiből kiindultál? Sajnos vannak ott mindenféle fenttartott területek és egyebek is. Egyszer már megpróbálkoztam vele, de lepattantam a témáról.
Sajnos normális leírást én sem találtam, 4-5 darabból óllóztam össze amit tudok a FAT32-ről, bár volt olyan információ is ami nem derült ki a leírásból hanem nekem kellett rájönnöm. Nagy segítség tud lenni egy hexeditor, amivel meglehet nyitni a teljes meghajtót, ott pontosan látod, hogy mi merre van, és a számításokat is gyakorolhatod. Ha érdekel belinkelem neked a leírásokat amikből tanultam: Első Második Harmadik Negyedik Ötödik. Ezek között vannak amik a FAT16-al foglalkoznak, viszont ezek is rengeteg hasznos információt adhatnak. Még belinkelek egy ingyenes hexeditort, amivel megnézheted, hogy mi is rejtőzik az SD kártyádon: HEX-editor
Az igazság az, hogy én is kezdetben csak magnószalag módjára járkáltam a kártyán, majd egy hét után, amikor már kitapasztaltam a kártya kezelését belevágtam a FAT-ba, elsőre elég ijesztő tud lenni, de ha meglátod benne a logikát akkor hamar belejön az ember. Én egy PIC18F4550-el kezdtem el foglalkozni vele, készítettem is egy zenelejátszót, igaz, hogy csak *.WAV-ot tudott lejátszani, mert nem volt dekóder IC-m MP3-ra, viszont azt elég szépen. Ha segítség kell valamiben csak szólj, és segítek... A hozzászólás módosítva: Máj 25, 2013
|
Bejelentkezés
Hirdetés |