Ich beschäftige mich derzeit mit Chan's FatFs. Die Anbindung an das externe Flash funktioniert, ich habe auch erfolgreich erste Tests mit Short Filenames (8.3) durchgeführt. Die Umstellung auf LFN ging dann nicht mehr so reibungslos... leider. Ich habe folgende Konfiguration (benutze einen ARM MCU): #define _FS_TINY 1 #define _FS_MINIMIZE 0 #define _USE_STRFUNC 0 #define _USE_MKFS 1 #define _CODE_PAGE 1250 #define _USE_LFN 1 #define _MAX_LFN 32 Ich benutze dabei keine SD-card, sondern nur das externe Flash auf meinem Board. D.h. ich erzeuge die LFN Files intern: f_open(&m_file, "Testfile1.class", FA_CREATE_ALWAYS | FA_WRITE | FA_READ); Soweit so gut, aber wenn ich danach ein fopen() durchführen möchte, wird dieses File nicht mehr gefunden. Kennt sich jemand mit dem FatFs diesbezüglich aus bzw. hat schon ähnliche Erfahrungen gemacht? Ich hab nur schon mehrmals gelesen, dass dieser Source Code nicht über alle Zweifel erhaben sein soll... Danke für eure Hilfe! Grüsse Markus
In diesem Zusammenhang bin ich auf folgende Codezeilen gestossen: if (sn[NS] & NS_LFN) { /* When LFN is to be created, reserve an SFN + LFN entries. */ for (ne = 0; lfn[ne]; ne++) ; ne = (ne + 25) / 13; } else { /* Otherwise reserve only an SFN entry. */ ne = 1; } Was macht der for-Loop für einen Sinn?
Schau Dir mal den Abschnitt "Organization" unter http://home.teleport.com/~brainy/lfn.htm an. Der lange Filename muss irgendwo abgelegt werden. Dies wird durch mehrere (Art Dummy-Einträge) im Verzeichnis realisiert. Jeder Eintrag enthält ein Stück des langen Filenamens. Die for-Loop ist nur ein strlen(lfn). Damit und mit der Berechnung wird die Anzahl der nötigen Einträge für einen langen Namen im Verzeichnis bestimmt.
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.