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
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.
Zur Frage. Beim kooperativen OS werden die Task nur bei einem Wait() gewechselt. Dh in der Tat braucht man nur bei den Interrupts aufzupassen.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.