AVRGCC jak zalozit noinit promennou na danou adresu
Tomas Chvatal
tchvatal na fordiag.cz
Úterý Srpen 8 08:37:09 CEST 2023
Zdravim.
(Microchip Studio, AVRGCC, Visual Micro, Arduino)
Mam aplikaci ktera bude umet skocit do bootloaderu.
Zalozil jsem si promennou BLstart ve ktere chci poslat do bootloaderu
informaci o tom,
ze zadam o reflash (ze ma bootloader cekat na reflash i bez stisku nejakeho
tlacitka).
Tedy potrebuji promennou BLstart:
volatile unsigned char BLStartReq __attribute__ ((section (".noinit")));
na nejake pevne dane adrese. Idealne 1.byte RAM,
v sekci .noinit (jestli se nepletu).
Pokud v linker prikazu pridam:
-Wl,--section-start=.noinit=0x800100
tak se mi prom.spravne posadi na adresu 0x0100
Ale STEJNOU adresu take pouzije sekce .data.
viz.:
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000222 00800100 00004148 000041fc 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .noinit 00000001 00800100 00004148 0000441e 2**0
ALLOC
Zkusil jsem tedy i sekci .data urcit adresu pomoci:
-Wl,--section-start=.data=0x800102
coz zafunguje, posune se na tuto adresu, ale NEzmeni se pak jeji velikost
a vznikly HEX soubor pri natazeni do flash.programu hlasi "soubor HEX je
prilis velky pro dany cip".
viz.
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000222 00800102 00004148 000041fc 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .noinit 00000001 00800100 00800100 0000441e 2**0
ALLOC
Co prosim prehlizim ? Lze pres nejaky linker option urcit velikost sekce
.data ?
Nebo musim zeditovat linker script ? (to bych nerad, Arduino ....)
Poddotaz: kde najdu nejaky popis parametru linkeru jako je "--section-start"
?
(zkousel jsem, ale nebyl jsem uspesny :-( )
Diky predem za kazde info.
s přáním hezkého dne / best regards
Tomáš Chvátal
tchvatal na fordiag.cz
Další informace o konferenci Hw-list