Gast
#3436187
Hallo,
ich schreibe gerade einen Bootloader, welcher Variablen bzw. Daten von
Strukturen des eigentlichen Hauptprogramms patchen können soll. Hierzu
informiert das Hauptprogramm via UART einen beliebigen PC mit einer von
mir geschriebenen Software, wo welche Daten liegen. Anschließend wird in
den Bootloader gewechselt und dort sollen dann die Daten verändert
werden.
Vorbelegte Variablen und Strukturen werden bekanntlich im Flash abgelegt
und beim Start des uC von der avr-libc in den RAM geladen. Gebe ich
lediglich die Adresse der Variable via & zurück habe ich nur die Adresse
im RAM. Ich benötige jedoch die Adresse im Flash.
In der .map-file finde ich diese Offset wie folgt:
.data 0x0000000000800100 0x8a0 load address
0x00000000000030b8
0x0000000000800100 PROVIDE (__data_start,
.)
Jedoch würde ich jetzt gerne diese load address 0x30b8 im Hauptprogramm
bestimmen können. Sei es mit Makros oder Variablen, welche vom
Linkerscript gesetzt werden (ähnlich __data_start).
Hat das schon jemand gemacht bzw. wie könnte ich vorgehen? Ich würde
hier nicht fragen, hätte ich nicht schon eine Lösung gefunden.
Gruß
Sven