基于嵌入式Linux與QT的汽車(chē)虛擬儀表設計
摘 要:為了簡(jiǎn)化汽車(chē)內部控制系統,降低汽車(chē)制造成本,提高人車(chē)交互界面的友好度,設計并實(shí)現了一種新型的汽車(chē)虛擬儀表。采用以ARM 處理器S3C6410為核心的硬件平臺和以嵌入式Linux系統為核心的軟件平臺,并在此基礎上采用開(kāi)放源代碼的圖形界面庫QT開(kāi)發(fā)儀表終端應用程序。經(jīng)試驗驗證,虛擬儀表系統具有成本較低、界面友好、反應靈敏等特點(diǎn),并在跨平臺性、可擴展性等方面得到了顯著(zhù)改善。
本文引用地址:http://dyxdggzs.com/article/201610/311523.htm0 引 言
儀表作為汽車(chē)整個(gè)系統中十分重要的部分,是提高汽車(chē)綜合性能的重要方面之一。隨著(zhù)計算機軟硬件技術(shù)、總線(xiàn)技術(shù)、電子技術(shù)等的快速發(fā)展,控制系統臃腫、接線(xiàn)布線(xiàn)復雜、占用空間大的傳統電磁機械儀表漸漸被淘汰,虛擬儀表正以傳統機械儀表無(wú)法比擬的速度迅猛發(fā)展。目前虛擬儀表通常包括純數字儀表和虛擬儀表盤(pán)儀表2種:純數字儀表成本較低,但功能和界面比較簡(jiǎn)單,滿(mǎn)足不了一般駕駛員的需求;而現有的虛擬儀表盤(pán)儀表雖然功能和界面比較豐富,但又存在著(zhù)開(kāi)發(fā)成本高、可移植性和可重繪性差、可擴展性不足等缺點(diǎn),不利于大范圍的推廣與應用。
針對傳統儀表和現有儀表存在的不足,本文提出了一種新型的車(chē)載虛擬儀表設計方案,采用ARM 處理器S3C6410為核心的硬件平臺和以嵌入式Linux系統為核心的軟件平臺,并在此基礎上采用開(kāi)放源代碼的圖形界面庫QT開(kāi)發(fā)儀表終端應用程序。該虛擬儀表可讀性好,讀數精度高,在可移植性、可維護性和成本方面都得到了良好的改善,具有較大的科研價(jià)值和商業(yè)使用價(jià)值。
1 系統總體設計
本文所介紹的車(chē)載虛擬儀表的基本設計思想是將汽車(chē)上安裝的各種傳感器采集到的數據進(jìn)行智能化的處理,然后在運行于嵌入式Linux系統的使用QT設計的虛擬儀表盤(pán)上進(jìn)行顯示,以便于監測汽車(chē)各系統的工作狀況,如剩余油量、當前車(chē)速、行駛里程等,并在某狀態(tài)出現異?;虼嬖谖kU時(shí)向駕駛員提示報警。
如圖1所示,本車(chē)載虛擬儀表系統的設計總體由3個(gè)部分組成:
(1)信號采集:對汽車(chē)上安裝的的各種傳感器采集的速度、剩余油量等汽車(chē)狀態(tài)信息,經(jīng)過(guò)處理轉換后,將其轉換為計算機可以識別的數字量;(2)數據處理:將“信號采集”過(guò)程傳輸來(lái)的數據進(jìn)行必要的處理,將有用的數據保存,以便于顯示和報警,本過(guò)程主要由嵌入式處理器完成;(3)人機交互:將“數據處理”過(guò)程處理完成的數據,在使用QT設計的虛擬儀表盤(pán)上動(dòng)態(tài)顯示,主要顯示內容有:當前速度、燃油箱的存油量、時(shí)間日期、行駛里程、報警燈等;在某項狀態(tài)出現異常時(shí),通過(guò)報警模塊向駕駛員提示報警。

圖1 虛擬儀表系統結構框圖
2 虛擬儀表硬件設計
虛擬儀表的硬件結構圖如圖2所示。虛擬儀表的核心處理器采用ARM1176JZF-S核的S3C6410芯片,其主頻最高可達到667MHz,內部繼承了強大的多媒體處理單元,帶有3D圖形硬件加速器,并支持2D圖形圖像的平滑縮放等操作,有利于為用戶(hù)提供高靈敏度的汽車(chē)狀態(tài)動(dòng)態(tài)顯示;外接256 MB SDRAM 和2GBNANDFLASH;串口連接信號轉換處理模塊,轉換處理模塊內部集成CAN-RS232轉換器及24位的A/D轉換器LTC2414,接收相關(guān)傳感器采集的各種汽車(chē)狀態(tài)信號,并經(jīng)過(guò)處理后,將處理完成的數據上傳至處理器;外接LCD模塊采用8寸TFT液晶顯示屏,處理器內部集成的LCD控制器信號線(xiàn)經(jīng)過(guò)驅動(dòng)電路后即可連接LCD模塊,為虛擬儀表顯示提供了硬件平臺;外接由語(yǔ)音芯片組成的報警模塊,在必要的時(shí)候可以由處理器驅動(dòng)報警模塊以語(yǔ)音的形式向駕駛員提示報警。

圖2 虛擬儀表的硬件結構圖
3 虛擬儀表軟件設計
本系統采用嵌入式Linux作為操作系統,在Linux平臺下編寫(xiě)虛擬儀表的驅動(dòng)程序和應用程序,采用QT/embedded設計虛擬儀表軟面板。應用程序的主要功能有,當接收到各個(gè)經(jīng)轉換處理的傳感器采集到的信號后,將其有用的數據提取并加以存儲,然后調用儀表顯示程序,將需要顯示的內容顯示到不同的虛擬儀表盤(pán)中,同時(shí)并行判斷各項參數是否正常,若出現異常則調用語(yǔ)音報警程序和顯示程序提示報警。虛擬儀表軟件結構圖如圖3所示。虛擬儀表軟件開(kāi)發(fā)主要有2個(gè)內容:開(kāi)發(fā)環(huán)境的搭建、虛擬儀表應用程序的設計。

圖3 虛擬儀表的軟件結構圖
3.1 開(kāi)發(fā)環(huán)境的搭建
為了開(kāi)發(fā)滿(mǎn)足功能的應用程序,本文采用的軟件開(kāi)發(fā)環(huán)境是Vmware WorkStation 7虛擬機和Fedora 13操作系統,在此環(huán)境中安裝交叉編譯器ARM-linux-gcc 4.5.1,用來(lái)完成包含相關(guān)驅動(dòng)程序的虛擬儀表系統內核、QT庫和應用程序的編譯;編譯安裝QT/Embedded庫,用來(lái)支持虛擬儀表人機交互界面程序的開(kāi)發(fā)并生成虛擬儀表系統中需要的QT庫文件;編譯Tslib觸摸屏庫,為虛擬儀表系統添加觸摸屏支持;在Fedora13系統中安裝QT Creator軟件,用于完成虛擬儀表系統應用程序的開(kāi)發(fā);移植嵌入式設備的系統引導程序U-boot;編寫(xiě)硬件平臺相關(guān)驅動(dòng),然后裁剪編譯Linux2.6.10內核并在其中加載已編譯的相關(guān)驅動(dòng);制作硬件平臺需要的根文件系統,在其中移植已配置、編譯過(guò)的tslib庫和QT/Embedded庫。
3.2 應用程序開(kāi)發(fā)
本虛擬儀表系統的的應用程序基于QT/Embedded平臺,使用QT的輕量級集成開(kāi)發(fā)環(huán)境QT Creator完成開(kāi)發(fā),最后在已搭建的開(kāi)發(fā)環(huán)境中編譯生成可執行二進(jìn)制文件,并將其移植到硬件平臺中的文件系統中進(jìn)行測試。
虛擬儀表系統應用程序的主要工作流程如圖4所示,在系統上電后,應用程序開(kāi)始運行,要實(shí)現汽車(chē)虛擬儀表系統的功能,應用程序需要完成虛擬儀表面板和后臺處理程序的開(kāi)發(fā):

圖4 系統軟件工作流程圖
3.2.1 虛擬儀表面板的繪制
虛擬儀表面板主要將汽車(chē)的一些基本狀態(tài)在LCD上通過(guò)表盤(pán)和數字直觀(guān)、動(dòng)態(tài)的顯示出來(lái),本設計中采用速度、油量、電池電量、時(shí)間日期、安全帶、安全氣囊、行駛里程等狀態(tài)。
為了提高本虛擬儀表的可擴展性和可維護性,在本設計中,為每種具體的虛擬儀表對象定義一個(gè)抽象類(lèi)。
下面即以?xún)x表盤(pán)類(lèi)(QMeter)為例介紹本系統中虛擬儀器面板的繪制。
在需要顯示的各種狀態(tài)中,速度和油量通常以?xún)x表盤(pán)形式顯示,虛擬儀表模塊中的虛擬儀表盤(pán)采用QT的二維圖形引擎的基礎類(lèi)QPainter開(kāi)發(fā)。QPainter具有豐富的圖形圖像繪制函數,并支持反走樣、漸變填充、像素混合、線(xiàn)性變換等特性,利用這些函數完成儀表盤(pán)的繪制。
QMeter類(lèi)的定義如下:

3.2.2 后臺處理程序
后臺處理程序主要將系統下層采集的數據進(jìn)行分析處理,將有用的數據傳送至虛擬儀表面板顯示,實(shí)現虛擬儀表的動(dòng)態(tài)顯示,同時(shí)以多線(xiàn)程的方式不斷檢測汽車(chē)各項狀態(tài),當某項狀態(tài)出現異?;虼嬖谖kU時(shí)驅動(dòng)LCD和語(yǔ)音芯片向駕駛員報警,其中異常狀態(tài)有超速、存油量過(guò)低、電池電量過(guò)低等。下面以報警子程序為例講解后臺處理子程序。
報警子程序在后臺處理程序中新建一個(gè)線(xiàn)程,通過(guò)多線(xiàn)程的方式以輪詢(xún)的方式查詢(xún)各個(gè)傳感器的狀態(tài),當發(fā)現某個(gè)狀態(tài)存在危險時(shí),驅動(dòng)語(yǔ)音芯片發(fā)出相應的報警信息。其定義如下:

QT特有的信號與槽(signal/slots)機制實(shí)現方式如下:

通過(guò)調用QObject對象的connect函數,將報警線(xiàn)程的sendData信號與主線(xiàn)程的槽函數Deal()關(guān)聯(lián),當報警偵聽(tīng)線(xiàn)程發(fā)射信號時(shí),主線(xiàn)程槽函數及時(shí)被調用,驅動(dòng)報警。
4 應用程序示例
將裁剪、編譯過(guò)的內核與制作的帶QT庫的文件系統燒寫(xiě)到開(kāi)發(fā)板。在開(kāi)發(fā)環(huán)境內交叉編譯編寫(xiě)的應用程序,得到可執行二進(jìn)制文件,將此文件移植到開(kāi)發(fā)板,即可實(shí)現應用程序的發(fā)布。重新開(kāi)機,運行應用程序即顯示虛擬儀表界面,如圖5所示。

圖5 基于嵌入式Linux與QT的汽車(chē)虛擬儀表主界面
通過(guò)汽車(chē)上的各種傳感器采集數據,通過(guò)控制器和高速CAN總線(xiàn)傳送到S3C6410硬件平臺解析,應用程序得到解析后的數據后,即可動(dòng)態(tài)的顯示當前車(chē)輛的各種狀態(tài)及報警情況。
5 結 語(yǔ)
本文設計的汽車(chē)虛擬儀表,具有優(yōu)良的跨平臺性能;該設計方案使得儀表信息量增大,操作簡(jiǎn)單,易于維護,界面友好;采用開(kāi)放源碼設計,使得本系統開(kāi)發(fā)成本降低;使用雙緩沖技術(shù)消除了儀表顯示頁(yè)面的閃爍;采用多線(xiàn)程技術(shù),使處理、顯示與報警同時(shí)進(jìn)行,提高了系統的實(shí)時(shí)性與靈敏度;將具體的虛擬儀表對象定義為抽象類(lèi),增強了虛擬儀表的擴展性。經(jīng)實(shí)驗測試,本虛擬儀表系統的所有功能模塊均能正常運行,該系統的應用將對降低汽車(chē)的成本,縮短汽車(chē)儀表系統的研發(fā)周期,提供高友好度的人機界面具有重要的意義。
評論