《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于QNX硬加速的軟控車(chē)載全虛擬儀表平臺(tái)
基于QNX硬加速的軟控車(chē)載全虛擬儀表平臺(tái)
來(lái)源:電子技術(shù)應(yīng)用2012年第10期
李 英
河南商丘師范學(xué)院 計(jì)算機(jī)與信息技術(shù)學(xué)院, 河南 商丘576100
摘要: 提出基于QNX硬加速的軟控車(chē)載全虛擬儀表平臺(tái)方案,引入快速HMI原型設(shè)計(jì)和邏輯仿真測(cè)試技術(shù),以縮短人機(jī)交互界面開(kāi)發(fā)周期;設(shè)計(jì)軟控模式下圖形元素實(shí)時(shí)分層渲染模型,實(shí)現(xiàn)龐大信息的動(dòng)態(tài)顯示;采用基于OpenGLES2.0的GPU硬加速技術(shù)提高圖形渲染幀率。實(shí)驗(yàn)表明:該方案不僅能實(shí)時(shí)處理車(chē)輛內(nèi)部模塊的大量信息,而且能平滑逼真地動(dòng)態(tài)顯示瞬時(shí)車(chē)況信息。
中圖分類(lèi)號(hào): TP391
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)10-0129-04
Software control auto fully virtual instrument cluster platform based on QNX hardware acceleration
Li Ying
Computer and information Department, Shangqiu Normal University, Shangqiu 576100, China
Abstract: An auto fully virtual instrument cluster program was proposed based on QNX hardware acceleration and software control. In order to shorten the HMI development cycle, the technology based on fast HMI prototyping and logic simulation was introduced. The module of real-time layer rendering was designed under the software control, so as to display the huge info dynamically. The GPU hardware acceleration technology based on OpenGLES2.0 was used to improve the frame rate. Experiments show that , this program can not only process a huger info, comes from inner modules of the vehicle,but also can dynamically display the instantaneous vehicle info more smooth and realistic.
Key words : driver assistant system; fully virtual instrument cluster; software control module; GPU hardware acceleration; instantaneous vehicle information

    隨著整車(chē)控制單元電氣化、集成化和信息化的快速發(fā)展,大量遠(yuǎn)程服務(wù)信息、車(chē)輛診斷信息、駕駛輔助信息、影音娛樂(lè)信息等都需要通過(guò)儀表平臺(tái)與駕駛員進(jìn)行人機(jī)交互。通過(guò)該平臺(tái),駕駛員不僅能輕易獲取所關(guān)注的車(chē)況信息,而且能設(shè)置相關(guān)參數(shù),控制車(chē)輛運(yùn)行模式,是車(chē)輛必不可少的輔助駕駛單元。目前車(chē)載儀表平臺(tái)主要有三種模式:(1)純機(jī)械式,完全采用傳統(tǒng)機(jī)械指針式組合儀表;(2)半機(jī)械式,傳統(tǒng)機(jī)械指針式和車(chē)載電腦組合;(3)全數(shù)字虛擬式,完全采用虛擬數(shù)字圖形(2D、3D)模擬傳統(tǒng)機(jī)械模式[1]。

    傳統(tǒng)車(chē)載儀表通常以機(jī)械式為主,由于線路集成度太低、電磁干擾較大、顯示精度不高及顯示內(nèi)容有限等因素,嚴(yán)重制約了儀表輔助駕駛系統(tǒng)的發(fā)展。半機(jī)械式儀表在傳統(tǒng)儀表盤(pán)之間嵌入一塊小型LCD,即車(chē)載電腦,雖增加了儀表平臺(tái)顯示的信息量,但整體沒(méi)有擺脫機(jī)械模式的缺陷,而且對(duì)儀表平臺(tái)整體布局也有一定影響[2]。隨著近年來(lái)圖形硬件技術(shù)的飛速發(fā)展和嵌入式實(shí)時(shí)系統(tǒng)的廣泛應(yīng)用,車(chē)輛研究者提出了各種虛擬儀表組合平臺(tái)以解決上述問(wèn)題。2011年,隨著Android系統(tǒng)風(fēng)靡全球手機(jī)市場(chǎng),蔡黎等提出了基于OBD協(xié)議的Android虛擬儀表組合平臺(tái)[3],炫麗的圖形界面效果給消費(fèi)者帶來(lái)了巨大的視覺(jué)沖擊感,但由于系統(tǒng)本身要接收第三方廠商提供的代碼,一旦出現(xiàn)問(wèn)題很容易導(dǎo)致系統(tǒng)崩潰,可謂在提升效率的同時(shí)犧牲了系統(tǒng)的可靠性。2012年王潤(rùn)民等提出了Linux+QT+ARM虛擬儀表組合平臺(tái)[4],基本實(shí)現(xiàn)了儀表的圖形界面顯示,但由于內(nèi)核構(gòu)架上的問(wèn)題,其實(shí)時(shí)性很難滿(mǎn)足高性能虛擬儀表的要求??梢?jiàn),上述方案的共同缺點(diǎn)是:穩(wěn)定性、實(shí)時(shí)性、安全性受系統(tǒng)本身架構(gòu)制約,很難滿(mǎn)足苛刻的車(chē)規(guī)測(cè)試要求和客戶(hù)對(duì)于高性能的需求。
    針對(duì)傳統(tǒng)機(jī)械組合式儀表的缺陷和當(dāng)前虛擬儀表平臺(tái)的問(wèn)題,本文提出一種新型的高性能車(chē)載全數(shù)字虛擬儀表方案,采用ARM處理器imx53為核心硬件平臺(tái),嵌入式硬實(shí)時(shí)操作系統(tǒng)QNX為核心軟件平臺(tái),并在此基礎(chǔ)上引入Altia快速原型界面設(shè)計(jì)和仿真測(cè)試工具,提出軟控分層顯示的邏輯界面控制方法,采用GPU硬加速圖形渲染技術(shù),開(kāi)發(fā)全虛擬儀表終端應(yīng)用程序。
1 全虛擬儀表平臺(tái)系統(tǒng)介紹
    虛擬儀表作為輔助駕駛系統(tǒng)的核心組成部分,對(duì)系統(tǒng)的實(shí)時(shí)性、穩(wěn)定性和安全性均提出了極高的要求。而QNX作為微內(nèi)核硬實(shí)時(shí)多任務(wù)的嵌入式操作系統(tǒng),已成功應(yīng)用于軍工領(lǐng)域和汽車(chē)領(lǐng)域,是嵌入式系統(tǒng)市場(chǎng)上第一款達(dá)到穩(wěn)定和安全雙重認(rèn)證的實(shí)時(shí)操作系統(tǒng)。
    系統(tǒng)實(shí)時(shí)性主要取決于中斷處理和任務(wù)調(diào)度。中斷處理中影響實(shí)時(shí)性的因素主要是中斷延遲和調(diào)度延遲,QNX的這兩種延遲指標(biāo)如表1所示。

     由表1和表2可見(jiàn),QNX對(duì)于影響系統(tǒng)實(shí)時(shí)性的兩個(gè)關(guān)鍵指標(biāo)都在微秒級(jí), 是目前實(shí)時(shí)性最強(qiáng)的系統(tǒng)之一[5]。另外,系統(tǒng)的穩(wěn)定性和安全性主要取決于內(nèi)核架構(gòu), QNX采用模塊化的微內(nèi)核系統(tǒng)架構(gòu),應(yīng)用程序、設(shè)備驅(qū)動(dòng)程序、文件系統(tǒng)和網(wǎng)絡(luò)協(xié)議棧都獨(dú)立運(yùn)行在受內(nèi)存保護(hù)的空間中,采用的安全技術(shù)主要包括:
    (1) 內(nèi)存保護(hù)的安全內(nèi)核:內(nèi)核不能被繞過(guò),強(qiáng)制執(zhí)行存取權(quán)限;
    (2) 安全協(xié)議:包括IPSec、IKE、SSL、NAT等;
    (3) 硬件加速:網(wǎng)絡(luò)協(xié)議棧下加密和認(rèn)證算法,包括DES、3DES、AES等;
    (4) 自適應(yīng)分區(qū):防止惡意代碼和拒絕服務(wù)攻擊獨(dú)占CPU。
    QNX系統(tǒng)對(duì)每個(gè)任務(wù)進(jìn)行全面地址保護(hù),使每個(gè)任務(wù)(進(jìn)程)獨(dú)立運(yùn)行于自己的虛擬地址空間,在任務(wù)中又可以創(chuàng)建無(wú)地址保護(hù)的任務(wù)(線程)。這樣做的優(yōu)點(diǎn)是當(dāng)一個(gè)進(jìn)程崩潰時(shí)不會(huì)影響到另一進(jìn)程的存儲(chǔ)空間[6]。
    綜上,QNX不僅以微秒級(jí)的延遲提高了系統(tǒng)的實(shí)時(shí)性,而且充分采用新型技術(shù)來(lái)保證其穩(wěn)定性和安全性。因此,以QNX為系統(tǒng)平臺(tái)開(kāi)發(fā)全數(shù)字虛擬儀表,其性能足以滿(mǎn)足儀表輔助駕駛平臺(tái)對(duì)系統(tǒng)實(shí)時(shí)性和可靠性的苛刻要求。
2 全虛擬儀表HMI界面邏輯設(shè)計(jì)
    為縮短全數(shù)字虛擬儀表圖形用戶(hù)界面開(kāi)發(fā)周期,加快其產(chǎn)品化進(jìn)程,引入快速HMI原型設(shè)計(jì)和邏輯仿真測(cè)試工具Altia。
2.1 Altia開(kāi)發(fā)流程
    Altia 作為全數(shù)字虛擬儀表專(zhuān)業(yè)開(kāi)發(fā)工具,主要包括3個(gè)模塊:圖形界面編輯器(Altia Design)、連接仿真接口(Altia Connection)和代碼生成工具(DeepScreen)。整個(gè)開(kāi)發(fā)流程見(jiàn)圖1,其中包括以下關(guān)鍵步驟[7]:

    (1) 圖形界面原型開(kāi)發(fā):將美工處理后的靜態(tài)圖片通過(guò)圖層切換轉(zhuǎn)變?yōu)榭刹僮鞯目丶?,用于?shí)現(xiàn)逼真的動(dòng)態(tài)效果。圖形界面的設(shè)計(jì)結(jié)果保存為計(jì)算機(jī)中的文件,可直接用于后續(xù)的仿真驗(yàn)證和代碼實(shí)現(xiàn)、集成階段。
    (2) 效果仿真驗(yàn)證:在控制邏輯開(kāi)發(fā)環(huán)境中(如C/C++、Simulink/Stateflow、Rhapsody)集成圖形界面原型,在項(xiàng)目開(kāi)發(fā)初期和中期就能由仿真測(cè)試來(lái)驗(yàn)證開(kāi)發(fā)的圖形界面的合理性。
    (3) 代碼實(shí)現(xiàn):通過(guò)自動(dòng)代碼生成工具將圖形界面原型和控制邏輯直接轉(zhuǎn)變?yōu)檫m合于嵌入式目標(biāo)平臺(tái)的程序,快速驗(yàn)證嵌入式HMI的圖形效果及性能;判斷現(xiàn)有硬件資源是否足以支撐HMI設(shè)計(jì);在最短時(shí)間內(nèi)找到圖形界面顯示效果與硬件資源的最佳平衡。
    可見(jiàn),Altia圖形界面開(kāi)發(fā)流程真正做到了所見(jiàn)即所得,可迅速將產(chǎn)品概念原型化,模擬真實(shí)工作場(chǎng)景,讓用戶(hù)能夠通過(guò)仿真驗(yàn)證手段,在設(shè)計(jì)早期就充分論證設(shè)計(jì)方案的可行性,為快速開(kāi)發(fā)高性能全數(shù)字虛擬儀表提供了先進(jìn)的開(kāi)發(fā)理念和有力的技術(shù)保障。
2.2 設(shè)計(jì)軟控分層渲染模型
    全數(shù)字虛擬儀表往往需要?jiǎng)討B(tài)模擬顯示大量的車(chē)況信息,并實(shí)時(shí)響應(yīng)外界的觸控指令。如何在有限區(qū)域內(nèi)實(shí)時(shí)顯示駕駛員所關(guān)注的信息,成為制約車(chē)載虛擬儀表發(fā)展的最大瓶頸。為此,在前人的工作基礎(chǔ)上,設(shè)計(jì)了基于軟控模式下的圖形元素實(shí)時(shí)分層渲染模型,以緩解圖形界面顯示的壓力。
    軟控圖層組織結(jié)構(gòu)的設(shè)計(jì)核心思想為:利用多線程模式對(duì)圖形元素信息進(jìn)行硬件圖層分層控制顯示,并根據(jù)駕駛員在不同時(shí)段的關(guān)注目標(biāo),動(dòng)態(tài)綁定相關(guān)信息所在圖層ID。其整體架構(gòu)設(shè)計(jì)如圖2所示。

    (1)硬件支持顯示的圖層有限(≤3 layer),對(duì)虛擬儀表所有顯示信息進(jìn)行動(dòng)態(tài)分類(lèi),根據(jù)信息的迫切度分為靜態(tài)必顯信息、可選顯示信息及動(dòng)態(tài)必顯信息。
    (2)對(duì)不同迫切度的信息進(jìn)行相應(yīng)圖層和顯示區(qū)域的綁定,原則上動(dòng)態(tài)必顯信息的優(yōu)先級(jí)最高,靜態(tài)必顯信息的優(yōu)先級(jí)最低,可選顯示信息的優(yōu)先級(jí)處于中間,屬于駕駛員可控信息。信息所綁定的圖層ID越大,則被顯示的優(yōu)先級(jí)也越高,高優(yōu)先級(jí)的圖層可以覆蓋掉低優(yōu)先級(jí)的圖層。
    (3)根據(jù)客戶(hù)不同時(shí)間段的關(guān)注,動(dòng)態(tài)調(diào)整軟控區(qū)域相關(guān)信息綁定的圖層ID,進(jìn)行動(dòng)態(tài)實(shí)時(shí)模擬顯示。
    以上設(shè)計(jì)思想的偽代碼實(shí)現(xiàn)如下:
     VIC_Init();                    //對(duì)Altia圖形系統(tǒng)和相關(guān)
                                 車(chē)輛信息進(jìn)行初始化
    Thread1_Creat();    //分類(lèi)接收各類(lèi)車(chē)輛信息,做過(guò)濾解
                      碼處理后更新數(shù)據(jù)庫(kù)列表;
     Thread2_Creat();    //檢測(cè)數(shù)據(jù)庫(kù)列表更新信息,并實(shí)時(shí)
                    將更新數(shù)據(jù)發(fā)送到HMI界面;
     Thread3_Creat();       //控制圖層綁定信息,根據(jù)客戶(hù)設(shè)
                      定,實(shí)時(shí)調(diào)整關(guān)切信息并綁定到相
                      關(guān)圖層;
    AtiaMainloop()                 //實(shí)時(shí)處理觸控消息;
  AltiaDisconnect()         //異常退出Altia進(jìn)程并自動(dòng)重
                          啟Reset進(jìn)程;
    從軟控架構(gòu)模型可見(jiàn),該設(shè)計(jì)理念對(duì)龐大車(chē)況信息進(jìn)行動(dòng)態(tài)分類(lèi)、分層顯示處理。靜態(tài)必顯信息處于虛擬儀表界面最底層,通常包括儀表盤(pán)背景、儀表logo及情景模式等靜態(tài)圖形元素;動(dòng)態(tài)必顯信息處于虛擬儀表界面的最高層,通常包括儀表盤(pán)虛擬指針;可選顯示信息處于中間圖層,主要包括各類(lèi)報(bào)警圖標(biāo)、車(chē)輛狀態(tài)模擬圖標(biāo)、遠(yuǎn)程服務(wù)信息狀態(tài)及影音娛樂(lè)狀態(tài)等。
    綜述,該設(shè)計(jì)模型在有限的顯示區(qū)域?qū)Σ煌?lèi)型的信息進(jìn)行動(dòng)態(tài)分塊顯示,并對(duì)可選信息進(jìn)行動(dòng)態(tài)實(shí)時(shí)綁定硬件圖層,有效解決了龐大信息動(dòng)態(tài)實(shí)時(shí)顯示的瓶頸。
3 引入GPU圖形硬加速機(jī)制
    隨著硬件圖形加速處理能力的不斷發(fā)展,完全靠CPU進(jìn)行圖形處理的時(shí)代將逐漸消逝。車(chē)載全數(shù)字虛擬儀表作為一個(gè)圖形界面高度集成、可實(shí)時(shí)顯示龐大信息,且3D動(dòng)畫(huà)動(dòng)態(tài)渲染的復(fù)雜系統(tǒng),僅靠CPU完成其復(fù)雜圖形處理過(guò)程顯然很難滿(mǎn)足實(shí)時(shí)性要求。因此,引入基于OpenGLES2.0的GPU硬加速機(jī)制。
    另外,由于該設(shè)計(jì)方案硬件上采用imx53處理器,提供了對(duì)OpenGLES2.0、OpenVG的2D、3D圖形硬加速功能的支持。同時(shí),QNX也提供了針對(duì)imx5X系列處理器的GPU硬加速驅(qū)動(dòng)模塊,使得軟硬件平臺(tái)圖形加速功能得到了很好的兼容。QNX加載GPU的模塊驅(qū)動(dòng)配置如下:    
    (1)開(kāi)啟QNX圖形驅(qū)動(dòng)
  display_msg Starting Graphics driver...
     io-display -dvid=0,did=0
      waitfor /dev/io-display 10
    (2)將相關(guān)GLES和GPU的動(dòng)態(tài)庫(kù)文件拷貝到目標(biāo)系
統(tǒng)路徑下,默認(rèn)路徑。
    /usr/lib/graphics/iMX5X
    (3)設(shè)置環(huán)境變量,開(kāi)啟GPU驅(qū)動(dòng)
     display_msg Starting GPU driver...
     GRAPHICS_ROOT=/usr/lib/graphics/iMX5X
     io-gpumgr &    
  GPU硬加速處理的主要流程如圖3所示。在加入GPU圖形硬加速處理機(jī)制后,不僅能增強(qiáng)圖形界面的顯示效果,有效降低CPU的使用率,而且能夠更好地處理大量的車(chē)況信息。

4 實(shí)驗(yàn)結(jié)果及評(píng)價(jià)

 


    全數(shù)字虛擬儀表硬件平臺(tái)選用飛思卡爾提供的車(chē)規(guī)標(biāo)準(zhǔn)處理器imx536,其主要技術(shù)指標(biāo):1 GHz CPU主頻,1 GB×32 DDR3(400 MHz),32 MB 16 bit并行NOR Flash,可擴(kuò)充的NAND Flash接口,LVDS數(shù)字圖形輸出接口,并集成了基于OpenGL ES2.0和OpenVG1.1的GPU圖形硬加速處理單元。軟件平臺(tái)采用加拿大哈曼公司開(kāi)發(fā)的硬實(shí)時(shí)操作系統(tǒng)QNX,并引入美國(guó)Altia公司HMI快速原型設(shè)計(jì)和仿真測(cè)試工具套件。
    采用奇瑞某車(chē)型的CAN網(wǎng)絡(luò)系統(tǒng)和全數(shù)字虛擬儀表系統(tǒng)搭建整車(chē)測(cè)試平臺(tái)。將全數(shù)字虛擬儀表系統(tǒng)作為汽車(chē)CAN總線上的一個(gè)節(jié)點(diǎn),通過(guò)CAN控制器和收發(fā)器采集車(chē)況信息,經(jīng)imx536處理器過(guò)濾、解碼和組包等處理后,送到軟控分層渲染模型中進(jìn)行動(dòng)態(tài)實(shí)時(shí)模擬顯示,以此完成基于整車(chē)系統(tǒng)的全數(shù)字虛擬儀表單元測(cè)試[8]。測(cè)試的車(chē)況信息主要包括:發(fā)動(dòng)機(jī)轉(zhuǎn)速、車(chē)速、車(chē)燈轉(zhuǎn)向、車(chē)門(mén)狀態(tài)、遠(yuǎn)程監(jiān)控狀態(tài)及車(chē)內(nèi)溫度等,其界面顯示效果如圖4所示。

    針對(duì)GPU對(duì)圖形渲染的貢獻(xiàn)度進(jìn)行單元測(cè)試,其實(shí)驗(yàn)結(jié)果如表3所示。當(dāng)圖形界面復(fù)雜度相同,GPU模塊開(kāi)啟時(shí),整個(gè)圖形界面的渲染幀率迅速提高約2倍,而CPU消耗率只有微小的提高。當(dāng)其他測(cè)試環(huán)境相同,只改變圖形界面的復(fù)雜度時(shí),圖形渲染的幀率會(huì)隨著圖形復(fù)雜度的增加呈比例提高。因此,GPU模塊的開(kāi)啟與否、圖形界面的復(fù)雜度高低是影響圖形實(shí)時(shí)渲染幀率的兩個(gè)關(guān)鍵因素。而本文方案不僅有效解決了鋸齒和閃爍等影響圖形界面穩(wěn)定性的問(wèn)題,而且增強(qiáng)了圖像顯示的平滑度和復(fù)雜度,并支持3D圖形和特效動(dòng)畫(huà)的顯示,為HMI動(dòng)態(tài)實(shí)時(shí)模擬車(chē)況信息和人性化界面設(shè)計(jì)提供了強(qiáng)有力的平臺(tái)支持。

    以汽車(chē)輔助駕駛系統(tǒng)快速向數(shù)字化,集成化及智能化轉(zhuǎn)型為背景,以探索虛擬儀表輔助駕駛系統(tǒng)的實(shí)時(shí)性、可靠性和人性化界面設(shè)計(jì)為研究目標(biāo),設(shè)計(jì)了一套高性能的全數(shù)字虛擬儀表系統(tǒng)。采用以實(shí)時(shí)性、穩(wěn)定性和安全性著稱(chēng)的QNX為軟件運(yùn)行系統(tǒng)平臺(tái),引入的快速圖形界面原型設(shè)計(jì)和仿真測(cè)試Altia技術(shù)開(kāi)發(fā)HMI,提出一種基于軟控模式分層顯示的圖形界面邏輯控制方法,最后引入了基于OpenGLES2.0的GPU硬加速技術(shù)。最終有效解決了在有限資源下實(shí)時(shí)處理和大量信息的瓶頸,研究成果已用于國(guó)內(nèi)某型號(hào)概念車(chē),成為國(guó)內(nèi)車(chē)載全數(shù)字虛擬儀表前裝領(lǐng)域的先行者。進(jìn)一步的工作將提高界面創(chuàng)意設(shè)計(jì),融入GPS、OnStar等信息模塊。
參考文獻(xiàn)
[1] 劉鵬.汽車(chē)虛擬儀表平臺(tái)的設(shè)計(jì)和研究[D].大連:大連理工大學(xué), 2010.
[2] 黃光亮,秦樹(shù)人,王見(jiàn),等.基于車(chē)載診斷系統(tǒng)的汽車(chē)虛擬儀表[J].中國(guó)測(cè)試, 2009,35(5):81-84.
[3] 蔡 黎,代妮娜,鄧明.基于OBD協(xié)議的Android平臺(tái)汽車(chē)虛擬儀表設(shè)計(jì)[J].電子技術(shù)應(yīng)用, 2011,37(12):83-85.
[4] 王潤(rùn)民,趙祥模,惠飛,等.基于嵌入式Linux與QT的汽車(chē)虛擬儀表設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,35(6):2-4.
[5] 王斑.基于QNX實(shí)時(shí)系統(tǒng)的測(cè)試系統(tǒng)的開(kāi)發(fā)[D]. 西安:西北工業(yè)大學(xué), 2006.
[6] 趙偉慶,周群彪,游志勝,等.基于QNX的實(shí)時(shí)嵌入式計(jì)算機(jī)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)民航飛行學(xué)院學(xué)報(bào),2003,14(2):46-48.
[7] 張建偉,王永康,南立軍,等. 基于Altia軟件的車(chē)輛電子信息系統(tǒng)顯示界面的仿真[J]. 車(chē)輛與動(dòng)力技術(shù), 2009
(3):49-52.
[8] 孟磊.基于CAN總線技術(shù)的汽車(chē)數(shù)字儀表的研究[D].西安:西安電子科技大學(xué),2011.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。