內(nèi)容來源:飛凌嵌入式官網(wǎng)
在工業(yè)4.0時代,人工智能和工業(yè)物聯(lián)網(wǎng)的發(fā)展走上了快車道,越來越多的行業(yè)對實時操作系統(tǒng)有了更加迫切的需求?;诖?,飛凌嵌入式推出了在OK3568-C開發(fā)板上運行的實時操作系統(tǒng),本文中小編將為大家介紹飛凌嵌入式在OK3568-C開發(fā)板上實現(xiàn)實時性的方式,以及實時內(nèi)核的效果測試。
飛凌OK3568-C開發(fā)板1、為什么選擇實時操作系統(tǒng) ?
我們都知道,操作系統(tǒng)可以分為實時操作系統(tǒng)和分時操作系統(tǒng)。分時操作系統(tǒng)其實就是將系統(tǒng)處理機時間與內(nèi)存空間按一定的時間間隔輪流地切換給各終端用戶的程序使用。目前市面上絕大多數(shù)板卡上運行的Linux系統(tǒng)都是分時操作系統(tǒng)。
但是隨著自動駕駛、智能機器人等行業(yè)的興起,對板載操作系統(tǒng)的實時性也提出了更高的要求。這時候,分時系統(tǒng)就無法滿足某些對實時性要求較高的行業(yè)的需求了,必須對Linux系統(tǒng)進(jìn)行改進(jìn),使其具有更好的實時性,以順應(yīng)行業(yè)的發(fā)展。
例如無人駕駛技術(shù),系統(tǒng)需要根據(jù)復(fù)雜的路況情況及時做出分析判斷,做出反應(yīng),執(zhí)行剎車或變道操作;又比如車載安全氣囊,在遇到突發(fā)事故時,系統(tǒng)必須第一時間做出反應(yīng)彈出安全氣囊,保護(hù)車內(nèi)乘客人身安全。這些實際應(yīng)用場景都離不開實時操作系統(tǒng)。
2、如何實現(xiàn)“實時性” ?
Linux系統(tǒng)可以采用打補丁的方式來實現(xiàn)“實時性”。RT-Linux就是在Linux的基礎(chǔ)上加入了一個實時補丁,從而將Linux改進(jìn)成實時操作系統(tǒng)。簡單地說,“實時補丁”的主要工作就是針對Linux系統(tǒng)的優(yōu)先級倒置、自旋鎖等問題進(jìn)行改進(jìn),以達(dá)到實時操作系統(tǒng)的要求。
基于這個思路,我們就可以通過對內(nèi)核打?qū)崟r補丁的方法讓OK3568-C開發(fā)板上的Linux系統(tǒng)滿足實時性的需求。
飛凌提供了兩個補丁文件:
0001-patch-patch-4.19.206-rt87.patch-fix-kernel-sched-cor.patch
0002-fix-kernel-sched-core.c.patch
將兩個補丁文件拷貝到源碼/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ā)板和主機,按住recover鍵不松開,然后再按reset鍵系統(tǒng)復(fù)位,大約兩秒后松開recover鍵。系統(tǒng)將提示發(fā)現(xiàn)一個loader設(shè)備。
點擊“設(shè)備分區(qū)表”按鈕,將自動讀取分區(qū)地址。
點擊左側(cè)勾選boot分區(qū)。
最后,點擊右側(cè)選擇您編譯生成的boot鏡像文件路徑,點擊“執(zhí)行”按鈕將自動燒寫并重新啟動。
想要了解有關(guān)實時補丁的詳細(xì)資料,您可以在評論區(qū)留言聯(lián)系飛凌嵌入式銷售工程師。
3、實時內(nèi)核效果測試
測試實時性的關(guān)鍵指標(biāo)便是“延時”,延時指的是不論系統(tǒng)運行在代碼的什么位置,當(dāng)事件發(fā)生時,系統(tǒng)響應(yīng)該事件的時間。
其中中斷延時指的是中斷觸發(fā)到中斷服務(wù)函數(shù)執(zhí)行完畢的時間;調(diào)度延時指的是進(jìn)程在隊列中等待直到獲取CPU控制權(quán)被執(zhí)行的時間。
實時性,也可以表現(xiàn)為對這兩段延時最大的容忍程度。這里通過cyclictest軟件測量中斷延時和調(diào)度延時時間。
由于在真實的使用環(huán)境下并不能觸發(fā)最大的延時時間,因此在沒有合適負(fù)載的情況下運行cyclictest所測得的延時統(tǒng)計數(shù)據(jù)是沒有意義的。這里我們采用官方提供的hackbench工具來模擬部分類型的負(fù)載,然后在此基礎(chǔ)上運行cyclictest軟件來測試事件發(fā)生時,系統(tǒng)響應(yīng)該事件的時間。
先來看一下未打?qū)崟r補丁的測試結(jié)果:
再來看一下打?qū)崟r補丁后的測試結(jié)果:
這里我們著重比較兩者M(jìn)ax得出的參數(shù),因為系統(tǒng)的實時性能是由最大延時時間決定的。通過對打?qū)崟r補丁前后測試結(jié)果進(jìn)行對比,打?qū)崟r補丁以后,可以明顯看出延時從213μs降低到80μs以內(nèi),實時效果還是十分明顯的。(不同測試條件下的延時不同,這里的測試結(jié)果僅供大家參考)
-
ARM
+關(guān)注
關(guān)注
134文章
9097瀏覽量
367581 -
瑞芯微
+關(guān)注
關(guān)注
23文章
418瀏覽量
51341
發(fā)布評論請先 登錄
相關(guān)推薦
評論