SD kortet hjælpe!

D

Deepak350

Guest
Hi guys,

Jeg starter et projekt på SD-kortet.Jeg fik et eksempel programmet og dets arbejdsform bøde.Jeg er i stand til at skrive og læse data fra SD-kortet.Problemet er, at de lagrede data og læser er i binær format.(f.eks hvis jeg skriver "8" det er lagret som "1000" på kortet).Er der alligevel kan jeg gemme det i andre formater (som f.eks. Xml)??
Jeg bruger en 2 GB SD-kort, PIC18F8520 MCU og en MicroC IDE.

Hilsen,
Tech350.

 
Data er altid gemt i binært format.Hvis en XML-fil er skrevet på kortet det stadig i en binær format.Det er den øvre software lag at fortolke data i et andet format.Du skrev en "8", og det blev gemt som "00001000".Hvis du ønsker ASCII værdien af antallet otte, er du nødt til at gemme hex "38" eller binær "00111000".Det er det øverste lag af software, som konverterer format til sin binære tilsvarende.

Gøre en søgning på nettet for FAT-filsystemet.Der er nogle eksempler på FAT-filsystemet på SD-kort.Det er, hvad du har brug for at skrive en XML-fil til kortet med måske en pc og derefter læse den tilbage med microcontroller eller omvendt.

Her er et udgangspunkt:

http://www.uelectronics.info/using-sd-card-microchip-pic

 
Proton plus har fået en libay du opretter en tekstfil, og csv for Excel, så hvis du skrev 8 ville gemme det har 8

beklager, at jeg ikke har brugt MicroC
wizpic

 
Thanks a lot for svaret gutter.Jamen der er en masse forvirring.I'l få min grundlæggende ret filsystemer og komme tilbage

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smile" border="0" />
 
Hvis du ønsker at skrive kun en fil på et tidspunkt ingen grund til at gå i detaljer af fedt og gøre ordningen kompliceret ..Du kan skrive fil direkte ved at gøre din egen software lag
nemlig at konvertere hele filen i ord 8bit og skrive er at kortet og under læsning nyindspilning filen igen ..

 
Tak for svaret nikhilele,

Okay, jeg begynder SD projektet fra bunden.Jeg ønsker at initialisere SD i FAT16-filsystemet.Hvordan kan jeg så om det?Nå jeg fik et eksempel kode og dets arbejdsform bøde.Jeg kan med held skrive data til SD-kortet, men når jeg vil se de filer eller data i min computer det er i et ukendt format.Så jeg ville format eller initialisere SD i FAT16 format.
Er det muligt?
Hvad er rækkefølgen?
Er der et eksempel på kode i CD?

Thanks in advance

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smile" border="0" />
 
Hej,

Kan nogen give mig SD / MMC initialisering sekvens eller logik please?

Hilsen,
Deepak.

 
Jeg vil bruge computeren til at formatere SD-kortet.Hvorfor skrive microcode at gøre et job computeren allerede er gode til!

Når du har kortet re-formateret, bruge computeren til at kopiere et enkelt lille tekstfil til kortet.

Næste, skrive nogle microcode, som åbner denne tekst fil fra SD-kortet og føjer nogle data til slutningen.Luk filen og derefter fjerne kortet og sætte det tilbage i computeren kortlæser.Brug PC-værktøjer til at kontrollere kortet for disk fejl og derefter åbne tekstfilen og se om din nye data var vedlagt.Når du kan ændre filen på din PIC uden at forårsage en diskfejl, du fik alle de store spørgsmål sorteret ud.Når de første par forsøger korrupte SD-kortet,
skal du bare bruge computeren til at omformatere den og prøv igen.

Ved at gøre ovenstående,
kan du gøre computeren gør det oprindelige FAT setup for at tilføje en ny fil, denne måde din microcode behøver ikke at gøre det, og koden kan mindre.For de fleste indlagte projekter, er dette ikke en stor begrænsning.Til indlejrede ting, de krævede filnavne er kendt i god tid.

 
Hi banjo tak for dit svar, for at tilføje filer på SD-kort (efter formateringen i den computer, osv.) er vi nødt til at formatere SD-kortet i første omgang.På herved SD vil blive initialiseret og formateret i et format ukendt.SD-kortet skal være initialiseret ved du, før du ønsker at udføre alle andre funktioner på det.Dette er min mening og erfaring,
skal du rette mig hvis jeg er forkert.

 
OK, det synes jeg misfortolke hvad du siger.I min måde at tænke på, PC initialisere SD-kortet og PIC kun læser tilbage denne initialisering.Uanset, her er de skridt, som jeg forstår dem.

Først tage et kig på:
http://en.wikipedia.org/wiki/File_Allocation_Table

Skip begyndelsen del, det er både forvirrende og ikke nødvendig.Flyt ned til Design portion og se på diagram af disk-partition.Dette viser, hvordan data er grupperet på partition.Hver sektion er en kendt størrelse.FAT eller File Allocation Table er en række knyttet lister, som giver dig mulighed for at stykke filen sammen igen.Særlige poster i FAT hjælpe med at finde uudnyttede klynger og EOC der markerer afslutningen af det pågældende fil.
Mens FAT hjælper dig sekventielt finde alle de dele af filen, hvordan du finder det udgangspunkt?Svaret er rodmappen afsnit.Dette er igen på en kendt placering på partition.Du gå til rodmappen og søg efter filnavn du er interesseret i. Når filnavnet matches op, oplysningerne i denne rodbibliotek indrejse vil fortælle dig, at udgangspunktet for filen.Så skal du gå til denne placering i FAT at starte Ved en filen sammen igen.
Når du bruger et microcontroller, jobbet kan forenkles, hvis du er villig til at gøre nogle kompromiser.Hvis kortet kun indeholder kun et par filer og du kender den rækkefølge, de blev skabt i, så kan du precalculate placeringen af de steder i rodmappen struktur, hvor den første FAT klynge vil være.Det holder dig fra at skulle omfatte koden for at søge rodmappen.Andre simplications er muligt, hvis du altid bruge formateret kort og du forstår FAT steder.

Et værktøj, der er brugbare i forståelsen og debugging fil adgangsveje er en disk editor.Et værktøj, jeg har brugt er WinHex.
http://www.winhex.com
Når jeg gjorde det for flere år siden, deres demo-version vil lade mig se, men ikke ændre disken klynger.Dette var tilstrækkeligt for mig, da jeg er nødvendige for at gøre, var kontrollere ændringer til FAT, at min microcontroller gjorde.Hvis deres nuværende software ikke har en demo-tilstand, kan du søge på nettet for ældre shareware versioner af dette program.Eller du kan prøve en freeware værktøj som:
http://mh-nexus.de/en/hxd/

Start med en SD-kort og formatere den ved hjælp af PC.Derefter kopiere en enkelt, meget lille tekstfil til kortet.Kig på SD-kort med disk Editor forsøger at få mening ud af FAT og rodbibliotek poster.Foretag nogle noter af deres indhold.Nu, med en teksteditor, åbne denne lille tekstfil af SD-kortet og tilføje tekst til den.Gem filen og igen bruge disken redaktør for at kunne se ændringerne til FAT.Gør dette flere gange, og du vil få forståelse af, hvordan det hele fungerer.
Nu omformaterer SD-kort i pc'en.Put den samme lille tekstfil på den og forsøge at ændre det med microcontroller.Derefter skubbe kortet ud af microcontroller og undersøge FAT bruger disken editor.Dette vil vise dig, hvad microcontroller var korrekt, og hvor det rodet sammen.

 
Hi banjo tak for svaret.

Jeg er nu forsøger hvad du foreslog.Jeg vil formatere SD i FAT32 format på min pc, og prøv at skrive en kode til at læse / ændre / skrive på SD.I'v været leder for eksempel koder men ikke er blevet antaget.Please hjælp mig, hvis nogen kode som sådan.Tak.

 
Jeg er ikke bruger nogen PIC microcontrollers, så jeg har ikke nogen eksempel kode.Måske nogle andre medlemmer kan hjælpe der.

Jeg vil foreslå at læse dokumentationen til FAT bibliotek du bruger meget nøje.Da jeg arbejdede med AVRs til dette formål for flere år siden, at biblioteket kun støttes FAT16.Sørg biblioteket støtter FAT32.Hvis du bruger lange filnavne,
så sørg for at understøttes også.Normalt er disse biblioteker har strenge grænser.Årsagen er kode størrelse.Hvis de har til at teste for alt for mange muligheder, biblioteket bliver for store til at være nyttig.

Sørg for at lukke den åbne fil på SD-kortet, inden dit program udgange.Leaving åbnet filen kan forårsage problemer.
Hvis SD-kortet er beskadiget efter skriftligt, bryde din kode i stykker til at bestemme, hvilke afsnit der er årsag til problemet.

 
Hi banjo,

Jeg havde givet op SD-kortet projekt de sidste par dage, jeg er på den igen.Jeg vil først fortælle dig min fremskridt.Jeg formaterede kortet og skrev en 'test.txt' fil på SD-kortet fra mit skrivebord.Så vidt jeg kunne detektere kortet og se om det er FAT formateret held.Men problemet er, at jeg ikke er i stand til at læse en fil fra SD.Please hjælp mig med det.Hope I'v forudsat tilstrækkelig information.

Venlig hilsen.

 
Hej!

Du kan finde en masse dokumentation på nettet, som forklarer, hvordan FAT fil
system (16 eller 32) er organiseret.

Så tilsyneladende har du løst rå læse og skrive problem, og du er
stand til at finde MBR osv. ..Dette er det fysiske lag.

Nu her er, hvordan FAT værker (Jeg skriver en ny version af FAT16 for
MSP430 nu).

Alt, hvad der følger er validfor FAT16 fordi jeg er i det, men metoden er meget
lignende for FAT32.

Først skal du finde den MBR.

1.Læs meget første blok af SD-kort (sektor 0).Find det sted, 1C6 og
læs placeringen af MBR.I mit tilfælde er det F9.

2.Læs blokere 0xF9.
Du vil få en masse data, som du kan læse kortet egenskaber
gerne bytes pr Secor, sektor pr klynge, haves sektorer osv. ..

3.Form dette datasæt, beregne placeringen af root sektor.Og du kan
også beregne begyndelsen af data område.

4.Læs root sektor, som er en samling af filen registre.En fil record er en
32-byte record "(altså i en 512-byte sektor, får du højst 16 records).
I dit tilfælde er et af disse registre skal begynde med "test **** txt0".
De * repræsenterer et mellemrum (0x20) og 0 repræsenterer 0x00 værdi.
Du har også nogle oplysninger om oprettelsesdato, ændringsdato,
etc. ..

5.Når du har fundet din fil optage, se på de 2 bytes på offset 26 (bytes 26 og
27).De repræsenterer placeringen af de første klynge af din fil.Omhyggelig,
er det
skrevet med lille endian.Derfor (det antages, din fil "test.txt" er den eneste
en i roden dir), disse 2 bytes vil være 02 og 00.Men det betyder ikke, 0x0200
men 0x0002.Little endian betyder "lille ende kommer først".
Forsigtig: i begyndelsen af kortet (forvaltning områder), alle beregningen
enheder i sektorer.Men i de data området, er du nødt til at tage klynger i betragtning.
En klynge er et bundt af sektorer (32 i forbindelse med 1GB kort jeg bruger).

6.Nu skal du vide, at din fil begynder på den anden klynge.Så kom forbi root
mappe, du vil derfor være i data-området, og finde den cluster # n-2,
derfor 0 i denne sag.Det vil være klyngen, der følger roden.
Din test.txt vil være der.
For eksempel, hvis du skrev filen test.txt med en tekst editor (notepad), og
hvis denne fil indeholder "hello", så skal du se:

0005C200 48 45 4C 4C 4F 00 00 00 00 00 00 00 00 00 00 00

Den venstre del er den absolutte adresse i SD-kort.

7.Sidste ting:
Før få hovedpine, bør du først:
- Format dit kort
- Skriv en enkelt fil med navnet "test.txt"
- Download winhex
- Vælg "åben disk" og vælge dit SD-kort i menuen.
- Så navigere i kortets data, indtil du (mere eller mindre) forstå
hvad alt dette betyder.

Have fun!

Dora.Deepak350 wrote:

Hi banjo,Jeg havde givet op SD-kortet projekt de sidste par dage, jeg er på den igen.
Jeg vil først fortælle dig min fremskridt.
Jeg formaterede kortet og skrev en 'test.txt' fil på SD-kortet fra mit skrivebord.
Så vidt jeg kunne detektere kortet og se om det er FAT formateret held.
Men problemet er, at jeg ikke er i stand til at læse en fil fra SD.
Please hjælp mig med det.
Hope I'v forudsat tilstrækkelig information.Venlig hilsen.
 
Hej doraemon,

Thanks a lot for svaret.Den trinvis forklaring var fantastisk.Thanks a lot for at tage så meget tid på at skrive det samme.Jeg vil køre min kode og følge de trin, du har nævnt, og vende tilbage til dig.Tak igen.

Venlig hilsen.

 

Welcome to EDABoard.com

Sponsor

Back
Top