Forum: Mikrocontroller und Digitale Elektronik preemptive und Interrupt


von Owen S. (senmeis)


Lesenswert?

Hallo,

es gibt zwei Software-Module auf einem XC164: Applikation und 
Kommunikation. Das RTOS RTX166 Tiny wird dafür eingesetzt. Zwei 
Mitarbeiter sollen jeweils an einem Modul arbeiten. Der initiale Wunsch 
ist eine Trennung der Entwicklung dieser beiden Mitarbeiter. D.h. einer 
konzentriert sich nur auf Applikation und der andere nur auf 
Kommunikation. Dieses RTOS ist nicht preemptive. Ich verstehe dies wie 
folgt:
Befehle können nicht von anderen Interrupt abgebrochen werden. Ist das 
korrekt?

Wenn so ist, braucht man sich um die Integrietät der Variablen nicht zu 
kümmern.

MfG
Senmeis

von Hc Z. (mizch)


Lesenswert?

Befehle können vom Interrupt wie üblich unterbrochen (nie "abgebrochen" 
- wie kommst Du darauf?) werden, präemptiv oder nicht.

Ein präemptives OS würde erkennen, ob ein Prozess auf das 
Interrupt-Ereignis wartet.  Falls ja, wird es nach Bearbeitung des 
Interrupts die momentane Zeitscheibe dem bisher laufenden Prozess 
entziehen und dem Prozess zuteilen, der darauf gewartet hat.

Beim nicht präemptiven OS läuft die Zeitverteilung weiter, als wäre 
nichts geschehen.  Der wartende Prozess kann erst auf das Ereignis 
reagieren, wenn er in der normalen Zeitscheiben-Reihenfolge wieder dran 
ist.

von Purzel H. (hacky)


Lesenswert?

Zur Frage. Beim kooperativen OS werden die Task nur bei einem Wait() 
gewechselt. Dh in der Tat braucht man nur bei den Interrupts 
aufzupassen.

von Hc Z. (mizch)


Lesenswert?

Präemptiv und kooperativ haben aber wenig miteinander zu tun.  Natürlich 
wird ein kooperatives OS nie präemptiv sein, aber das ist schon alles. 
Vom kooperativen OS schrieb der TE aber nichts, sondern vom 
nicht-präemptiven RTOS.

Und ich frage mich auch schon bei einem nicht-präemptiven RTOS, wofür 
das „RT" überhaupt steht.  Beim kooperativen wäre es dann endgültig 
daneben.

von Owen S. (senmeis)


Lesenswert?

Vielen Dank für die Erklärungen.

Eigentlich haben wir bereits alle nötigen Treiber für die 
Kommunikationsseite (CAN um genau zu sein) fertiggeschrieben. Nun denke 
ich mal muss das RTOS das CAN Treiben übernehmen. D.h. unser Treiber 
muss neu angepasst werden. Wie aufwendig ist diese Anpassung?

MfG
Senmeis

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.