內(nèi)容來源:飛凌嵌入式官網(wǎng)
在工業(yè)4.0時(shí)代,人工智能和工業(yè)物聯(lián)網(wǎng)的發(fā)展走上了快車道,越來越多的行業(yè)對實(shí)時(shí)操作系統(tǒng)有了更加迫切的需求。基于此,飛凌嵌入式推出了在OK3568-C開發(fā)板上運(yùn)行的實(shí)時(shí)操作系統(tǒng),本文中小編將為大家介紹飛凌嵌入式在OK3568-C開發(fā)板上實(shí)現(xiàn)實(shí)時(shí)性的方式,以及實(shí)時(shí)內(nèi)核的效果測試。

1、為什么選擇實(shí)時(shí)操作系統(tǒng) ?
我們都知道,操作系統(tǒng)可以分為實(shí)時(shí)操作系統(tǒng)和分時(shí)操作系統(tǒng)。分時(shí)操作系統(tǒng)其實(shí)就是將系統(tǒng)處理機(jī)時(shí)間與內(nèi)存空間按一定的時(shí)間間隔輪流地切換給各終端用戶的程序使用。目前市面上絕大多數(shù)板卡上運(yùn)行的Linux系統(tǒng)都是分時(shí)操作系統(tǒng)。
但是隨著自動(dòng)駕駛、智能機(jī)器人等行業(yè)的興起,對板載操作系統(tǒng)的實(shí)時(shí)性也提出了更高的要求。這時(shí)候,分時(shí)系統(tǒng)就無法滿足某些對實(shí)時(shí)性要求較高的行業(yè)的需求了,必須對Linux系統(tǒng)進(jìn)行改進(jìn),使其具有更好的實(shí)時(shí)性,以順應(yīng)行業(yè)的發(fā)展。
例如無人駕駛技術(shù),系統(tǒng)需要根據(jù)復(fù)雜的路況情況及時(shí)做出分析判斷,做出反應(yīng),執(zhí)行剎車或變道操作;又比如車載安全氣囊,在遇到突發(fā)事故時(shí),系統(tǒng)必須第一時(shí)間做出反應(yīng)彈出安全氣囊,保護(hù)車內(nèi)乘客人身安全。這些實(shí)際應(yīng)用場景都離不開實(shí)時(shí)操作系統(tǒng)。
2、如何實(shí)現(xiàn)“實(shí)時(shí)性” ?
Linux系統(tǒng)可以采用打補(bǔ)丁的方式來實(shí)現(xiàn)“實(shí)時(shí)性”。RT-Linux就是在Linux的基礎(chǔ)上加入了一個(gè)實(shí)時(shí)補(bǔ)丁,從而將Linux改進(jìn)成實(shí)時(shí)操作系統(tǒng)。簡單地說,“實(shí)時(shí)補(bǔ)丁”的主要工作就是針對Linux系統(tǒng)的優(yōu)先級倒置、自旋鎖等問題進(jìn)行改進(jìn),以達(dá)到實(shí)時(shí)操作系統(tǒng)的要求。
基于這個(gè)思路,我們就可以通過對內(nèi)核打?qū)崟r(shí)補(bǔ)丁的方法讓OK3568-C開發(fā)板上的Linux系統(tǒng)滿足實(shí)時(shí)性的需求。
飛凌提供了兩個(gè)補(bǔ)丁文件:
0001-patch-patch-4.19.206-rt87.patch-fix-kernel-sched-cor.patch
0002-fix-kernel-sched-core.c.patch
將兩個(gè)補(bǔ)丁文件拷貝到源碼/OK3568-linux-source/kernel路徑下,執(zhí)行以下命令:
patch-p1 <0001-patch-patch-4.19.206-rt87.patch-fix-kernel-sched-cor.patch
patch-p1 < 0002-fix-kernel-sched-core.c.patch
然后,在源碼執(zhí)行./build.sh kernel命令,即可在/OK3568-linux-source/kernel目錄下生成boot.img鏡像文件。
客戶也可以直接單步燒寫飛凌制作完成的boot.img鏡像文件。
使用Type-C線連接開發(fā)板和主機(jī),按住recover鍵不松開,然后再按reset鍵系統(tǒng)復(fù)位,大約兩秒后松開recover鍵。系統(tǒng)將提示發(fā)現(xiàn)一個(gè)loader設(shè)備。

點(diǎn)擊“設(shè)備分區(qū)表”按鈕,將自動(dòng)讀取分區(qū)地址。

點(diǎn)擊左側(cè)勾選boot分區(qū)。

最后,點(diǎn)擊右側(cè)選擇您編譯生成的boot鏡像文件路徑,點(diǎn)擊“執(zhí)行”按鈕將自動(dòng)燒寫并重新啟動(dòng)。
想要了解有關(guān)實(shí)時(shí)補(bǔ)丁的詳細(xì)資料,您可以在評論區(qū)留言聯(lián)系飛凌嵌入式銷售工程師。
3、實(shí)時(shí)內(nèi)核效果測試
測試實(shí)時(shí)性的關(guān)鍵指標(biāo)便是“延時(shí)”,延時(shí)指的是不論系統(tǒng)運(yùn)行在代碼的什么位置,當(dāng)事件發(fā)生時(shí),系統(tǒng)響應(yīng)該事件的時(shí)間。
其中中斷延時(shí)指的是中斷觸發(fā)到中斷服務(wù)函數(shù)執(zhí)行完畢的時(shí)間;調(diào)度延時(shí)指的是進(jìn)程在隊(duì)列中等待直到獲取CPU控制權(quán)被執(zhí)行的時(shí)間。
實(shí)時(shí)性,也可以表現(xiàn)為對這兩段延時(shí)最大的容忍程度。這里通過cyclictest軟件測量中斷延時(shí)和調(diào)度延時(shí)時(shí)間。
由于在真實(shí)的使用環(huán)境下并不能觸發(fā)最大的延時(shí)時(shí)間,因此在沒有合適負(fù)載的情況下運(yùn)行cyclictest所測得的延時(shí)統(tǒng)計(jì)數(shù)據(jù)是沒有意義的。這里我們采用官方提供的hackbench工具來模擬部分類型的負(fù)載,然后在此基礎(chǔ)上運(yùn)行cyclictest軟件來測試事件發(fā)生時(shí),系統(tǒng)響應(yīng)該事件的時(shí)間。
先來看一下未打?qū)崟r(shí)補(bǔ)丁的測試結(jié)果:

再來看一下打?qū)崟r(shí)補(bǔ)丁后的測試結(jié)果:

這里我們著重比較兩者M(jìn)ax得出的參數(shù),因?yàn)橄到y(tǒng)的實(shí)時(shí)性能是由最大延時(shí)時(shí)間決定的。通過對打?qū)崟r(shí)補(bǔ)丁前后測試結(jié)果進(jìn)行對比,打?qū)崟r(shí)補(bǔ)丁以后,可以明顯看出延時(shí)從213μs降低到80μs以內(nèi),實(shí)時(shí)效果還是十分明顯的。(不同測試條件下的延時(shí)不同,這里的測試結(jié)果僅供大家參考)
-
ARM
+關(guān)注
關(guān)注
134文章
9270瀏覽量
373612 -
瑞芯微
+關(guān)注
關(guān)注
24文章
512瀏覽量
52037
發(fā)布評論請先 登錄
相關(guān)推薦
RK3568開發(fā)板教程:以iTOP-RK3568開發(fā)板為例 Android13通過CIFS協(xié)議掛載Windows共享目錄

北京迅為RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)

迅為RK3568開發(fā)板驅(qū)動(dòng)指南Linux中通用SPI設(shè)備驅(qū)動(dòng)

RK3568內(nèi)置MCU開發(fā)介紹之一

評論