嵌人式虛擬化實時系統(tǒng)的研究與應(yīng)用
引言
隨著工業(yè)4.0技術(shù)的發(fā)展,工業(yè)機(jī)器人控制系統(tǒng)對工業(yè)物聯(lián)網(wǎng)、工業(yè)大數(shù)據(jù)和人工智能等重負(fù)載的新技術(shù)開始有了應(yīng)用需求,傳統(tǒng)的工業(yè)機(jī)器人控制系統(tǒng)是基于實時操作系統(tǒng)(RTos)而設(shè)計的高度安全可靠的均衡型硬實時系統(tǒng),同時伴隨著系統(tǒng)復(fù)雜度的提高,出現(xiàn)了經(jīng)過內(nèi)核改造的實時Linux系統(tǒng)方案。但隨著系統(tǒng)負(fù)載的逐漸加重,其實時性亦逐漸下降。若將通用Linux和RTos兩者有機(jī)地結(jié)合起來,既能滿足系統(tǒng)任務(wù)復(fù)雜性要求,又能兼顧系統(tǒng)實時性。
1Jai1house原理概述
與實時Linux系統(tǒng)單內(nèi)核(LinuxwithPreemptRT)改造方案不同的是,Hypervisor方案本身并不改造Linux內(nèi)核,而是利用Linux系統(tǒng)的開放性,增加一個或多個實時操作系統(tǒng),實現(xiàn)多系統(tǒng)在一個多核處理器上運行。
Jailhouse是一個基于Hypervisor虛擬化技術(shù)的Linux靜態(tài)分區(qū)管理程序,其可以運行裸機(jī)應(yīng)用程序或RTos應(yīng)用程序。為此,Jailhouse使用Cell單元節(jié)點來配置CPU和設(shè)備硬件平臺的虛擬化功能,且各個節(jié)點分配的資源互不干擾。
一旦Jailhouse被啟動,在Inmate空間就會運行裸機(jī)應(yīng)用程序或RTos,也就是說在Linux端分配了相關(guān)的硬件資源給Inmate時,它完全可以獨立控制硬件且不再需要外部系統(tǒng)的支持。在TIAM5728硬件平臺上,CPU只有兩個單元節(jié)點Cell:RootCell和InmateCell。Jailhouse軟件框架如圖1所示。
與基于Linux的全功能虛擬機(jī)管理程序(如KVM或xen)不同,Jailhouse不支持硬件的多單元節(jié)點復(fù)用,其希望用戶僅分配需要安全隔離控制的外設(shè)硬件資源,這樣能保證裸機(jī)應(yīng)用程序或RTos最大限度減少因為應(yīng)用虛擬化技術(shù)所造成的實時性損失。所有靜態(tài)分配給RootCell操作系統(tǒng)端(Linux)的硬件資源(例如內(nèi)存、CPU和外圍設(shè)備),Jailhouse不執(zhí)行任何調(diào)度。
2Jai1house工作過程
Jailhouse由三部分組成:內(nèi)核模塊、程序管理固件和相關(guān)工具,主要用來啟用管理程序、創(chuàng)建節(jié)點Cell和加載InmateCell的二進(jìn)制應(yīng)用程序。在AM5728CPU中有兩個ARMCortex二A15核,Linux使用sMP模式啟動兩個核,然后Jailhouse管理程序?qū)⒂蒐inux端移至RootCell單元節(jié)點,此時Linux端依然使用兩個ARM內(nèi)核。
在創(chuàng)建新的InmateCell單元節(jié)點時,Jailhouse管理程序會調(diào)用cpu一own()來隔離兩個CPU核心,這會使得Linux僅在核心0上運行,隨后再加載運行在核心1中基于RTos的應(yīng)用程序。新的InmateCell單元節(jié)點將使用核心1和所分配的硬件資源。
3Jai1house硬件資源配置
根據(jù)應(yīng)用程序的使用情況來看,將外圍設(shè)備分配給InmateCell單元節(jié)點使用的一般原則是保持InmateCell單元節(jié)點擁有的外圍設(shè)備數(shù)量和資源數(shù)量盡可能少。通常,InmateCell單元節(jié)點會直接控制幾個與實時控制相關(guān)的外圍設(shè)備(如定時器、工業(yè)以太網(wǎng)總線的網(wǎng)口、UART和CAN等硬件接口),其余的外圍設(shè)備如UsB或顯示器,將由標(biāo)準(zhǔn)Linux驅(qū)動程序來驅(qū)動。
所以在Linux設(shè)備樹中,為虛擬化管理程序保留16MB的物理內(nèi)存,為InmateCell單元節(jié)點程序保留256MB的物理內(nèi)存,并將Timer8和Uart9分配給InmateCell單元節(jié)點程序。
4測試分析及實驗結(jié)果
4.1工業(yè)機(jī)器人EtherCAT應(yīng)用程序?qū)嶒灉y試條件
在基于AM5728平臺的工業(yè)機(jī)器人控制系統(tǒng)中連接清能德創(chuàng)CoolDriveA8單軸伺服驅(qū)動,執(zhí)行1ms總線周期的EtherCAT測試程序。在以下三種系統(tǒng)環(huán)境中分別在輕負(fù)載和重負(fù)載條件下進(jìn)行系統(tǒng)實時性能測試:
(1)RTos+PRUEtherCAT:
(2)JailhouseLinux+RTos+PRUEtherCAT:
(3)LinuxRT+PRUEtherCAT。
輕負(fù)載:運行EtherCAT程序:重負(fù)載:運行EtherCAT、網(wǎng)絡(luò)和科學(xué)計算程序。
4.2輕負(fù)載下EtherCAT應(yīng)用測試結(jié)果
由表1測試數(shù)據(jù)可知,在CPU只運行RTos時,實時性能最好,抖動數(shù)據(jù)主要集中在3.2~6.4μs區(qū)間。在Jailhouse環(huán)境下由于使用了虛擬化技術(shù)造成了實時性能損失,但抖動數(shù)據(jù)仍然集中在3.2~12.8μs的區(qū)間呈正態(tài)分布。而LinuxRT實時系統(tǒng)由于其是通過改造內(nèi)核的方式來達(dá)到硬實時的效果,受Linux自身調(diào)度機(jī)制影響,實時性呈現(xiàn)不規(guī)則狀況且實時性最差。
4.3重負(fù)載下EtherCAT應(yīng)用測試結(jié)果
如表2所示,在系統(tǒng)施加了重負(fù)載的情況下,三種系統(tǒng)環(huán)境實時性均受到了影響,其中RTosonly和LinuxRT受影響更為嚴(yán)重,最大延遲分別增加了127%和96.7%。但JailhouseRTos由于為雙系統(tǒng)獨立運行,在虛擬化技術(shù)的作用之下,實時性并未受到過大影響。
綜上所述,嵌入式虛擬化實時系統(tǒng)非常適合用于復(fù)雜的控制系統(tǒng)中。
5結(jié)語
本文通過研究基于Hypervisor虛擬化技術(shù)的Jailhouse原理,使用虛擬化技術(shù)實現(xiàn)多操作系統(tǒng)同時運行在多核處理器上,并將其應(yīng)用于工業(yè)機(jī)器人控制系統(tǒng)。通過測試實驗得到使用虛擬化技術(shù)前后系統(tǒng)實時性延遲抖動數(shù)據(jù)的對比,測試結(jié)果說明在系統(tǒng)負(fù)載越重的情況下嵌入式虛擬化實時系統(tǒng)性能越優(yōu)異,證明工業(yè)機(jī)器人控制器應(yīng)用該方案具備基礎(chǔ)條件和研究的可行性。