AVRGCC jak zalozit noinit promennou na danou adresu

Zdeněk Aster zdenek.aster na seznam.cz
Středa Srpen 9 16:22:31 CEST 2023


A nepomohlo by absolute??
Pripadne to dat na zasobnik a v bootloaderu opravit init kod a mrknout
na zasobniku jestli tam je ta promena co chci.....

Zdenek

Dne 09.08.2023 v 15:16 Tomas Chvatal napsal(a):
> Dobry den.
>
> Dekuji moc za informace.
> Udelam ten linker script.
>
>> Mimochodom, nechapem, co myslite pod....
>
> To asi neobsahuje, ale nejak se ten HEX opravdu natahne (nezkoumal 
> jsem kde presne).
>
> Ja vysledny hex vyrabim spojenim aplikace a meho bootloaderu pomoci
> srec_cat %in1% -Intel %in2% -Intel -o AppPlusBootl.hex -Intel
>
> Na paleni pouzivam aplikaci eXtremeBurner a ta, pri natahovani HEX, 
> zahlasi, ze je HEX pro dany cpu moc dlouhy.
>
> Jen tusim, ze to bude nejak souviset s tim posunem sekce. Nic jineho 
> nezmenim a po navratu na orig.stav je to ok.
> Radek pro sekci .data se zmeni pouze ve sloupci ADRESA (odsouvam ji na 
> adr.00800102),
> ale nezmeni se jeji SIZE, coz by se, dle meho, melo.
>
>> Idx Name          Size      VMA LMA       File off  Algn
>>  0 .data         00000222  00800100  00004148  000041fc  2**0
>>  0 .data         00000222  00800102  00004148  000041fc  2**0
>
> s přáním hezkého dne / best regards
> Tomáš Chvátal
> tchvatal na fordiag.cz
>
> ----- Původní zpráva ----- Od: "Jan Waclawek" <konfera na efton.sk>
> Komu: "HW-news" <hw-list na list.hw.cz>; <hw-list na list.hw.cz>
> Odesláno: 9. srpna 2023 11:49
> Předmět: Re: AVRGCC jak zalozit noinit promennou na danou adresu
>
>
> 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
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> 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