Jak umieścić procedury w konkretnym obszarze pamięci Flash przy AVRgcc?
ATMega, AVRgcc i adresy procedur
From: "pawel_k" <nospam_at_nospam_nospam.com>
Subject: ATMega, AVRgcc i adresy procedur
Date: Sun, 9 Nov 2003 01:04:55 +0100
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
========
Path: news-archive.icm.edu.pl!news.rmf.pl!poznan.rmf.pl!news.man.poznan.pl!news.internetia.pl!newsfeed.gazeta.pl!news.vectranet.pl!news.bsk.vectranet.pl!not-for-mai
From: "Piotr Grygorczuk" <grygorpl_at_nospam_poczta.onet.pl>
Subject: Re: ATMega, AVRgcc i adresy procedur
Date: Sun, 9 Nov 2003 14:09:30 +0100
"pawel_k" <nospam_at_nospam_nospam.com> wrote in message
news:bok0gn$k4i$1_at_nospam_nemesis.news.tpi.pl...
Witam,
czy korzystając z AVRgcc można na kompilatorze wymusić, aby pewne
procedury
były umieszczone w konkretnym obszarze pamięci Flash?
Poczytaj o ' _attribute_'. Chodzi mi po glowie, ze wlasnie przy tym gdzies
widzialem to o co Ci chodzi.
pg
========
Path: news-archive.icm.edu.pl!news.rmf.pl!poznan.rmf.pl!news.man.poznan.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "JeSzcz" <jerzy.szczesiul_at_nospam_ep.com.pl.remove>
Subject: Re: ATMega, AVRgcc i adresy procedur
Date: Sun, 9 Nov 2003 17:26:05 +0100
Czesc
Użytkownik "pawel_k" <nospam_at_nospam_nospam.com> napisał w wiadomości
news:bok0gn$k4i$1_at_nospam_nemesis.news.tpi.pl...
czy korzystając z AVRgcc można na kompilatorze wymusić, aby pewne
procedury
były umieszczone w konkretnym obszarze pamięci Flash?
Najlepiej wez opis avr-libc z
http://savannah.nongnu.org/projects/avr-libc/
- 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.
--
Pozdrowienia
Jurek Szczesiul
========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "pawel_k" <nospam_at_nospam_nospam.com>
Subject: Re: ATMega, AVRgcc i adresy procedur
Date: Wed, 12 Nov 2003 00:59:24 +0100
Użytkownik "JeSzcz" <jerzy.szczesiul_at_nospam_ep.com.pl.remove> napisał w wiadomości
news:bolqho$hud$1_at_nospam_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
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Jurek Szczesiul" <jerzy.szczesiul_at_nospam_ep.com.pl.remove>
Subject: Re: ATMega, AVRgcc i adresy procedur
Date: Wed, 12 Nov 2003 09:14:14 +0100
Użytkownik "pawel_k" <nospam_at_nospam_nospam.com> napisał w wiadomości
news:bort6u$s14$1_at_nospam_atlantis.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.
Hm, do tego jest standardowy mechanizm - wlasnie z uzyciem
linkera i bibliotek *.a . Tworzenie wlasnych sposobow to IMHO
dodawanie sobie roboty.
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.
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.
--
Pozdrowienia
Jurek Szczesiul
========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!news.task.gda.pl!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "pawel_k" <nospam_at_nospam_nospam.com>
Subject: Re: ATMega, AVRgcc i adresy procedur
Date: Wed, 12 Nov 2003 22:53:54 +0100
Użytkownik "Jurek Szczesiul" <jerzy.szczesiul_at_nospam_ep.com.pl.remove> napisał w
wiadomości news:bosq7e$qku$1_at_nospam_nemesis.news.tpi.pl...
Użytkownik "pawel_k" <nospam_at_nospam_nospam.com> napisał w wiadomości
news:bort6u$s14$1_at_nospam_atlantis.news.tpi.pl...
to jednak proponuje gotowe
sposoby.
Dzięki za radę, pewnie zastosuję sprawdzone rozwiązania.
PK
========
Message-ID: <bol32g.i4.1_at_nospam_rallyonline.pl>
Organization: rallyonline.pl
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20031007 Hamster/2.0.0.0
X-Accept-Language: en-us, en
MIME-Version: 1.0
Newsgroups: pl.misc.elektronika
Subject: LPT w C++ 6
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-City: Przysiecz
X-WWW: rallyonline.p
From: "drozdu" <lbajger_at_nospam_wp.pl>
Subject: Odp: ATMega, AVRgcc i adresy procedur
Date: Sun, 9 Nov 2003 12:12:45 +0100
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
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai