該操作系統在課堂分配中創建。該代碼是實驗性的,並且沒有測試,但應該起作用。
操作系統使用一個非常簡單的循環調度程序,並每262144時鐘週期進行上下文切換。通過設置OCR0A和timer0的預定器,該行為可以控制。您不能在應用程序中使用timer0,而是調度程序專門使用。
只需將文件從os中開始。編輯os_config.h以滿足您的需求。從您的主機調用os_init() ,並使用os_task_add(task_func, task_data)創建任務。要啟動調度程序,請致電os_run() 。請注意,此呼叫永遠不會返回,因此不會執行後續代碼。
請注意,當前任務可能永遠不會終止,並且必須使用os_current_task_kill()終止。要訪問給出os_task_add的VOID-POINTER,請致電os_current_task_get_data() 。
請不要嘗試使用遞歸或深層呼叫堆棧,因為您只有非常有限的堆棧。您不得使用timer0,因為它用於調度程序!使用自定義中斷服務例程時,請勿嘗試重新啟用中斷!
可以在os_config.h中使用以下Define-macros在編譯時間配置操作系統:
OS_STACK_SIZE控制一個任務的堆棧大小。OS_TASK_COUNT控制可以同時創建多少個任務。 版權2020 Stephan Brunner
特此免費授予獲得此軟件副本和相關文檔文件副本(“軟件”)的任何人,以無限制處理該軟件,包括無限制的使用權,複製,複製,修改,合併,合併,發布,分發,分發,分發,訂婚,和/或允許軟件的副本,並允許對以下條件提供以下條件,以下是以下條件。
上述版權通知和此許可通知應包含在軟件的所有副本或大量部分中。
該軟件是“原樣”提供的,沒有任何形式的明示或暗示保證,包括但不限於適銷性,特定目的的適用性和非侵權的保證。在任何情況下,作者或版權持有人都不應對任何索賠,損害賠償或其他責任責任,無論是在合同,侵權的訴訟中還是其他責任,是由軟件,使用或與軟件中的使用或其他交易有關的。