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
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
- 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
PU¿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
Have something to add? Share your thoughts — no account required.
Ask the community — no account required