Hi,
0x00fe00 ist die Adresse in der die Section .pmBoot liegt, in der nur
die Funktion writeFlashPage(..) liegt.
im Makefile so angeben:
EXTMEMOPTS
=-Wl,--section-start=.pmData=0x002500,--section-start=.pmBoot=0x00fe00
Ich habe jetzt im ersten versuch das Programm mit der integrierter
Funktion per bootloader übertragen.
-> Funktion ok.
dann in dem Programm die Funktion durch
1 | void (*writeFlashPage)(uint32_t pagestart, uint16_t *Dataptr) = 0x00fe00;
|
ersetzt und erneut peer bootloader übertragen.
Die Funktion im Bootbereich wird dabei ja nicht überschrieben und ist
auch noch vorhanden (ich habe zur Überprüfung das Flash ausgelesen)
Jetzt bleibt das Programm beim Zugriff auf die Funktion hängen und
startet irgentwann neu (obwohl der WDT noch nicht aktiviert ist)
Mir ist jedoch aufgefallen das die .text section im zweiten Fall 24 Byte
grösser ist, ich hätte ja erwartet das sich hier nichts ändert.