Chan's FatFs LFN File wird nicht gefunden

Gast #2958125
Lesenswert?

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
Gast #2958244
Lesenswert?

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?
#2958367
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren