Interrupt beim ARM

Gast #361687
Lesenswert?
• ▲
▼
Hallo miteinander,
bezug nehmend auf meinen letzte Frage habe ich mir das BlinkyIRQ
Programm angeschaut und für den lpc2148 den ich verwende umgebastelt.
Leider will es aber nicht so wie ich, und ich habe auch keine Ideen
mehr woran es liegen könnte. Ich habe den Code mal dazugelegt, sollte
die Startup.S noch benötigt werden, die kann ich nachreichen. Ich habe
da aber eine vorgefertigte verwendet.
Mein Problem ist, das der Code ordentlich compiliert wird, und auch
ausgeführt. Aber scheinbar wird die ISR nur einmal aufgerufen und dann
passiert nix mehr. Leider habe ich keinen (noch nicht) Debugger, ich
kann das Problem also nicht weiter spezifizieren. Wenn jemanden ein
Fehler im Code auffällt, er eine Idee hat, die mir weiterhilft, oder
ein funktionierendes Bsp-Programm, ich bin für jede Hilfe dankbar.

botro
Angehängte Dateien:
Gast #361690
Lesenswert?
• ▲
▼
Die von mir modifizierte Startup.S nutzt einen "Assembler-Wrapper"
fuer die Interrupts. Das Attribute fuer ISR ist nicht erforderlich, da
es keine wirkliche ISR mehr ist, sondern vom "Wrapper" gerufen wird.
Diese Methode vermeidet einige moegliche Probleme mit dem arm-elf-gcc
und hat die Portierung des Philips-Codes von "Keil" nach "GNU"
erleichtert. Assembler-Wrapper und Attribute zusammen duerften Probleme
bereiten. Attribute IRQ und thumb-interwork koennen ebenfalls Ursache
fuer Fehlfunktion sein. Im zip-Archiv aus dem die gezeigte Startup.S
herauskopiert ist finden sich auch Beispiele fuer Timer und diverse
andere Interrupts (GNU-Portierung des Philips-Codes auf
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/lpc2k_bundle_port/
)

Martin Thomas
Gast #361691
Lesenswert?
• ▲
▼
@botro:

Das Blinky IRQ Beispiel gilt für das Keil MCB2100 Board mit LPC2129,
funktioniert unter µVision3 mit GCC oder Keil Toolchain. Womöglich mußt
du da noch die eine oder andere Anpassung zum LPC2148 und dessen
Hardware (anderes Board) in der Demo-Software vornehmen.

Übrigens, die Startup-Dateien von Keil unterscheiden sich im Grunde nur
in der Syntax zwischen GCC und Keil, jedoch nicht im Code.

@Martin:

"Assembler-Wrapper", ist doch kein Echtzeit-Interrupt mehr, oder???

Für die Philips LPC gibt es mittlerweile mindestens 5-10 Toolchains,
alleine bei Keil schon 3 (erst GCC, dann Keil, jetzt RealView von ARM
übernommen). Da entsteht bei Fragen und Erklärungen anscheinend ein
echtes Problem.

Gruß

Dietmar
Gast #361692
Lesenswert?
• ▲
▼
Also, ich habe mir jetzt nochmal das Beispiel für die Timer angeschaut,
es ein wenig umgeschrieben für meine Hardware, und siehe da, es geht.
Ach verwende jetzt die vorgefertigten Funktionen aus irq.c (geringfügig
geändert) und timer.c und inzwischen verstehe ich auch was dort gemacht
wird. Irgendwann stehe ich im Code soweit drin, dass ich auch
vollständig kapiere was in der Startup alles gemacht wird und dann kann
ich ja mein obiges vorhaben nochmal starten.
Vielen Dank erstmal und meine nächste Frage kommt bestimmt.

botro

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.