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