mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik wozu braucht man eigentlich software interrupts?


Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, kann mir vielleicht jemand sagen wozu Software Interrupts gut sein 
sollen weil davon immer in diversen Tutorials und Büchern ganz groß 
geredet wird.

mfg Paul H.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Softwareinterrupts sind wie stinknormale Funktionsaufrufe, braucht man 
also auf MCs überhaupt nicht.

Sie sind nur auf CPUs mit Betriebssystem und verschiedenen 
Ausführungsleveln sinnvoll, um API-Funktionen aufzurufen.
Der einzige Unterschied zu normalen Funktionsaufrufen ist dann der, daß 
sie wie Interrupts mit höheren Zugriffsrechten laufen. Daher heißen sie 
fälschlicher Weise Interrupts.

Es sind aber keine Interrupts, die das Hauptprogramm zufällig 
unterbrechen können, sondern Unterfunktionen, die eben nur an den 
Stellen ausgeführt werden, an denen sie explizit aufgerufen werden.

Es können also wie bei Funktionen Parameter übergeben werden und es sind 
keine gekapselten Zugriffe auf gemeinsame Variablen notwendig.


Peter

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Softwareinterrupts werden bei CPUs z.B. verwendet, um 
Betriebssystemfunktionen aufzurufen. Natürlich könnte man das auch über 
Unterfunktionsaufrufe lösen, aber je nach Architektur nimmt einem die 
Hardware bei einem Softwareinterrupt manche Verwaltungstätigkeiten 
(Kontext sichern, in einen höher privegierten Betriebsmodus 
umschalten...) ab, die man für einen Betriebssystemaufruf erledigt haben 
möchte.

Bei einem kleinen uC ohne Betriebssystem halte ich Softwareinterrupts 
hingegen nicht für notwendig, auch wenn es auch dort Architekturen gibt, 
die sowas implementieren.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ne, ganz so einfach ist das nicht. Allerdings findet man auf den ganz 
einfachen MCs tatsächlich keine.
Könnte z.B. sein:
-unbekannter instruction-code
-Division durch 0
-fehlerhafte FP-Operation(NaN, +INF, -INF)
-diverse "verbotene" Speicherzugriffe (z.B. stack under/overflow)
Gibt noch ein paar andere sinnvolle Möglichkeiten

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Software-Interrupts werden zur Vermeidung dieser Verwirrung manchmal 
auch Software-Traps genannt. Durchgeführt werden sie von speziellen 
Befehlen und es wird zunächst ein Trap-Handler aufgerufen, der abhängig 
von weiterem Inhalt des Trap-Befehls oder eines Registers weiter 
verzweigen kann. Darin wird meist die Nummer einer Funktion angegeben, 
nicht deren Adresse.

In Betriebssystemen werden solche Traps für den Aufrufe der 
Betriebssystemfunktionen verwendet, weil das aufrufende Programm im 
Anwendermodus arbeitet, die Betriebssystemfunktionen jedoch im 
privilegierten Modus.

Ohne Betriebssystem findet man das manchmal auf ARMs. Sofern nämlich das 
Hauptprogramm im nichtprivilegierten Modus läuft. Dann müssen Traps für 
einzelne privilegierte Funktionen implementiert sein, wie 
Ein/Ausschalten von Interrupts. Geschmacksfrage, manche schwören drauf, 
ich halte das in einer betriebssystemfreien Umgebung für sinnlos.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> -unbekannter instruction-code
> -Division durch 0
> -fehlerhafte FP-Operation(NaN, +INF, -INF)
> -diverse "verbotene" Speicherzugriffe (z.B. stack under/overflow)
> Gibt noch ein paar andere sinnvolle Möglichkeiten

Das sind keine Software-Interrupts/Traps sondern Hardware-Traps. Zum 
Software-Interrupt/Trap wird es durch Vorsatz und dafür vorgesehene 
Befehle.

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.