Nested Interrupts mit Keil µVision mit RealView?

Gast #599355
Lesenswert?
• ▲
▼
Hallo ARM-Gemeinde,

im Laufe der Woche gab es im Thread

Beitrag "Interrupts"

eine Frage zum Compiler-Umstieg bei Keil von komfortablen CARM (der im 
Dezember 2005 von Keil eingestellt wurde) auf RealView für ARM (der neue 
bei Keil, von ARM übernommen, Keil hat sich Ende 2005 bei ARM eingekauft 
bzw. wurde von ARM gekauft), der ab diesem Zeitpunkt unter Keil µVision 
verwendet wird.

Dort hatte ich eine Lösung gepostet, wie man die 
Nested-Interrupt-Technik unter RealView weiterhin anwenden kann, da 
unter RealView die Inline-Assembler-Makros aus den bekannten 
Hitex-Examples zum Umschalten nicht mehr funktionieren. RealView 
verhindert zuverlässig den Zugriff auf die dafür wichtigen Register R13 
(SP), R14 (LR) und R15 (PC) aus C-Sourcefiles, auch unter 
Inline-Assembler. Unter RealView geht sowas nur noch in reiner 
Assemblerprogrammierung in so genanntem Embedded Assembler. Aber, das 
ist nicht mehr das Problem, da gelöst.

Diese Sache betrifft also nach wie vor anscheinend nicht nur mich, der 
bereits ein Software-Projekt in tagelanger Arbeit von CARM nach RealView 
umgebaut hat.

Bis heute habe ich im Internet keine Ersatzlösung für die Makros 
gefunden, und bin nach einigen Überlegungen darauf gekommen, diese 
letztendlich in Assembler selbst zu schreiben. Dazu habe ich die Makros 
genommen und sie zu Funktionen umgebaut, die natürlich nicht mehr ganz 
so komfortabel sind wie die Makros, da sie zwangsläufig etwas mehr Code 
und Laufzeit haben (Funktionsaufruf, zusätzliche Verwendung und 
Sicherung eines Registers, denn die Returnadresse der Funktionen muß 
über die Prozessor-Mode-Umschaltung hinweg erhalten bleiben).

Das Assembler-File ist hier direkt downloadbar und in die µVision 
einbindbar, damit die Funktionen aus einem Interrupt heraus sofort 
aufrufbar. Eingesetzt in das Nested Interrupt Example von Hitex, 
funktioniert das auf meinem Keil-Demo-Board MCB2100 wunderbar.

Wer möchte mit mir mal verifizieren, ob das alles so in Ordnung ist? 
Und, wie weit arbeitet der VIC-Controller in den LPC21xx und LPC22xx 
(PL190 von ARM) mit Nested Interrupts zusammen?

Hat mal jemand einen Interrupt-Prioritäts-Handler in Software 
geschrieben, der verschiedene Interrupt-Prioritäts-Ebenen behandeln 
kann, wie sie in anderen Mikrocontrollern als Hardware (z.B. 80C515, 
80C517, C166) implementiert sind?

Wenn nicht, weiß noch jemand ein gutes ARM-Forum auch für ARM7, außer 
'YAHOO LPC2000' oder 'Keil'?

Gruß

Dietmar
Angehängte Dateien:

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.