Dieses Betriebssystem erstellte während einer Klassenzuordnung. Der Code ist experimentell und stark ungetestet, sollte aber funktionieren.
Das Betriebssystem verwendet einen sehr einfachen Round -Robin -Scheduler und führt alle 262144 Taktzyklen durch einen Kontextschalter. Dieses Verhalten ist kontrollierbar, indem OCR0A und die Prescaler von Timer0 festgelegt werden. Sie können Timer0 in Ihrer Anwendung nicht verwenden, es wird ausschließlich vom Scheduler verwendet.
Setzen Sie einfach die Dateien mit os Betriebssystem in Ihr Projekt ein. Bearbeiten Sie os_config.h , um Ihren Anforderungen zu entsprechen. Rufen Sie von Ihrem Haupt an os_init() an und erstellen Sie Ihre Aufgaben mit os_task_add(task_func, task_data) . Um den Scheduler zu starten, rufen Sie os_run() an. Beachten Sie, dass dieser Anruf niemals zurückgibt, sodass der nachfolgende Code nicht ausgeführt wird.
Bitte beachten Sie, dass Aufgaben derzeit nie enden und mit os_current_task_kill() beendet werden müssen . Um auf den void-peinstreifen, der an os_task_add gegeben wurde, rufen Sie os_current_task_get_data() auf.
Bitte versuchen Sie nicht, Rekursion oder tiefe Anrufstapel zu verwenden, da Sie nur einen sehr begrenzten Stapel haben. Sie dürfen Timer0 nicht verwenden, da es für den Scheduler verwendet wird! Versuchen Sie nicht, Interrupts zu wiederholen, wenn Sie benutzerdefinierte Interrupt -Service -Routinen verwenden!
Das Betriebssystem kann zur Kompilierung mit den folgenden Define-Macros in os_config.h konfiguriert werden:
OS_STACK_SIZE steuert die Stapelgröße für eine Aufgabe.OS_TASK_COUNT steuert, wie viele Aufgaben gleichzeitig erstellt werden können . Copyright 2020 Stephan Brunner
Die Erlaubnis wird hiermit einer Person, die eine Kopie dieser Software und zugehörigen Dokumentationsdateien (der "Software") erhält, kostenlos erteilt, um die Software ohne Einschränkung zu behandeln, einschließlich ohne Einschränkung der Rechte, zu verwenden, zu kopieren, zu modifizieren, zusammenzufassen, zu veröffentlichen, zu veröffentlichen, zu verteilen, zu verteilt, und/oder Kopien der Software zu ermöglichen, um Personen zu beanstanden, an denen die Software zugänglich ist.
Die oben genannte Copyright -Mitteilung und diese Erlaubnisbekanntmachung müssen in alle Kopien oder wesentlichen Teile der Software enthalten sein.
Die Software wird "wie es ist" ohne Garantie jeglicher Art, ausdrücklich oder stillschweigend bereitgestellt, einschließlich, aber nicht beschränkt auf die Gewährleistung der Handelsfähigkeit, die Eignung für einen bestimmten Zweck und die Nichtverletzung. In keinem Fall sind die Autoren oder Urheberrechtsinhaber für Ansprüche, Schäden oder andere Haftungen haftbar, sei es in einer Vertragsklage, unerbittlich oder auf andere Weise, die sich aus oder im Zusammenhang mit der Software oder anderen Geschäften in der Software ergeben.