正点原子-freeRTOS
裸機與操作系統(tǒng)的區(qū)別
?
裸機與RTOS的區(qū)別
裸機是在一個while循環(huán)中執(zhí)行任務,只有執(zhí)行完了上一個才能執(zhí)行下一個
RTOS是將多任務分散開,每個任務執(zhí)行一個時間,然后切換到下一個任務
1、操作系統(tǒng)可以實現(xiàn)多線程,雖然同一時間只能做一件事但是切換很快,裸機要輪流執(zhí)行很慢
2、操作系統(tǒng)可以搶占線程,裸機只能使用中斷實現(xiàn),很慢,不實時(要一步步執(zhí)行到中斷的程序才可以觸發(fā))
3、操作系統(tǒng)在等待延時的時候,可以讓出cpu,裸機只能死等
4、裸機是全部任務在一個無限循環(huán)中,但是rtos是每個任務一個無限循環(huán)
?
每一個任務都有自己的??臻g,在被中斷打斷的時候就會將當前環(huán)境變量存放在棧中,去執(zhí)行其他任務
FreeRTOS?
1、調(diào)度器的任務就在在就緒列表中找到任務優(yōu)先級最高的任務
2、優(yōu)先級是0 ~31
3、
FreeRTOS的移植
在一個裸機的基礎(chǔ)工程中添加一個freertos操作系統(tǒng),然后在開發(fā)板中跑起來
移植步驟
任務的創(chuàng)建
動態(tài)創(chuàng)建任務? -- 任務的任務控制塊以及任務的??臻g,都是由于系統(tǒng)分配
?任務控制塊就是一個任務線程的身份證
第一個設(shè)置為1就是表示支持動態(tài)內(nèi)存申請
入口函數(shù)負責創(chuàng)建出一個運行函數(shù)的各種環(huán)境(當入口函數(shù)中的任務被創(chuàng)建出來就會跳到具體函數(shù)中去執(zhí)行)
具體實現(xiàn)函數(shù)負責實現(xiàn)函數(shù)的功能
在線程中添加代碼使得進入臨界區(qū),線程的執(zhí)行就無法被打斷,記得線程最后要退出臨界區(qū)
靜態(tài)創(chuàng)建任務 --?任務的任務控制塊以及任務的??臻g,都是由于用戶分配
任務的掛起與恢復的API函數(shù)
掛起就是暫停使用
注意在使用掛起函數(shù)的時候,要設(shè)置某個宏定義為1
中斷優(yōu)先級是中斷觸發(fā)的比任務優(yōu)先級高,數(shù)字越小優(yōu)先級越高
一般在5~15之間才有效
在中斷中恢復任務,是指中斷程序會將掛起的任務解掛
中斷管理
中斷優(yōu)先級有兩個部分 搶占優(yōu)先級和子優(yōu)先級
總結(jié)
以上是生活随笔為你收集整理的正点原子-freeRTOS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 船舶电子电气工程专业出来的交响_船舶电子
- 下一篇: Istio架构剖析