Hallo,
besteht eine Möglichkeit dem Linker einen uint32 Wert mitzugeben und damit eine Konstante zu initialisieren.
1 |
|
2 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
Erste Idee war mit einem Binary Editor den Wert auszutauschen und dann HEX daraus zu machen. Diese Vorgehensweise lässt sich nicht robust per Makefile umsetzen, da die Variablenaddressen sich ändern.
Zweite Idee war die GCC Toolchain dafür einzusetzen. Hat jemand ein Beispiel wie man mit objcopy einen Wert in einer Sektion austauschen kann? Am besten mit Referenz auf Symbol und nicht eine Adresse. Hat jemand vielleicht ein Beispiel wie man mit ld das machen kann? Kann man da nicht mit
1 |
|
2 |
|
3 |
|
die Adresse herausfinden und diese zum Setzen neuer Werte benutzen?
ChatGPT hat mir elftools aufschwatzen wollen. Die elf Datei ist danach vom 2Meg auf 200Meg gegangen. Warum ist mir noch nicht klar. Wird da beim Schreiben auf eine Adresse der ganze Adressraum ausgerollt?
Bisher habe ich zum Ablegen der Checksumme srec_cat benutzt. srec_cat in.hex -intel -crop 0x08000000 0x0803EFFC -STM32 0x0803EFFC -o out.hex -intel Allerdings wird hier ganze Page für 32bit Checksumme verbraucht. Und damit die Checksumme passt, sind -fill 0xFF und -unfill 0xFF Aufrufe notwendig.
Viele Grüße