ATMega, AVRgcc i adresy procedur

Nov 09, 2003 6 Replies

Witam,



czy korzystaj±c z AVRgcc mo¿na na kompilatorze wymusiæ, aby pewne procedury by³y umieszczone w konkretnym obszarze pamiêci Flash?



pozdrawiam



pk



Moze tak:

asm (".section .name");

no i chyba modyfikacja linker scripta (poczytaj dokumentacje dla avr-ld) i obejzyj sobie skrypty w katalogu gcc.

pozdr. LB

Poczytaj o '__attribute__'. Chodzi mi po glowie, ze wlasnie przy tym gdzies widzialem to o co Ci chodzi.

pg

Czesc U¿ytkownik "pawel_k" snipped-for-privacy@nospam.com napisa³ w wiadomo¶ci news:bok0gn$k4i$ snipped-for-privacy@nemesis.news.tpi.pl...

Najlepiej wez opis avr-libc z

formatting link

- tam jest na to nawet przyklad w FAQ

( w deklaracji funkcji przypisujesz ja do konkretnego obszaru - sekcji dyrektywa attribute, np

#define MYSECTION __attribute__ ((section (".mysection"))) void foo(void) MYSECTION; void foo(void) { asm volatile("nop"); }

a w opcjach linkera dodajesz adres startowy sekcji ( np. przykladowe opcje

-Wl,-Map=simple.map,--cref,--section-start=.mysection=0x200 )

AFAIK nie mozna tego robic bez zadnych ograniczen- sekcje nie moga sie mieszac. Czyli linker nie zrobi np. tak, ze w calym podstawowym kodzie programu kilka wybranych funkcji ulokuje pod konkretnymi okreslonymi adresami a reszte sobie dookola dopasuje.

U¿ytkownik "JeSzcz" snipped-for-privacy@ep.com.pl.remove> napisa³ w wiadomo¶ci news:bolqho$hud$ snipped-for-privacy@nemesis.news.tpi.pl...

Dziêki za wskazówkê. Chcê zrobiæ co¶ w rodzaju biblioteki DLL. Chcê j± umieszczaæ zawsze w tym samym miejscu. Klient bêdzie móg³ wywo³ywaæ ze swojego programu. Wola³bym nie robiæ tego z poziomu linkera. Czy mo¿na zrobiæ tak, ¿e bêd± wgrywane dwa pliki HEX: klienta, który bêdzie odwo³ywa³ siê do mojej funkcji i mój który tê funkcjê bêdzie umieszcza³ w uzgodnionym wcze¶niej miejscu. Przepraszam je¶li moje pytanie jest g³upie ;-).

pozdrawiam

P

U¿ytkownik "pawel_k" snipped-for-privacy@nospam.com napisa³ w wiadomo¶ci news:bort6u$s14$ snipped-for-privacy@atlantis.news.tpi.pl...

Chcê j±

wywo³ywaæ ze

Hm, do tego jest standardowy mechanizm - wlasnie z uzyciem linkera i bibliotek *.a . Tworzenie wlasnych sposobow to IMHO dodawanie sobie roboty.

Jasne , ze mozna - to kwestia softu dla programatora. Tylko nadal pozostaja klopoty : linker nic nie wie o funkcjach w drugim hex, wiec program glowny musi znac adres kazdej funkcji i wywolywac ja bezposrednio; trzeba tez juz calkiem samodzielnie sprawdzac czy drugi hex nie nadpisuje gdzies podstawowego. Zmienisz wersje biblioteki , adresy sie przesuna - i program glowny do przepisywania. Wiec potencjalny klient moze nie bardzo sie z tych udogodnien cieszyc ;-)

Jesli stala lokalizacja jest naprawde niezbedna ( chyba tylko przy umieszczeniu biblioteki na konkretnej stronie flasha dla umozliwienia przeladowania ) to jednak proponuje gotowe sposoby.

U¿ytkownik "Jurek Szczesiul" snipped-for-privacy@ep.com.pl.remove> napisa³ w wiadomo¶ci news:bosq7e$qku$ snipped-for-privacy@nemesis.news.tpi.pl...

Dziêki za radê, pewnie zastosujê sprawdzone rozwi±zania.

PK

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required