AVRGCC jak zalozit noinit promennou na danou adresu

Jan Waclawek konfera na efton.sk
Středa Srpen 9 11:49:48 CEST 2023


Zacnem tym jednoduchym:

>Poddotaz: kde najdu nejaky popis parametru linkeru jako je "--section-start"?

V manuali k linkeru, t.j.
https://sourceware.org/binutils/docs/ld/Options.html#index-_002d_002dsection_002dstart_003dsectionname_003dorg

Nie zeby to nejako zvlast pomohlo. V skutocnosti linker je nenormalne
zlozita zalezitost (presnejsie, projekt binutils, ktoreho ld je len jednou
sucastou, je nenormalne zlozita zalezitost, kvoli nenormalnemu rozsahu
cielov ktore to podchytava, a rozsahu variant pre vsetky ciele, a rozsahu
a zlozitosti cinnosti ktore sa pre vsetky tie ciele a varianty robia), a
manual obsahuje len zlomok informacie, vacsinou pre "typicke aplikacie".
Bohuzial, tu plne plati zasada "skutocnej dokumentacie"...

Teraz to tazke.

To, co sa snazite urobit by sa malo spravne riesit tym, ze pouzijete
vlastny linker script, a v nom si prehodite .noinit na zaciatok data.
Najlepsie zobrat ten, ktory je defaultny (ak to arduino nejako nepomenilo,
tak [avr-gcc]/lib/ldscripts/avrN.x - snad sa nepouziva niektory z dalsich
styroch s inou priponou,
https://www-user.tu-chemnitz.de/~heha/hsn/chm/avr-libc.chm/faq_linkerscripts.html
), skopirovat si ho k sebe, mozno premenovat aby bolo jasne o co ide; a do
prikazu ktorym sa spusta linker (znova, netusim ako to robi arduino a ani
ma to nezaujima) pridat -Wl,-Tmy_linkerscript.x

Vsetky ostatne postupy narazaju na to, ze nimi porusujete nejaky zauzivany
postup.

Mimochodom, nechapem, co myslite pod:

>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".

ved hex neobsahuje output section data... ?

wek


----- Original Message ---------------

Subject: AVRGCC jak zalozit noinit promennou na danou adresu
   From: "Tomas Chvatal" <tchvatal na fordiag.cz>
   Date: Tue, 8 Aug 2023 08:37:09 +0200
     To: ".hw konfera" <Hw-list na list.hw.cz>

>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
>
>_______________________________________________
>HW-list mailing list  -  sponsored by www.HW.cz
>Hw-list na list.hw.cz
>http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list