AVR-GCC: Stringkonstante wird nicht an Funktion übergeben

OP #1573721
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.