Zumindest beim letzen Mal, als ich mir das NXP code-bundle angeschaut
habe, war es für ARM Realview-Compiler/Tools (enthalten in halbwegs
aktuellen Keil RV-MDK). Für GNU-tools sind Anpassungen erforderlich zum
Interrupthandling. Gibt ein paar Möglichkeiten:
(1) direkter Spung im Core-IRQ-Vector auf die VIC-Vector-Addresse und
ergänzen des IRQ Attributes zur ISR. Beispiele z.B. in eingen Codes von
Analog Devices. Entspricht der Vorgehensweise bei KeilView und IAR nur
wird __irq "ersetzt"). GNU IRQ-Attribute funktioniert aber
möglicherweise nicht in allen Lebenslagen. daher:
(2) direkter Spung wie oben, allerdings ISR mit "naked" attribute und
sich um den Offset von PC und Sicherung/Rücksicherung von Registers (und
evtl. "nesting") selbst kümmern (per Macro). Beispiele dazu gibt es
einige, z.B. das UART-Beispiel von Bill Knight im Dateibereich der
LPC2000 Yahoo-Gruppe. Sieht nicht hübsch aus und ist auch schlecht
portierbar, daher:
(3) Core-IRQ springt auf eine Assembler-"Wrapper", im Wrapper: einige
Register sichern, evtl. nesting, ISR C-Funktion rufen
(VIC-Vector-Addresse), Register rücksichern, Rücksprungaddresse
anpassen, Rücksprung. Beispiel in vielen Codes von Atmel (für AT91 AIC,
lässt sich an ARM/NXP VIC im LPC23xx/24xx anpassen) und leicht
abgewandlert in Beispiel für STR7 von Anglia Designs.
Mglw. findet sich in meinem "Zeug" ein wenig Inspiration:
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/
Hoffe, es hilf
Martin Thomas