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?