Ich bin gerade dabei einen BootLoader für USB zu basteln und bin da über ein Problem gestolpert. FLASH.C stellt ein paar Funktionen für das Beschreiben des Flashs zur Verfügung und verwendet die Deklaration RAMFUNC, womit Funktionen deklariert werden, die aus dem RAM laufen sollen. Nach dem Compilieren ist mir in dem .lss-File aufgefallen, dass der RAM-Code niemals von Flash nach RAM kopiert wird und die Branches weiterhin ins Flash gehen. Bsp: 100cec: bl 100e98 <AT91F_Flash_Unlock> obwohl RAMFUNC int AT91F_Flash_Unlock(unsigned int Flash_Lock_Page) { [...] } (Die RAMFUNC-Funktionen landen nach dem Compilieren in der section .fastrun) section size addr .text 3552 1048576 .fastrun 800 1052128 .rodata 85 1052928 .rodata.str1.4 8 1053016 .data 8 2097152 Weiß da jemand was darüber?
Problem gefunden ... In meinem AT91SAM7S256-ROM.ld hat noch was gefehlt, was mthomas schon ins SAM7S64 Linkerscript gebaut hatte: /* .data section which is used for initialized data */ [...] . = ALIGN(4); *(.fastrun) /* "RAM-Functions" */ /* added by mthomas * / [...] Ich hab mal das File angehängt, für den Fall jemand hat ähnliche Probleme.
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.