|
在工業4.0時代,人工智能和工業物聯網的發展走上了快車道,越來越多的行業對實時操作系統有了更加迫切的需求。基于此,飛凌嵌入式推出了在OK3568-C開發板 飛凌嵌入式官網-ARM嵌入式核心板、開發板、工控機、單片機解決方案-專注智能設備核心平臺研發與制造 - 保定飛凌嵌入式技術有限公司 上運行的實時操作系統,本文中小編將為大家介紹飛凌嵌入式在OK3568-C開發板上實現實時性的方式,以及實時內核的效果測試。 編輯切換為居中 1 為什么選擇實時操作系統 ? 我們都知道,操作系統可以分為實時操作系統和分時操作系統。分時操作系統其實就是將系統處理機時間與內存空間按一定的時間間隔輪流地切換給各終端用戶的程序使用。目前市面上絕大多數板卡上運行的Linux系統都是分時操作系統。 但是隨著自動駕駛、智能機器人等行業的興起,對板載操作系統的實時性也提出了更高的要求。這時候,分時系統就無法滿足某些對實時性要求較高的行業的需求了,必須對Linux系統進行改進,使其具有更好的實時性,以順應行業的發展。 編輯切換為居中 例如無人駕駛技術,系統需要根據復雜的路況情況及時做出分析判斷,做出反應,執行剎車或變道操作;又比如車載安全氣囊,在遇到突發事故時,系統必須第一時間做出反應彈出安全氣囊,保護車內乘客人身安全。這些實際應用場景都離不開實時操作系統。 2 如何實現“實時性” ? Linux系統可以采用打補丁的方式來實現“實時性”。RT-Linux就是在Linux的基礎上加入了一個實時補丁,從而將Linux改進成實時操作系統。簡單地說,“實時補丁”的主要工作就是針對Linux系統的優先級倒置、自旋鎖等問題進行改進,以達到實時操作系統的要求。 基于這個思路,我們就可以通過對內核打實時補丁的方法讓OK3568-C開發板上的Linux系統滿足實時性的需求。 飛凌提供了兩個補丁文件: 0001-patch-patch-4.19.206-rt87.patch-fix-kernel-sched-cor.patch0002-fix-kernel-sched-core.c.patch 將兩個補丁文件拷貝到源碼/OK3568-linux-source/kernel路徑下,執行以下命令: patch-p1 <0001-patch-patch-4.19.206-rt87.patch-fix-kernel-sched-cor.patchpatch-p1 < 0002-fix-kernel-sched-core.c.patch 然后,在源碼執行./build.sh kernel命令,即可在/OK3568-linux-source/kernel目錄下生成boot.img鏡像文件。 客戶也可以直接單步燒寫飛凌制作完成的boot.img鏡像文件。 使用Type-C線連接開發板和主機,按住recover鍵不松開,然后再按reset鍵系統復位,大約兩秒后松開recover鍵。系統將提示發現一個loader設備。 編輯切換為居中 添加圖片注釋,不超過 140 字(可選) 點擊“設備分區表”按鈕,將自動讀取分區地址。 編輯切換為居中 添加圖片注釋,不超過 140 字(可選) 點擊左側勾選boot分區。 編輯切換為居中 添加圖片注釋,不超過 140 字(可選) 最后,點擊右側選擇您編譯生成的boot鏡像文件路徑,點擊“執行”按鈕將自動燒寫并重新啟動。 想要了解有關實時補丁的詳細資料,您可以在公眾號留言聯系飛凌嵌入式銷售工程師。 3 實時內核效果測試 測試實時性的關鍵指標便是“延時”,延時指的是不論系統運行在代碼的什么位置,當事件發生時,系統響應該事件的時間。 其中中斷延時指的是中斷觸發到中斷服務函數執行完畢的時間;調度延時指的是進程在隊列中等待直到獲取CPU控制權被執行的時間。 實時性,也可以表現為對這兩段延時最大的容忍程度。這里通過cyclictest軟件測量中斷延時和調度延時時間。 由于在真實的使用環境下并不能觸發最大的延時時間,因此在沒有合適負載的情況下運行cyclictest所測得的延時統計數據是沒有意義的。這里我們采用官方提供的hackbench工具來模擬部分類型的負載,然后在此基礎上運行cyclictest軟件來測試事件發生時,系統響應該事件的時間。 先來看一下未打實時補丁的測試結果: 編輯切換為居中 添加圖片注釋,不超過 140 字(可選) 再來看一下打實時補丁后的測試結果: 編輯切換為居中 這里我們著重比較兩者Max得出的參數,因為系統的實時性能是由最大延時時間決定的。通過對打實時補丁前后測試結果進行對比,打實時補丁以后,可以明顯看出延時從213μs降低到80μs以內,實時效果還是十分明顯的。(不同測試條件下的延時不同,這里的測試結果僅供大家參考) |