AVR-GCC: Stringkonstante wird nicht an Funktion übergeben

OP #1573721
Lesenswert?

Hi,

ich versuche gerade die FAT-Bibliothek von Elm Chan in Betrieb zu 
nehmen. Soweit klappt die Kommunikation mit der SD-Card, aber jetzt hab 
ich ein ganz anderes Problem. Eine Stringkonstante in der ich den 
Dateinamen definiere kommt nicht in der aufgerufenen Funktion an.
1
main{
2
  f_mount(0,&fs);
3

4
  err= f_open(&file1,"test2.txt",FA_CREATE_ALWAYS | FA_WRITE);
5
}
6

7
und so sieht der Anfang der Funktion aus
8

9
FRESULT f_open (
10
  FIL *fp,      /* Pointer to the blank file object */
11
  const XCHAR *path,  /* Pointer to the file name */
12
  BYTE mode      /* Access mode and file open mode flags */
13
)
14
{
15
  FRESULT res;
16
  DIR dj;
17
  NAMEBUF(sfn, lfn);
18
  BYTE *dir;
19

20

21
  fp->fs = NULL;    /* Clear file object */

Wenn ich in f_open mir den Wert von path ausgeben lasse bekomme ich nur 
einen leeren String angezeigt. (JTAG Debugging)

Woran kann das liegen?

Noch eine andere Sache die mich etwas beunruhigt: Der Compiler spukt am 
Ende die Message:

Program:    7726 bytes (23.6% Full)
(.text + .data + .bootloader)

Data:       2378 bytes (116.1% Full)
(.data + .bss + .noinit)

Woher kommen die 116,1%? Kann das was mit meinem Problem zu tun haben?

Gruß
Tom
#1573732
Lesenswert?

Thomas Burkhart schrieb:

> Data:       2378 bytes (116.1% Full)
> (.data + .bss + .noinit)
>
> Woher kommen die 116,1%?

Keine Ahnung. Dazu musst du mal ins Map-File schauen und dir die SRAM 
Belegung raussuchen.

> Kann das was mit meinem Problem zu tun haben?
Möglich.
letztendes bedeutet das, dass du für globale Variablen mehr Speicher 
verbraucht hast, als dein µC überhaupt hat. Und da ist der Stack und 
lokale Variablen noch gar nicht eingerechnet.
Deine Schlussfolgerung?
OP #1573740
Lesenswert?

Karl heinz Buchegger schrieb:
> Keine Ahnung. Dazu musst du mal ins Map-File schauen und dir die SRAM
> Belegung raussuchen.
>
>> Kann das was mit meinem Problem zu tun haben?
> Möglich.
> letztendes bedeutet das, dass du für globale Variablen mehr Speicher
> verbraucht hast, als dein µC überhaupt hat. Und da ist der Stack und
> lokale Variablen noch gar nicht eingerechnet.
> Deine Schlussfolgerung?

Hab jetzt einen buffer verkleinert und bin unter 100%, jetzt klappts.

Gruß
Tom
#1573756
Lesenswert?

Aus deinem Mapfile (wo ist das hingekommen?)


Allocating common symbols
Common symbol       size              file

Fatfs               0x464             main.o
Finfo               0x16              main.o
acc_dirs            0x2               main.o
acc_files           0x2               main.o
Timer               0x2               main.o
Buff                0x400             main.o
acc_size            0x4               main.o


Fatfs ist ziemlich gross
Buff ist ziemlich gross

Du hast insgesamt offenbar nur 0x800 (also 2K) Bytes. Die beiden 
Variablen zusammen brauchen aber schon 0x864

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