Fórum témák

» Több friss téma
Fórum » SD kártya kezelése PIC-kel
 
Témaindító: brejti, idő: Szept 18, 2006
Témakörök:
Lapozás: OK   10 / 14
(#) gabi20 válasza kissi hozzászólására (») Jún 28, 2015 /
 
Az első 8000 sectort én sem tudom olvasni, máig nem tudom hogy miért. Nagyobb címet kell megadni. Tölts rá az SD kártyára mondjuk egy TXT fájlat, keresd meg hogy az a fájl milyen címen található (pl. Disk Editor) és azt a címet add meg. Előtte nem árt ha megformátozod a kártyát.
A hozzászólás módosítva: Jún 28, 2015
(#) kissi válasza gabi20 hozzászólására (») Jún 28, 2015 /
 
Köszönöm, majd megpróbálom akkor egy nagyobb szektorcímmel is, de használnom kellene a file keresést is, ezt meg ott elöl kellene kezdeni !?
(#) Beles válasza kissi hozzászólására (») Jún 28, 2015 /
 
Nekem megy a 0. sector is. Igaz én CMD17-el olvasom ki. A Master boot record van ott nekem.
(#) kissi válasza Beles hozzászólására (») Jún 28, 2015 /
 
Azért nézném én is, de a CMD17 se volt sikeres ...!
(#) Beles válasza kissi hozzászólására (») Jún 28, 2015 /
 
Én jelenleg ott tartok, hogy a root és sub folder listázása kész. De még ösze kellene hozni a kettőt egy fügvénnyé. Valamint a file olvasás is kész, akár byte-onként is lehet olvasni. Viszont a fileon belüli pozícionálás még nincs kész. A byte-onkénti olvasással is rengeteget szívtam, egy hétvégém rá ment És akkor még a file írásról még szó se volt. Nagyon nem egyszerű megírni egy teljes fat kezelést, vagy lehet csak nekem kevés hozzá a logikám. Már lassan ott tartok, hogy inkább egy kész library-t fogok használni. De legalább azt elértem, hogy értem miként működik az egész.
(#) kissi válasza Beles hozzászólására (») Jún 28, 2015 /
 
Én is most a gyárit nézegetem, mert nem tudom, hogy miért nem olvas a 0. szektortól...
Debuggolok 1000-el !
(#) Zsora válasza kissi hozzászólására (») Jún 28, 2015 /
 
A kiadott parancsok után mindaddig 0xFF adat jön, amíg a kártya nem tud válaszolni.
A CMD18 parancs után először az R1 válasz (itt: 0x00) jön meg, ezután a kártya egy ideig megint elfoglalt, így nem válaszol (0xFF). Majd elküldi a Start Block tokent (0xFE) és folyamatosan az adatokat, amik a 0. blokkban 0x00-val kezdődnek.
Tehát az általad olvasott adatok teljesen jók.
Az én kártyámon a 0. blokk így néz ki:
A hozzászólás módosítva: Jún 28, 2015
(#) Beles válasza Zsora hozzászólására (») Jún 28, 2015 /
 
Így van. Az én kódom egy block olvasására:
  1. char SD_ReadSector(char* Buffer, unsigned long Position, char PositionMode)
  2. {
  3.         char Received = 0;
  4.         char TimeOut = 50;
  5.         SD_SeekPosition(Position, PositionMode);
  6.         unsigned long Address = iCurrentPosition;
  7.         iCurrentPosition+= 512;
  8.         char Address1 = Address & 0b11111111;
  9.         char Address2 = (Address >> 8) & 0b11111111;
  10.         char Address3 = (Address >> 16) & 0b11111111;
  11.         char Address4 = (Address >> 24) & 0b11111111;
  12.         SPI_SendByte(0xFF);
  13.         SD_SendCommand(CMD17, Address4,Address3,Address2,Address1,0xFF);
  14.         while(Received != -2)
  15.         {
  16.                 Received = SPI_SendByte(0xFF);
  17.                 TimeOut--;
  18.                 if(TimeOut ==0)
  19.                 {
  20.                         return SD_READ_SECTOR_ERROR;
  21.                 }
  22.         }
  23.         int i;
  24.         for(i = 0; i < 512; i++)
  25.         {
  26.                 *Buffer = SPI_SendByte(0xFF);
  27.                 Buffer++;
  28.         }
  29.         SPI_SendByte(0xFF);             //Read CRC
  30.         return SD_OK;
  31. }
(#) kissi válasza Zsora hozzászólására (») Jún 28, 2015 /
 
Köszi, de én a csatolt képet láttam a kártyán a 0.szektornál, mit nézek el ?!

szerk. : bocs a rossz minőségért, látszik, hogy 0. szektor, de most futnom kell ( az asszony hív, este leszek ! ) !

Köszi a segítséget!
A hozzászólás módosítva: Jún 28, 2015

Blokk_0.jpg
    
(#) Beles válasza kissi hozzászólására (») Jún 28, 2015 /
 
HxD-ben fizikai vagy logikai meghajtóként nyitod meg? Mert ha logikai, akkor a boot sectort látod, ha fizikai, akkor meg a master boot recordot.
A hozzászólás módosítva: Jún 28, 2015
(#) Zsora válasza kissi hozzászólására (») Jún 28, 2015 /
 
A csatolt képből én nem tudok kivenni semmi érdemlegeset.
Az analizátor viszont helyes választ mutat.
A hozzászólás módosítva: Jún 28, 2015
(#) kissi válasza Beles hozzászólására (») Jún 28, 2015 /
 
Logikaként volt , a fizikainál valóban 0x00-k vannak !

Most akkor nyomozhatok, hogy hol vannak az infók letárolva !?
Meg kell alaposabban ismernem a FAT32 és a MasterMoot szerkezetét!
A hozzászólás módosítva: Jún 28, 2015
(#) kissi válasza Zsora hozzászólására (») Jún 28, 2015 /
 
Nem csodálom, csak nem volt időm korrigálni ( mennem kellett a lányomért az állomásra ! ), viszont az volt a gond, hogy logikai meghajtóként nézegettem, mint Beles kolléga utalása alapján rájöttem...!
(#) Beles válasza kissi hozzászólására (») Jún 28, 2015 /
 
Én egyelőre csak FAT16-al foglalkoztam, abban tudok segíteni
(#) kissi válasza Beles hozzászólására (») Jún 28, 2015 /
 
Köszi, most ezt kellene megfejtenem... !
(#) Zsora válasza kissi hozzászólására (») Jún 28, 2015 /
 
Nem sok különbség van a FAT16 és FAT32 között. Ha az egyiket tudod használni, akkor a másikat is.
(#) bbalazs_ válasza Beles hozzászólására (») Jún 28, 2015 /
 
En is kuzdok egy SHDC-vel FAT32-ben. A mai napom rament az inicializalasra, holnap jonne a FAT32. Neheziti a helyzetet, hogy en assemblyben tolom 18F4553-on.
Eredetileg a boot sector fent volt valahol az istennyilaban, egy ihletett blokkfeltoltes utan eltunt minden, nem latta a Win7 sem, utana formazva az MBR eltunt teljesen es a 0.fizikai cimre kerult a boot sectort. Most nincs MBR egyaltalan. De elotte es most is KETTO Boot sector van a kartyan, nemigen ertem meg a dolgot...WinHexet hasznalok es termeszetesen disk modban, Phisical media alatt.

Talaltam par jo weblapot FAT32-rol, idemasolom.
elso
masodik
vegul a harmadik
A hozzászólás módosítva: Jún 28, 2015
(#) kissi válasza bbalazs_ hozzászólására (») Jún 28, 2015 /
 
A másodikat és a harmadikat nem ismertem, nagyon jónak tűnnek, köszi !
(#) pajti2 hozzászólása Szept 27, 2015 /
 
Sziasztok!

Kicsit szeretnék belemélyedni az sd kártyák fizikai felépítésébe, de ami doksikat találtam, mind tele vannak azzal, hogy This part was removed from the simplified specification és így nem könnyű tanulni belőle.

Ami konkrétan érdekelne, az a flash memória blokk szerveződése. Az egyszerűsített leírásban is találtam olyan jelzést megemlítés szintjén, hogy "Sru", de nem tudom, hogy azt találtam-e meg, amit kerestem, mert túl rövid volt a hozzá fűzött magyarázat. Akárhogyan is jelölik az elektronikailag legkisebb belső blokk méretet, azt az értéket lenne jó tudni 8 giga és nagyobb méretű kártyák esetében.

Ha véletlenül valaki képben van róla, vagy akár csak tud egy nagyon részletes leírást a flash kártyák elektronikai szerkezetéről (és nem csak 10 évnél régebbi doksi, hanem jelenkori is), küldjön egy felírást róla legyen szíves.

Köszönöm.
(#) bbalazs_ válasza pajti2 hozzászólására (») Szept 27, 2015 / 1
 
Nem tudom, hogy pontosan mire gondolsz block szervezodes alatt.
A legkisebb egyseg a szektor. A hossza 512 byte. Ez a szam fix. Ezt tudod irni vagy olvasni egyszerre. (Vagyis egy ekkora pufferre mindenkeppen szukseg van.)
Ezt egy linearis cimzessel lehet elerni, abszolut szektorszam alapjan. 32 bites (4byte-os) a szektorcimzes.
A regi SD kartyak (2GB es lefele) eseten paros cimet kell megadni.
Az ujnal parost vagy paratlant es ez a fenti fele lesz. (Magyaran, a regi 0012H-es cime az uj 0009H-as lesz.

Ha arra vagy kivancsi, hogy a clusterek hogyan szervezodnek, az mar a formazas dolga, FAT32 alatt mas es mas a clustermeret 4,8,16,32,64 GB eseten...
A legtobb esetben a 0. szektor tartalmazza a particios tablat. Ritkabban egybol az MBR van ott.
(#) don_peter hozzászólása Szept 27, 2015 /
 
Bár biztos vagyok benne, hogy senki nem akarja megosztani a hosszú szenvedéssel elért eredményét, de ha még is, én igazán örülnék egy olyan megosztásnak ahol C18 nyelven íródott az SD kártya kezelés, olvasás és írás. Biztos vagyok benne, hogy sokat tanulhatnék belőle.
Rég óta szórakozom vele magam is az SD init-ig el is jutottam, de egyszerűen önállóan nem leszek képes ezt a programot megírni, egyelőre.
Lényegében egy SD kártyára szeretnék txt fájlba adatokat menteni, visszaolvasni...stb, adatgyűjtés céljából.

Ha netán még is valaki megosztaná egy ilyen projektjét, itt vagy akár privátban azt nagyon megköszönném.
Esetleg, ha tudok olyan egyedi programot ami érdekes lehet cserébe azt szívesen megosztom, bár gondolom, ha valaki ezt meg tudja írni, annak nem igen lenne szüksége az általam megírt programokra
Szóval előre is köszönöm az esetleges önzetlen segítséget.
(#) bbalazs_ válasza don_peter hozzászólására (») Szept 27, 2015 /
 
En assemblyben odaig eljutottam, hogy olvasni es irni tudom a fileokat, ha NEM kell a FAT tablat is kezelni (magyaran, amig megmarad a szektorok linearitasa).
Tehat irni ugy tudok pl. hogy elore letrehozom az egesz file-t, PC-rol ramasolom, aztan benne mozgok.
Ha ez megfelel, el tudom kuldeni 18F45K50-re irt progimat neked.
C-vel nem foglalkozom.
(#) gerry válasza don_peter hozzászólására (») Szept 27, 2015 /
 
Szia!
Bocs, hogy belekotkot ,de >>>>EZ<<<< nem segít?
(#) don_peter válasza gerry hozzászólására (») Szept 27, 2015 /
 
Köszönöm, át fogom tekinteni, de nyilván már számtalan oldalt áttekintettem és kicsit túlnő rajtam ez a feladat, ezért is merészeltem kérni, egy megosztást.

bbalazs_: köszönöm, rendes vagy, de az asm számomra, csak kis részében értelmezhető.
C18-asban jártasabb vagyok..
(#) pajti2 válasza bbalazs_ hozzászólására (») Szept 27, 2015 /
 
Nem a logikai cluster szerveződésre gondoltam, és nem is az 512 byte-ra. Amikor nem spi módban kezeled a flash-t, van a multisector mode-nak egy korlátja, amekkora szektor tömböt egyszerre írni tud. Ha megnézed az időt, ameddig tart, azt fogod látni hogy 1 szektor X idő, 2 szektor is X idő, 3 szektor is X idő, valahol N szektornál lesz egy forduló, hogy N szektor még X idő, N+1 szektor már 2X idő. És pedig azért, mert úgy van felépítve belsőleg a flash elérése. Amikor átírsz egy szektort, a flash belsőleg egy egész blokkot húz be saját memória bufferbe, memóriában írja át azt a tényleges adatot, a teljes blokkot törli "maga alatt", és a teljes blokkot fogja újra írni. Az egész főleg azért is érdekel, mert amikor sorfolytonosan írok egy flash-t szektoronként, mint valami magnószalagot, az adott blokkon belül bármelyik szektor írása írja a többit is, és a 10k kikopás úgy enyhén gyorsabb, hogy nem blokkonként szektor csoportot írok, hanem egyesével szektorokat. A multiszektor-t éppen azért találták ki.
(#) foxi63 válasza don_peter hozzászólására (») Szept 27, 2015 / 1
 
Szia!
Ez egy szélmérő adatatait mentette .txt fájl-ba működött is , de nem lett befejezve .
Ha jól emlékszem megnyitott egy fájl-t és amikor a beérkező adat mennyisége elérte az 512-es határt, elmentette a blokkot, és egy másik pufferbe kezdett tölteni adatot, majd csere.
.txt fájl-t generált, Persze 1 nap kellett 1 fájl lezárásához. Szerintem sokmindent fogsz tudni használni belőle.
Teljes mértékben saját kútfőből, tehát használhatod nyugodtan. 2Gb SD-t használtam
Priviben segíthetek ha kéred.
Üdv.: Foxi
A hozzászólás módosítva: Szept 27, 2015

sd_4.zip
    
(#) don_peter válasza foxi63 hozzászólására (») Szept 27, 2015 /
 
Köszönöm előre is a segítséged és a projekted.
Lesz rá érkezésem és át is tekintem a tartamát, biztosan keresni foglak..
(#) pajti2 válasza foxi63 hozzászólására (») Szept 27, 2015 /
 
Általános kérdés. Az újabb kártyáknál az extra cmd supporton túl nem igazán találtam eltéréseket a meglévő funkciókban. Van bármi olyan korlát, ami miatt egy 32 gigás sdhc nem kezelhető ugyan azzal a kóddal, amivel a 2 gigás sd?
(#) Zsora válasza pajti2 hozzászólására (») Szept 27, 2015 /
 
Mit értesz az "újabb kártyák" alatt?
Pl. az SDHC ill. SDXC kártyáknál blokkcímzést használnak - az eredeti SD kártyák Byte-címzése helyett. Továbbá az újabb kártyáknak olyan regiszterei, működési módjai, átviteli sebessége, feszültségszintjei vannak, ami a régieknél nincs. Ezeket inicializálásnál figyelembe is kell venni.
(#) pajti2 válasza Zsora hozzászólására (») Szept 27, 2015 /
 
Mármint olyan feszültség szintjei, amiket spi módban is figyelembe kell venni?
Következő: »»   10 / 14
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem