10月底我們與Weston-embedded和Embedded office專家們成功舉辦μC/OS實(shí)時(shí)操作系統(tǒng)系列技術(shù)線上講座。
第二講是由麥克泰軟件技術(shù)總監(jiān)張愛(ài)華主講的μC/OS-II 和 μC/OS-III 內(nèi)核原理,我們課后整理匯總了一些問(wèn)答,方便學(xué)員以及感興趣的朋友了解μC/OS,下面就來(lái)一起看看有沒(méi)有你想了解的!
Q是否有μC/OS移植相關(guān)的參考資料?
A將μC/OS移植到具體的處理器,需要了解處理器的寄存器現(xiàn)場(chǎng),堆棧處理方式,以實(shí)現(xiàn)正確的任務(wù)現(xiàn)場(chǎng)保存;需基于處理器匯編指令架構(gòu)實(shí)現(xiàn)任務(wù)的上下文切換工作。
建議新手基于官方提供的開(kāi)發(fā)例程,通過(guò)分析相同架構(gòu)的處理器移植代碼,完成移植、驗(yàn)證工作。
QμC/OS-III中沒(méi)有消息郵箱,那用什么服務(wù)替代?
A郵箱相當(dāng)于長(zhǎng)度為1的消息隊(duì)列,μC/OS-III中可以使用隊(duì)列服務(wù)替代郵箱的應(yīng)用場(chǎng)景。
QμC/OS支持創(chuàng)建相同優(yōu)先級(jí)的任務(wù)嗎?
AμC/OS-III提供時(shí)間片輪詢算法,允許創(chuàng)建相同優(yōu)先級(jí)的任務(wù)。μC/OS-II僅支持搶占調(diào)度算法,任務(wù)必須設(shè)置獨(dú)立的優(yōu)先級(jí)別。
QμC/OS中如何實(shí)現(xiàn)低功耗?
A用戶任務(wù)阻塞時(shí),μC/OS會(huì)運(yùn)行最低優(yōu)先級(jí)的系統(tǒng)任務(wù),即空閑任務(wù)。空閑任務(wù)執(zhí)行一個(gè)無(wú)限循環(huán),每次循環(huán)調(diào)用OSTaskIdleHook()。為了節(jié)省空閑任務(wù)的功耗,可以在hook函數(shù)中配置處理器工作在低功耗模式。μC/OS-III為滿足低功耗應(yīng)用場(chǎng)景需求,增加了tickless模式和動(dòng)態(tài)節(jié)拍模式。
Q使用μC/OS-II切換為μC/OS-III,要注意什么?
A將應(yīng)用從μC/OS-II升級(jí)到μC/OS-III需要完成的工作。
Q內(nèi)核配置是配置哪些內(nèi)容?
AμC/OS配置文件的內(nèi)容涉及具體應(yīng)用需要的系統(tǒng)服務(wù),支持的任務(wù)/優(yōu)先級(jí)等信息,獲取各個(gè)配置項(xiàng)的具體信息。
Q支持多核嗎?
A目前μC/OS還不支持SMP架構(gòu)運(yùn)行。
Q有支持cpu任務(wù)負(fù)載統(tǒng)計(jì)嗎?有棧大小的估計(jì)方法和自動(dòng)化分析工具?
AμC/OS提供了統(tǒng)計(jì)任務(wù),跟蹤任務(wù)的CPU利用率。用戶可以借助IDE提供的內(nèi)核感知插件,可視化分析工具等獲取任務(wù)相關(guān)的信息。一些IDE提供了堆棧使用分析,可以幫助確定每個(gè)任務(wù)需要多少堆棧空間。還可以借助RTOS的可視化分析工具,如Tracealyzer,在運(yùn)行時(shí)監(jiān)控堆棧使用情況,優(yōu)化任務(wù)堆棧設(shè)置。
Q內(nèi)核怎樣訪問(wèn)任務(wù)列表?
AμC/OS應(yīng)用中定義了一個(gè)數(shù)據(jù)結(jié)構(gòu),即任務(wù)控制塊TCB,保存任務(wù)的關(guān)鍵信息,如優(yōu)先級(jí),任務(wù)堆棧等,通過(guò)內(nèi)核提供的全局變量,訪問(wèn)列表結(jié)構(gòu),管理所有任務(wù)。具體內(nèi)容可以參閱內(nèi)核調(diào)度原理。
Q同等優(yōu)先級(jí)任務(wù)有分時(shí)間片執(zhí)行嗎?
AμC/OS-III中同等優(yōu)先級(jí)可以配置不同的時(shí)間片長(zhǎng)度,在任務(wù)創(chuàng)建時(shí)設(shè)置。
QμC/OS-III有提供空間隔離和時(shí)間隔離嗎?
AμC/OS-III暫時(shí)沒(méi)有發(fā)布MPU版本,不支持空間隔離實(shí)現(xiàn)。μC/OS-II有提供空間隔離和時(shí)間監(jiān)控的版本,具體信息可以訪問(wèn)https://www.embedded-office.com/products/flexible-safety-rtos。
QμC/OS-II還會(huì)繼續(xù)維護(hù)么?
AWeston Embedded Solutions公司負(fù)責(zé)μC/OS-II的更新及商業(yè)服務(wù),關(guān)于版本更新信息。
QμC/OS有相關(guān)RISC-V架構(gòu)的移植么?
AμC/OS支持RISC-V的移植示例,可以訪問(wèn)
https://github.com/weston-embedded/uC-OS3/tree/develop/Ports/RISC-V/RV32/GCC
https://github.com/RISCV-on-Microsemi-FPGA/uCOS
Q浮點(diǎn)寄存器是默認(rèn)任務(wù)切換時(shí)都進(jìn)行保護(hù)和恢復(fù)嗎?
A如果處理器支持FPU,那移植代碼中包含對(duì)浮點(diǎn)寄存器的保護(hù)和恢復(fù)設(shè)置,這部分代碼通過(guò)配置開(kāi)關(guān)控制,默認(rèn)情況下不使能包含。
Q空閑任務(wù)里運(yùn)行什么代碼?可以放功能進(jìn)去嗎?
A空閑任務(wù)是一個(gè)空循環(huán),μC/OS-III中的實(shí)現(xiàn)如下:
用戶可以在OSIdleTaskHook()函數(shù)中增加用戶功能,注意,空閑任務(wù)不能調(diào)用阻塞服務(wù)函數(shù)。
QNKA KA中斷類型是什么意思?OS中斷向量表重定向了嗎?
ANKA指Non-kernel aware中斷,無(wú)需內(nèi)核參與的中斷。KA指Kernel Aware中斷,即受OS管理的中斷。中斷處理方式不同。無(wú)需內(nèi)核參與的中斷處理方式與裸機(jī)系統(tǒng)相同。受OS管理的中斷服務(wù)中,需要通知OS,示意代碼如下:
審核編輯:湯梓紅
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1362瀏覽量
40226 -
移植
+關(guān)注
關(guān)注
1文章
377瀏覽量
28108 -
RTOS
+關(guān)注
關(guān)注
21文章
809瀏覽量
119430
原文標(biāo)題:μC/OS實(shí)時(shí)RTOS技術(shù)線上講座匯總問(wèn)答②
文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論