Verständnisfrage ARM7 Interrupt

OP #1014798
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
#1014804
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.
Persönliche Seite #1015594
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
#1015678
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.
Persönliche Seite #1016144
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.