對於Cortex-M單片機,用戶程序調用RTOS系統函數有兩種思路:
假設建立任務的RTOS函數是xxx_task_create()
第一類:FreeRTOS、RT-Thread中採用的方法,和調用普通的用戶函數同樣,xxx_task_create()調用直接執行任務建立代碼
第二類:RTX、zephyr中採用的方法,xxx_task_create()中並無任務建立代碼,xxx_task_create()調用會執行SVC指令,觸發SVC中斷,在SVC_Handler()中根據參數調用相應的RTOS函數從而建立任務,,這種方法更相似於Windows、Linux等大型OS中系統調用採用的方法
那麼第二種方法會比第一種方法更安全嗎?
另外,除了上面提到的RTX、zephyr,,還有哪些RTOS採用SVC的方法實現系統調用?html