GCC pro mikrokontroléry
H8S/26xx
Úvod
V souvislosti s množícími se problémy s instalací
vývojového prostředí HEW pro mikrokontroléry Hitachi
(problémy patrně nepůsobí samotný HEW ale spíše způsob
jeho použití v UL404) je od 5.4.2002 v UL404 pro
mikrokontroléry Hitachi instalován překladač gcc. Jeho
použití se týkají následující poznámky.
Umístění souborů
Překladač gcc je na všech počítačích umístěn v
adresáři c:\EVB2633\cygnus . V adresáři demo
je ukázkový příklad vypracovaný J. Dohnalem. Tento příklad
demonstruje základní techniky psaní programů pro H8S/26xx.
Překlad a sestavení programu
- V adresáři demo je soubor gnupro.bat,
který je vhodné spustit před použitím překladače.
Soubor nastaví cestu PATH k souborům překladače.
- Soubor makefile v tomtéž adresáři
naznačuje způsob sestavení programu. Kromě vlastních
programových modulů je nutné k programu přidat
inicializační modul startup.o a modul
pro přesměrování přerušení vect.o
. Oba soubory (autor opět J.D.) jsou též v adresáři demo.
Umístění programu v paměti vývojového modulu
EVB2633F je nutné přesně rozvrhnout s ohledem na mapu
adresního prostoru. Proto je vhodné použít
sestavovací skript evb2633.ld, který
je též k dispozici.
- Jazyk C pro překladač gcc má některé syntaktické
odchylky od IAR C používaného v HEW:
- nelze přímo definovat jednotlivé
bity v SFR,
- obslužné procedury přerušení se
definují jiným způsobem (viz ukázkový
program),
- ...
Ladění
Výstupem překladače je soubor .out ve
formátu COFF. Pro zavedení programu do paměti vývojového
modulu a jeho ladění lze použít standardní program Hitachi_Debugging_Interface_[EVB2633],
který je součástí Hitachi_Embeded_Workshop. (Menu File - Load Program - Browse,
nastavit COFF files
(*.out) atd. ).
Obsluha přerušení
Při práci s přerušeními je nutné
respektovat následující skutečnosti:
- Mikrokontroléry H8S/26xx používají pro
obsluhu přerušení vektory uložené na dolních
adresách paměti. Ve vývojovém modulu EVB2633F je tento paměťový prostor pokryt interní
pamětí Flash, ve které je standardní monitor HDI-M.
- Aplikační programy jsou zaváděny do
vnější paměti RAM, která začíná na adrese 200
000h. Monitor HDI-M nastavuje standardně přerušovací
vektory na hodnotu <adresa_vektoru> + 200000h, tj.
na začátek vnější paměti RAM. Při obsluze
přerušení proto procesor vyvolá podprogram na adrese
<adresa_vektoru> + 200000h. Vhodné je na tuto
adresu vložit instrukci skoku (jmp) na vstupní bod
obslužného programu přerušení.
- V ukázkovém programu je pro tyto účely
použit modul vect.o, (viz též
zdrojovou formu vect.s) který musí
být linkerem umístěn na adresu 200000h. Pro
jednotlivá přerušení jsou v tomto modulu skoky na
implicitní obslužný program _int_error.
Samostatný obslužný program mají pouze přerušení TGI0A
a IRQ0 (viz soubor hlavni.c).
Pro správnou obsluhu přerušení je proto
nutné udělat následující:
- Definovat obslužnou proceduru, např. pro
proceduru s názvem "i_service":
void
i_service(void) __attribute__ ((interrupt_handler));
void i_service(void) {
. . .
} .
- Upravit soubor vect.s
tak, že na pozici odpovídající danému
přerušovacímu vektoru nahradíme původní cílovou
adresu ve skokové instrukci:
jmp
@_i_service .
- Program
přeložíme a sestavíme s použitím linkovacího
skriptu evb2633.ld .

Obr.
1 Situace při obsluze přerušení
K dispozici je následující:
Rozšiřující desky pro EVB2633F:
Poslední změna stránky byla provedena 09.04.2002