Hallo, ich versuche gerade ein Filesystem für eine SD-Card am STM32F4discovery zu nutzen. Dazu möchte ich das Filesystem von ChaN einbauen. Hat das schon mal jemand geschafft?
Klar,wenn Du bei Chan auf der Seite schaust dann siehst Du dass es da fur STM und.LPC schon Implementierungen gibt...
Dort habe ich nur Implementierungen für stm32f10x gefunden. Beim Umbau für den STM32F4 komme ich vom Hundertsten ins Tausendste... z.B.: error: 'DMA2_FLAG_TC4' undeclared (first use in this function) error: 'DMA2_FLAG_TE4' undeclared (first use in this function) error: 'DMA2_FLAG_HT4' undeclared (first use in this function) error: 'DMA2_FLAG_GL4' undeclared (first use in this function) usw..... Da werden die Umbauarbeiten wohl sehr umfangreich.
Habe SDIO am discovery F4 am laufen. Mit polling und DMA, 1 bit und 4 bit. Habe die standard ST samples leicht modifiziert damit sie unter CooCox laufen. Ich habe auch mit einer nativen Implementierung aus einem GIT im Netz herumgespielt. Die benötigt ganz wenig Platz, was beim f4 ja relativ unwichtig ist. Kann dir ein CooCox Beispielprojekt zur Verfügung stellen, das die LED blinken lässt, das SD root Verzeichnis ausliest und am USART2 ausgibt. kein schöner Code, aus meinen ersten gehversuchen halt ... --- Etwas tückisch ist das DMA, weil Blöcke an geraden Adressen beginnen müssen und weil nicht jeder Speicherbereich geht (zb. der freie 64K SRAM). Deshalb habe ich jetzt in der entgültigen Version zwei 512 Byte Buffer eingebaut, die abwechselnd geschrieben werden. Und nur dann, wenn der DMA nicht direkt funktioniert.
Hallo Namensvetter, danke für das Angebot. stm32f4_discovery_sdio_sd.c funktioniert auch bei mir prächtig. Da drüber will ich aber das Filesystem von ChaN setzen - und da hapert es. Meine Hardware ist ok, alle SD-low-level-Funktionen klappen, aber keine vom Filesystem - wie etwa f_open f_write etc. f_open liefert z.B. /* (13) There is no valid FAT volume */ Da muss ich noch etwas weiter forschen...ich verwende übrigens auch CooCox.
Ich verwende doch auch das FatFS von ChaN in Version R0.08b. Die Anbindung im DiskIO habe ich nur rudimentär und einfach gemacht. Aber es läuft äußerst stabil und es gehen alle highlevel routinen tadellos. Allerdings verwende ich die nicht direkt, weil ich bestehenden Code portiert habe wo die CLIB funktionen (fread, fwrite, fopen) bereits verwendet wurden. Aus diesem Grunde habe ich mir einen kleinen Wrapper geschrieben, damit ich den anderen Code nicht ändern muss. Der Wrapper ist allerdings nicht 100% implementiert, da ich zb. "append" bei fopen nicht benutze ... Wenn ich nach Hause komme, suche ich dir das Zeugs mal zusammen.
Es wär nett, wenn du mir das mal schicken könntest. Ich verwende R0.09a von ChaN, habe dort alle Anpassungen an stm32f4_discovery_sdio_sd.c gemacht und bekomme nur Schrott bei den High-Level-Funktionen raus.
Vielleicht liegts auch an deiner Toolchain? Probier mal mein mini Projekt: vc20final.t-winkler.net/zip/M4/Stm32F407_blink_05.zip
Besten Dank!!! Dein Projekt funktioniert bei mir schon mal wunderbar. Nun kann ich suchen, wo ich bei mir einen ganz gemeinen Fehler produziert hatte.
Das ist schon mal gut. Wenn das Projekt geht (nicht nur die binaries), dann scheint deine Toolchain ok zu sein. Hast du denn die PLL Einstellungen angepasst? Mit den originalen CooCox Dateien gehen die von 25MHz Quarz aus. Am Discovery ist aber ein 8MHz Quarz drauf. Außerdem ist die SystemInit() nicht aufgerufen worden.
Hallo, bei mir funktioniert inzwischen wirklich ALLES! Im Moment läuft gerade ein Dauertest, bei dem ich eine SD mit Textfiles vollschreibe und anschliessend überprüfe. Das geht bisher fehlerfrei. Den von dir mitgelieferten Wrapper habe ich mal testweise ausgeschaltet. Es geht auch ohne ihn!?! Meinen ursprünglichen Fehler habe ich auch gefunden: FIL *myfile statt richtig FIL myfile Manchmal sieht man den Wald vor lauter Tomaten nicht. Die CLK-Leitung zur SD-Karte ist übrigens ziemlich empfindlich - mit einem Tastkopf dran geht nichts mehr. Nochmals vielen Dank!
Thomas Winkler schrieb: > Außerdem ist die SystemInit() nicht aufgerufen worden. Die wird doch schon von startup_stm32f4xx.c aufgerufen. Inzwischen habe ich noch etwas rumgespielt: Ohne irgendwelche Anpassungen schaffe ich ca. 180kByte/sec auf die SD-Card zu schreiben.
Schön dass jetzt alles geht! KB/s ist doch schon was. Mit 4 Bit geht es dann ertst wirklich schnell. Es hängt aber auch von der SD Karte ab. Für meine Zwecke alle male schnell genug.
Thomas R. schrieb: > bei mir funktioniert inzwischen wirklich ALLES! Hallo Thomas, könntest du mir eventuell dein Projekt zur Verfügung stellen. Hätte mich in das Fat Fs von Albert McGilvra eingearbeite, welches jedoch irgendwelche windows.h usw. Libs verwendet, welche ich weder in coocox noch im Projektordner finde.
Welchen Thomas meinst Du denn? xs1541.t-winkler.net/zip/Zoomfloppy/Stm32F407_blink_06.zip
Hey danke lt. Zitat meinte ich eigentlich Thomas R. arbeite mich aber gerade in deine 5er Version ein
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.