Gast
#3155525
Hallo zusammen! Ich soll für den STM32F4 einen eigenen Bootloader entwerfen, der über IAP an eine höhere Speicheradresse (also z.B. 0x08004000) ein eigenes Programm ins Flash schreibt. Laut den Application Notes soll man ja dafür mit dem Linker die Startadresse im Flash verschieben. Da ich die Eclipse Toolchain mit arm-none-eabi-gcc benutze, kann ich die Adresse für den Linker nicht dort einstellen, sondern muss das über das Linkerscript machen. Sobald ich allerdings in mein Linkerscript gehe und dort die entscheidende Zeile ändere FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1024K in diese Zeile FLASH (rx) : ORIGIN = 0x08004000, LENGTH = 1024K - 0x4000 geht nichts mehr, das Programm wird sogar scheinbar übertragen, der Debugger schickt aber merkwürdige Fehlermeldungen [Error: address + size wrapped(0xffffffff, 0x00000004)] und das Programm läuft nicht durch. 1. Was mache ich falsch? 2. Warum sollte ich die Startadresse im Linker verändern, obwohl ich erstmal das Bootloader Programm an die Adresse 0x08000000 schreiben muss? Die andere Startadresse brauche ich doch erst, wenn das Bootloader Programm schon läuft. Das verstehe ich nicht. 3. Oder gibt es die Möglichkeit, dort zwei Linkerscripte zu verwenden, ein flash.ld zum flashen des Bootloaders und ein flash_offset.ld, was ich brauche, wenn ich mein Userprogrammimage vom Bootloader aus nachlade? Und wie mache ich das? Das wird leider aus den Application Notes überhaupt nicht klar. Vielen Dank schonmal für die Beantwortung. Falls es schon einen anderen passenden Thread gibt, verlinkt mich einfach oder gebt mir ein Suchstichwort, dann ist mir auch geholfen.