Adresy zmiennych w AVR-GCC
Masz problem? Zapytaj na forum elektroda.pl
From: Patryk Sielski <psielski-usun_at_nospam_elka-usun.pw.edu.pl>
Subject: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 14:40:15 +0200
Witam.
Chcę sobie zmieniać pamięć RAM komendami przez port szeregowy.
Wszystko pięknie-ładnie za wyjątkiem tego, że nie wiem,
pod jakim adresem w RAMie kompilator umieścił sobie moją zmienną.
Załóżmy, że jest to
unsigned char lepper=0; // ;-)
W jaki sposób na etapie kompilacji dobrać się do adresu leppera?
Czytam, googlam, a rozwiązania nie widzę...
--
Pozdrawiam,
Patryk Sielski
http://usprawnienia.pl
From: "Andy" <anokWYTNIJ_at_nospam_ceti.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 15:07:08 +0200
Użytkownik "Patryk Sielski" <psielski-usun_at_nospam_elka-usun.pw.edu.pl> napisał w
wiadomości news:457fe$44993e2f$57ceab2d$22338_at_nospam_news.chello.pl...
Witam.
Chcę sobie zmieniać pamięć RAM komendami przez port szeregowy.
Wszystko pięknie-ładnie za wyjątkiem tego, że nie wiem,
pod jakim adresem w RAMie kompilator umieścił sobie moją zmienną.
Załóżmy, że jest to
unsigned char lepper=0; // ;-)
W jaki sposób na etapie kompilacji dobrać się do adresu leppera?
Czytam, googlam, a rozwiązania nie widzę...
nie wiem czy o to Ci chodzi
& lepper
--
Andrzej
From: Patryk Sielski <psielski-usun_at_nospam_elka-usun.pw.edu.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 15:26:59 +0200
Andy <anokWYTNIJ_at_nospam_ceti.pl> pisze:
Witam.
Chcę sobie zmieniać pamięć RAM komendami przez port szeregowy.
Wszystko pięknie-ładnie za wyjątkiem tego, że nie wiem,
pod jakim adresem w RAMie kompilator umieścił sobie moją zmienną.
Załóżmy, że jest to
unsigned char lepper=0; // ;-)
W jaki sposób na etapie kompilacji dobrać się do adresu leppera?
Czytam, googlam, a rozwiązania nie widzę...
nie wiem czy o to Ci chodzi
& lepper
Nie o to chodzi.
Zadeklarowałem sobie zmienną lepper.
Mam funkcję, która wysyła na port szeregowy zawartość dowolnej komórki
z pamięci RAM. Adres podaję z urządzenia podłączonego przez port
szeregowy. W jaki sposób mam się dowiedzieć w której komórce pamięci
jest lepper?
--
Pozdrawiam,
Patryk Sielski
http://usprawnienia.pl
From: =?ISO-8859-2?Q?G=F3rski_Adam?=
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 15:32:03 +0200
Użytkownik Patryk Sielski napisał:
Andy <anokWYTNIJ_at_nospam_ceti.pl> pisze:
Witam.
Chcę sobie zmieniać pamięć RAM komendami przez port szeregowy.
Wszystko pięknie-ładnie za wyjątkiem tego, że nie wiem,
pod jakim adresem w RAMie kompilator umieścił sobie moją zmienną.
Załóżmy, że jest to
unsigned char lepper=0; // ;-)
W jaki sposób na etapie kompilacji dobrać się do adresu leppera?
Czytam, googlam, a rozwiązania nie widzę...
nie wiem czy o to Ci chodzi
& lepper
Nie o to chodzi.
Zadeklarowałem sobie zmienną lepper.
Mam funkcję, która wysyła na port szeregowy zawartość dowolnej komórki
z pamięci RAM. Adres podaję z urządzenia podłączonego przez port
szeregowy. W jaki sposób mam się dowiedzieć w której komórce pamięci
jest lepper?
Z raportu linkera ?
Adam
From: =?ISO-8859-2?Q?G=F3rski_Adam?=
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 15:30:50 +0200
Użytkownik Andy napisał:
Użytkownik "Patryk Sielski" <psielski-usun_at_nospam_elka-usun.pw.edu.pl> napisał w
wiadomości news:457fe$44993e2f$57ceab2d$22338_at_nospam_news.chello.pl...
Witam.
Chcę sobie zmieniać pamięć RAM komendami przez port szeregowy.
Wszystko pięknie-ładnie za wyjątkiem tego, że nie wiem,
pod jakim adresem w RAMie kompilator umieścił sobie moją zmienną.
Załóżmy, że jest to
unsigned char lepper=0; // ;-)
W jaki sposób na etapie kompilacji dobrać się do adresu leppera?
Czytam, googlam, a rozwiązania nie widzę...
nie wiem czy o to Ci chodzi
& lepper
unsigned char *leper = 0x1234 //Twoj adres w ramie jaki sobie wymarzyłeś
A dostep
*leper = 0x00;
itd.
Adam
From: Patryk Sielski <psielski-usun_at_nospam_elka-usun.pw.edu.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 15:33:02 +0200
Górski Adam <gorskia_at_nospam_.................wp....................pl..................> pisze:
unsigned char *leper = 0x1234 //Twoj adres w ramie jaki sobie wymarzyłeś
Ale ja nie chcę przyznawać adresów, chcę się dowiedzieć jaki adres
kompilator przyznał?
--
Pozdrawiam,
Patryk Sielski
http://usprawnienia.pl
From: "DJ" <djj8_at_nospam_polbox.com>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: 21 Jun 2006 06:38:27 -0700
Patryk Sielski napisa=B3(a):
G=F3rski Adam <gorskia_at_nospam_.................wp....................pl.........=
.=2E.......> pisze:
unsigned char *leper =3D 0x1234 //Twoj adres w ramie jaki sobie wymarzy=
=B3e=B6
Ale ja nie chc=EA przyznawa=E6 adres=F3w, chc=EA si=EA dowiedzie=E6 jaki =
adres
kompilator przyzna=B3?
plik .map
jesli robisz to pod unixem/linuxem to najszybciej:
grep -H lepper *.map
=20
--=20
DJ
From: Patryk Sielski <psielski-usun_at_nospam_elka-usun.pw.edu.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 15:50:31 +0200
DJ <djj8_at_nospam_polbox.com> pisze:
jesli robisz to pod unixem/linuxem to najszybciej:
grep -H lepper *.map
[souti_at_nospam_souti fotocela]$ grep -H lepper *map
[souti_at_nospam_souti fotocela]$
No właśnie tam tego nie ma :-(
--
Pozdrawiam,
Patryk Sielski
http://usprawnienia.pl
From: "Andy" <anokWYTNIJ_at_nospam_ceti.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 16:06:56 +0200
Użytkownik "Patryk Sielski" <psielski-usun_at_nospam_elka-usun.pw.edu.pl> napisał w
wiadomości news:ba645$44994ea7$57ceab2d$9119_at_nospam_news.chello.pl...
DJ <djj8_at_nospam_polbox.com> pisze:
jesli robisz to pod unixem/linuxem to najszybciej:
grep -H lepper *.map
[souti_at_nospam_souti fotocela]$ grep -H lepper *map
[souti_at_nospam_souti fotocela]$
No właśnie tam tego nie ma :-(
Moze to nie jest zmiennna globalna
tylko lokalna w funkcji a taka zmienna
jest zazwyczaj na stosie i nie ma stalego adresu.
--
Andrzej
From: "Jacek M." <tymkonto_at_nospam_poczta.onet.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 16:11:36 +0200
Moze to nie jest zmiennna globalna
tylko lokalna w funkcji a taka zmienna
jest zazwyczaj na stosie i nie ma stalego adresu.
Zakladam, ze autor watku mysli o zmiennych globalnych
Jacekl M.
From: Wojtek Kaniewski <wojtekka_at_nospam_SPAM.SPAM.SPAM>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 16:27:30 +0200
Patryk Sielski napisał(a):
DJ <djj8_at_nospam_polbox.com> pisze:
jesli robisz to pod unixem/linuxem to najszybciej:
grep -H lepper *.map
[souti_at_nospam_souti fotocela]$ grep -H lepper *map
[souti_at_nospam_souti fotocela]$
No właśnie tam tego nie ma :-(
Nie wiem jak tworzysz pliki *.map, ale zakładając, że plikiem wynikowym
linkera jest cośtam.elf, spróbuj:
avr-nm cośtam.elf | grep lepper
w.
From: Patryk Sielski <psielski-usun_at_nospam_elka-usun.pw.edu.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 16:43:06 +0200
Wojtek Kaniewski <wojtekka_at_nospam_spam.spam.spam> pisze:
avr-nm cośtam.elf | grep lepper
Coś tam pokazuje, muszę tylko obczaić co to dokładnie jest .data i .bss
Dzięki - już jestem na tropie.
--
Pozdrawiam,
Patryk Sielski
http://usprawnienia.pl
From: Wojtek Kaniewski <wojtekka_at_nospam_SPAM.SPAM.SPAM>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 18:43:19 +0200
Patryk Sielski napisał(a):
avr-nm cośtam.elf | grep lepper
Coś tam pokazuje, muszę tylko obczaić co to dokładnie jest .data i .bss
Dzięki - już jestem na tropie.
http://www.nongnu.org/avr-libc/user-manual/mem_sections.html
w.
From: "DJ" <djj8_at_nospam_polbox.com>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: 21 Jun 2006 06:45:01 -0700
Patryk Sielski napisa=B3(a):
G=F3rski Adam <gorskia_at_nospam_.................wp....................pl.........=
.=2E.......> pisze:
unsigned char *leper =3D 0x1234 //Twoj adres w ramie jaki sobie wymarzy=
=B3e=B6
Ale ja nie chc=EA przyznawa=E6 adres=F3w, chc=EA si=EA dowiedzie=E6 jaki =
adres
kompilator przyzna=B3?
aha - jeszcze zapomnialem dodac, ze od tak pozyskanego adresu trzeba
odjac pewna stala liczbe, u mnie jest to 0x800000. Pewno bardziej
doswiadczeni w C opisza to bardziej naukowymi slowami :) A i ja chetnie
sie dowiem czym jest to uzasadnione. Relokowanie adresu, czy cos
takiego - poprawcie mnie jesli bredze ;o)
--=20
DJ
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Thu, 22 Jun 2006 00:59:56 +0200
DJ napisał(a):
aha - jeszcze zapomnialem dodac, ze od tak pozyskanego adresu trzeba
odjac pewna stala liczbe, u mnie jest to 0x800000. Pewno bardziej
doswiadczeni w C opisza to bardziej naukowymi slowami :) A i ja chetnie
sie dowiem czym jest to uzasadnione. Relokowanie adresu, czy cos
takiego - poprawcie mnie jesli bredze ;o)
Cały "wynalazek" wynika z tego, że gcc (egcs) jest w sumie dość głupim
kompilatorem znającym tylko jedną "rozdeptaną" liniową przestrzeń
adresową. I nie jest w gruncie rzeczy dopasowany do procesorów o wielu
przestrzeniach adresowych, w których identyczne adresy wskazywałyby na
coś zupełnie innego (np. w procesorach DSP bardzo często jest
rozdzielona pamięć programu i danych, mogą być też 2 niezależne pamięci
danych X i Y). W procesorach AVR mamy właśnie taki przypadek: jest sobie
pamięć programu (Flash) od adresu 0, jest i pamięć danych rozpoczynająca
się od adresu 0 (od 0 leżą tak na prawdę rejestry a SFR i RAM startują
nieco wyżej). No i aby nic się nie pozajączkowało kompilatorowi
wymyślono, że adresy w RAMie będą przesunięte o magiczną stałą 0x800000
a adresy w EEPROMie o 0x810000. Bardzo ładnie to widać w pliku .map:
Memory Configuration
Name Origin Length Attributes
text 0x00000000 0x00020000 xr
data 0x00800060 0x0000ffa0 rw !x
eeprom 0x00810000 0x00010000 rw !x
BTW: Kompilator gcc bardzo dobrze czuje się w środowiskach ze wspólną
przestrzenią adresową, np. procesorach ARM. Tam niepotrzebne jest
jakiekolwiek specjalne przesuwanie RAMu czy Flasha no i procesor może
korzystać z całych 4 GB pamięci (zwykle i tak ogranicza to liczba nóg
adresowych na zewn. interfejsie).
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.
From: J.F. <jfox_xnospamx_at_nospam_poczta.onet.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Thu, 22 Jun 2006 08:35:08 +0200
On Thu, 22 Jun 2006 00:59:56 +0200, Adam Dybkowski wrote:
DJ napisał(a):
aha - jeszcze zapomnialem dodac, ze od tak pozyskanego adresu trzeba
odjac pewna stala liczbe, u mnie jest to 0x800000. Pewno bardziej
doswiadczeni w C opisza to bardziej naukowymi slowami :)
Cały "wynalazek" wynika z tego, że gcc (egcs) jest w sumie dość głupim
kompilatorem znającym tylko jedną "rozdeptaną" liniową przestrzeń
adresową. I nie jest w gruncie rzeczy dopasowany do procesorów o wielu
przestrzeniach adresowych, w których identyczne adresy wskazywałyby na
coś zupełnie innego
Hm, ten wynalazek to pamieta chyba jeszcze bardzo stare unixy i
procesory, gdzie program trzeba bylo podzielic na logiczne segmenty
J.
From: "DJ" <djj8_at_nospam_polbox.com>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: 21 Jun 2006 23:48:01 -0700
Adam Dybkowski napisa=B3(a):
DJ napisa=B3(a):
Ca=B3y "wynalazek" wynika z tego, =BFe gcc (egcs) jest w sumie do=B6=E6 g=
=B3upim
kompilatorem znaj=B1cym tylko jedn=B1 "rozdeptan=B1" liniow=B1 przestrze=
=F1
adresow=B1. I nie jest w gruncie rzeczy dopasowany do procesor=F3w o wielu
przestrzeniach adresowych,
Dzieki za objasneinie :)
Juz o tym czytalem kiedys w manualu od avr-gcc, ale jak przychodzi
wytlumaczyc innym o co chodzi to juz mi nie bardzo idzie ;)
Wlasnie tak patrze tez na swoje .map
data origin 0x00800060
Nie wiem czemu mi sie zdawalo ze to 0x00800000...
Ale patrze tez na .lss i widze ze jednak od adresow jest odjete
0x800000 a nie 0x00800060. O co w tym chodzi? Nie zeby mi cos nie
dzialalo, tylko tak z ciekawosci na to trafilem.
--=20
DJ
From: "T.M.F." <tfrancuz_at_nospam_nospam.mp.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Thu, 22 Jun 2006 09:11:31 +0200
Wlasnie tak patrze tez na swoje .map
data origin 0x00800060
Nie wiem czemu mi sie zdawalo ze to 0x00800000...
Ale patrze tez na .lss i widze ze jednak od adresow jest odjete
0x800000 a nie 0x00800060. O co w tym chodzi? Nie zeby mi cos nie
dzialalo, tylko tak z ciekawosci na to trafilem.
SRAM w AVR nie zaczyna sie od adresu 0, tylko 0x60, przestrzen adresowa
0x00-0x5F zajeta jest przez rejestry procesora i rejestry IO.
--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.
From: Jurek Szczesiul <jerzy.szczesiul_at_nospam_wycin.ep.com.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Thu, 22 Jun 2006 09:20:54 +0200
21 Jun 2006 23:48:01 -0700, na pl.misc.elektronika, DJ napisał(a):
Ale patrze tez na .lss i widze ze jednak od adresow jest odjete
0x800000 a nie 0x00800060. O co w tym chodzi? Nie zeby mi cos nie
dzialalo, tylko tak z ciekawosci na to trafilem.
Cześć.
0x800000 to generalny offset dla przemieszczenia całej pamięci ram atmega
dla potrzeb avr-ld ( jak objeśniono powyżej ). Natomiast 0x60 ( 0x100 ) to
już ulokowanie sekcji .data za obszarem rejestrów i przestrzeni IO
mikrokontrolera i nie jest związane konkretnie z gcc - w asemblerze też
swoje dane zaczynasz dopiero tam umieszczać.
--
Pozdrowienia
Jurek Szczesiul
From: "Jacek M." <tymkonto_at_nospam_poczta.onet.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 15:46:56 +0200
Witam.
Chcę sobie zmieniać pamięć RAM komendami przez port szeregowy.
Wszystko pięknie-ładnie za wyjątkiem tego, że nie wiem,
pod jakim adresem w RAMie kompilator umieścił sobie moją zmienną.
A nie lepiej zrobic to (tak jak sugerujesz przez port szeregowy) tyle, ze
komenda o ustalonym numerze? Wywolujesz przez port funkcje zmiany wartosci
tej zmiennej? W przesylanym przez port rekordzie jest i komenda i nowa
wartosc tej zmiennej a funkcja sama podmienia wartosc na przesylana...
Jacek M.
From: Patryk Sielski <psielski-usun_at_nospam_elka-usun.pw.edu.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 15:49:56 +0200
Jacek M. <tymkonto_at_nospam_poczta.onet.pl> pisze:
Witam.
Chcę sobie zmieniać pamięć RAM komendami przez port szeregowy.
Wszystko pięknie-ładnie za wyjątkiem tego, że nie wiem,
pod jakim adresem w RAMie kompilator umieścił sobie moją zmienną.
A nie lepiej zrobic to (tak jak sugerujesz przez port szeregowy) tyle, ze
komenda o ustalonym numerze? Wywolujesz przez port funkcje zmiany wartosci
tej zmiennej? W przesylanym przez port rekordzie jest i komenda i nowa
wartosc tej zmiennej a funkcja sama podmienia wartosc na przesylana...
To mi da 300 komend... ;-)
--
Pozdrawiam,
Patryk Sielski
http://usprawnienia.pl
From: "Jacek M." <tymkonto_at_nospam_poczta.onet.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 16:09:00 +0200
To mi da 300 komend... ;-)
To zbuduj strukturę w której bedziesz umieszczał adresy tych zmiennych.
Sciagniesz ja jednokrotnie i juz bedziesz miał ich adresy. Zmian dokonasz
jedna komenda.
Jacek M.
From: Patryk Sielski <psielski-usun_at_nospam_elka-usun.pw.edu.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 16:34:34 +0200
Jacek M. <tymkonto_at_nospam_poczta.onet.pl> pisze:
To mi da 300 komend... ;-)
To zbuduj strukturę w której bedziesz umieszczał adresy tych zmiennych.
Sciagniesz ja jednokrotnie i juz bedziesz miał ich adresy. Zmian dokonasz
jedna komenda.
Jacek M.
To prowizorka, ja szukam jakiegoś eleganckiego rozwiązania.
--
Pozdrawiam,
Patryk Sielski
http://usprawnienia.pl
From: "Jacek M." <tymkonto_at_nospam_poczta.onet.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 16:54:53 +0200
To zbuduj strukturę w której bedziesz umieszczał adresy tych zmiennych.
Sciagniesz ja jednokrotnie i juz bedziesz miał ich adresy. Zmian dokonasz
jedna komenda.
Jacek M.
To prowizorka, ja szukam jakiegoś eleganckiego rozwiązania.
Czemu prowizorka? Przynajmniej przy ponownej kompilacji nie bedziesz mial
problemow z powodu zmiany adresu tych zmiennych.
Jacek M.
From: J.F. <jfox_xnospamx_at_nospam_poczta.onet.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 17:43:36 +0200
On Wed, 21 Jun 2006 16:34:34 +0200, Patryk Sielski wrote:
Jacek M. <tymkonto_at_nospam_poczta.onet.pl> pisze:
To mi da 300 komend... ;-)
To zbuduj strukturę w której bedziesz umieszczał adresy tych zmiennych.
Sciagniesz ja jednokrotnie i juz bedziesz miał ich adresy. Zmian dokonasz
jedna komenda.
Jacek M.
To prowizorka, ja szukam jakiegoś eleganckiego rozwiązania.
Zrob unie z tablica i bedziesz mogl numerami zmiennych sie poslugiwac.
J.
From: Patryk Sielski <psielski-usun_at_nospam_elka-usun.pw.edu.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 18:13:32 +0200
J.F. <jfox_xnospamx_at_nospam_poczta.onet.pl> pisze:
Zrob unie z tablica i bedziesz mogl numerami zmiennych sie poslugiwac.
Wole, żeby mi zmienne nie wchodzily do Unii ;-)
Już sobie poradziłem
w pliku .map mam początki sekcji
[souti_at_nospam_souti fotocela]$ grep '\(^.bss\)\|\(^.data\)' fc.map
.data 0x00800060 0x4 load address 0x000006b4
.bss 0x00800064 0x92
[souti_at_nospam_souti fotocela]$
Następnie znajdujemy offset
[souti_at_nospam_souti fotocela]$ avr-nm -n fc.o | grep lepper
00000051 b lepper
[souti_at_nospam_souti fotocela]$
I gotowe.
--
Pozdrawiam,
Patryk Sielski
http://usprawnienia.pl
From: Wojtek Kaniewski <wojtekka_at_nospam_SPAM.SPAM.SPAM>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Wed, 21 Jun 2006 18:53:51 +0200
Patryk Sielski napisał(a):
Następnie znajdujemy offset
[souti_at_nospam_souti fotocela]$ avr-nm -n fc.o | grep lepper
00000051 b lepper
[souti_at_nospam_souti fotocela]$
I gotowe.
To nie tak, avr-nm musisz użyć na pliku wynikowym linkera. To co
dostaniesz z pliku .o to offset w zmiennych tylko jednego modułu. Po
zlinkowaniu wszystkich razem będziesz miał co innego. Weźmy na przykład
plik:
int ala = 1, ma = 2, kota = 3;
int main(void)
{
return 0;
}
Po skompilowaniu źródła do .o dostaniemy:
$ avr-gcc -mmcu=atmega8 test.c -c -o test.o
$ avr-nm test.o | grep '\(ala\|ma\|kota\)'
00000000 D ala
00000004 D kota
00000002 D ma
00000000 T main
A po zlinkowaniu:
$ avr-gcc -mmcu=atmega8 test.o -o test
$ avr-nm test | grep '\(ala\|ma\|kota\)'
00800060 D ala
00800064 D kota
00800062 D ma
Gdybyśmy dodali jeszcze inne moduły, to może wyjść coś takiego:
$ avr-gcc -mmcu=atmega8 bla.o test.o -o test
$ avr-nm test | grep '\(ala\|ma\|kota\)'
00800064 D ala
00800068 D kota
00800066 D ma
Dlatego lepiej nie dodawaj offsetów, tylko bierz z wynikowej binarki.
w.
From: Marcin Stanisz <mstanisz_at_nospam_poczta.bzdury.onet.pl>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: Thu, 22 Jun 2006 09:37:01 +0200
Dnia Wed, 21 Jun 2006 18:53:51 +0200, Wojtek Kaniewski napisał(a):
Dlatego lepiej nie dodawaj offsetów, tylko bierz z wynikowej binarki.
A nie lepiej zadeklarować własny segment i umieścić go w dobrze określonym
miejscu? Bo tak to co kompilacja trzeba sprawdzać - linker może nawywijać,
co chce :)
Pozdrawiam
Marcin Stanisz
--
"A lie will go round the world before the truth has got its boots on"
Terry Pratchett, "Truth"
From: "DJ" <djj8_at_nospam_polbox.com>
Subject: Re: Adresy zmiennych w AVR-GCC
Date: 21 Jun 2006 07:13:23 -0700
Patryk Sielski napisa=B3(a):
To mi da 300 komend... ;-)
OK, to zrob metoda z wysylaniem adresu, jednak tak czy inaczej
powinienes zrobic ramke i CRC dodac, bo w przypadku bledow transmisji
moze Ci sie wywalic caly program (kiedy zmodyfikuje jakas inna
przypadkowa lokalizacje RAM.
--=20
DJ