mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage ARM7 Interrupt


Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bin gerade ein Buch über ARM7s am lesen, und da gibt es eine Sache, die 
ich nicht so ganz verstehe: In dem Buch steht, dass bei einer Exception 
ZUERST PC in LR gespeichert und ERST DANN in den entsprechenden 
Exception-Modus gewechselt wird. Aber wodurch ist es sichergestellt, 
dass im LR des vorherigen Modus' nichts "wertvolles" drinstand? Oder ist 
das falsch und es wird doch erst der Modus gewechselt und der neue LR 
verwendet?

MfG Mark

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weiss nicht wo das steht, es ist aber falsch. Die Return-Adresse landet 
im LR vom IRQ/FIQ Kontext.

Das Problem allerdings bleibt dennoch erhalten. Bei nested Interrupts 
nämlich, die wegen dieses zweifelhaften Interrupt-Verfahrens eher 
kompliziert ablaufen müssen.

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die richtige Erklärung!

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. wrote:
> Weiss nicht wo das steht, es ist aber falsch. Die Return-Adresse landet
> im LR vom IRQ/FIQ Kontext.

Genaugenommen ist die Reihenfolge egal, solange sichergestellt ist, dass 
in jedem Fall das lr des künftigen Modes verwendet wird.

> Das Problem allerdings bleibt dennoch erhalten. Bei nested Interrupts
> nämlich, die wegen dieses zweifelhaften Interrupt-Verfahrens eher
> kompliziert ablaufen müssen.

Nested interrupts auf ARM Cores != Cortex-Mx (v7M, bzw. v6M) sind nur 
deswegen zweifelhaft, weil sie so bescheiden implementiert sind. Da 
braucht der Code zum Sichern des Kontexts unter Umständen länger als die 
Interrupt Routine selbst. Aber eben nur manchmal.

Gruß
Marcus

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wobei v6-M eigentlich gar keine Nested Interrupts unterstützt...

--
Marcus

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcus Harnisch wrote:

> Genaugenommen ist die Reihenfolge egal, solange sichergestellt ist, dass
> in jedem Fall das lr des künftigen Modes verwendet wird.

Wessen Haare willst du hier eigentlich spalten? ;-)

> Nested interrupts auf ARM Cores != Cortex-Mx (v7M, bzw. v6M) sind nur
> deswegen zweifelhaft, weil sie so bescheiden implementiert sind.

Jo, aber da rennst du grad offene Türen ein, denn mit dem zweifelhaften 
Verfahren meinte ich das Interrupt-Konzept von ursprünglichen ARM, nicht 
nested Interrupts als solche. Gegen die habe ich nix.

Es geht hier ausserdem um ARM7, nicht ARMv7.

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. wrote:
> Marcus Harnisch wrote:
>
>> Genaugenommen ist die Reihenfolge egal, solange sichergestellt ist, dass
>> in jedem Fall das lr des künftigen Modes verwendet wird.
>
> Wessen Haare willst du hier eigentlich spalten? ;-)

Nun ja es ist nicht ganz so haarspalterisch wie es auf den ersten Blick 
scheint: Würde man zuerst den Mode wechseln müssen um auf die banked 
Register zugreifen zu können, wie würde beim Interrupt entry dann das 
CPSR des vorherigen Modes ins SPSR_irq retten?

Man sollte sich eben nicht zu sehr an einer zeitlichen Reihenfolge 
festhalten.

> Es geht hier ausserdem um ARM7, nicht ARMv7.

Schon klar. Aber hätte ich allgemein von "bescheidener Implementierung" 
und "ARM" gesprochen, dann hätte hier gleich der nächste Haarspalter 
vorgesprochen 8-)

Gruß
Marcus

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.