AVRGCC jak zalozit noinit promennou na danou adresu
Jaroslav Buchta
jaroslav.buchta na hascomp.cz
Středa Srpen 9 18:32:15 CEST 2023
Uelal bych do LS specialni sekci pro tu promennou na pevne adrese a
promennou tam umistil.
Dne 09.08.2023 v 16:22 Zdeněk Aster napsal(a):
> 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
>
> _______________________________________________
> 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