郭健忠,廖許葦,謝 斌,閔 銳,耿 屹,劉小容
(1.武漢科技大學汽車與交通工程學院,湖北 武漢430065;2.武漢保華顯示科技有限公司,湖北 武漢430082)
近年來,中國汽車電子市場保持著較高增長速度,相應的汽車電子產品市場規模已經超過萬億。激烈的競爭對汽車的環保性、安全性、經濟性以及智能化提出了很高的要求[1]。 特別伴隨著電動汽車在市場的占比越來越重,所需要顯示的參數復雜,遠遠超出傳統燃油汽車儀表的顯示范圍[2-3]。 因此,汽車全液晶儀表已經成為了汽車電子中極其重要的一部分。 伴隨著液晶儀表的發展,也帶來了一系列的問題。 例如可移植性較差、開發生產成本高、二次開發性較低等一系列缺點,這些在一定程度上阻礙了其技術創新,阻礙了虛擬儀表的應用推廣[4]。 汽車液晶儀表作為駕駛員直觀掌握汽車行駛狀態的平臺,是汽車整個系統中十分重要的部分[5-6]。 近年來隨著純電汽車的發展使得儀表所需包含的信息量逐年增多和市場消費者對乘用車儀表顯示效果的更高要求,傳統的液晶儀表開發方式已無法滿足當前的開發需求,所以有必要設計一種提高液晶儀表開發效率的方式。
汽車液晶儀表的開發經歷過幾個階段,從最初裸機開發(不搭載操作系統),到目前QT 嵌入式開發,開發流程和難度越發簡化,但是隨著當前HMI(人機交互界面)所含信息密度的逐漸提高和ADAS(高級駕駛輔助系統)的加入,造成產品開發難度的急劇上升和修改困難,故需要一種快速簡單的工具簡化流程,縮短開發成本和開發時間。
傳統的裸機開發,內部不搭載操作系統,圖片的顯示過程是將圖形庫數據通過圖形管理單元的顯示接口在顯示屏上顯示[7]。 開發者先設計好需要顯示的圖像文件,并將該文件燒錄進入開發板的FLASH 中。 當需要顯示時通過圖形管理模塊調用對應圖片進行顯示。 該方法工作量巨大并且無法進行復雜動畫的顯示。 例如,如果開發者需要使表盤指針旋轉,需要準備多達100 個指針圖片,顯示時依次調用,大量占用了芯片內存。
QT 是基于C/C++語言的跨平臺GUI(圖形交互界面)應用程序框架,由于其跨平臺的特性,開發者可以在傳統x86 平臺上通過可視化UI 設計工具QT Creator 完成應用程序的開發后移植至目標嵌入式平臺,從而大幅提升應用程序開發效率。 其應用程序運行依賴嵌入式Linux 操作系統,因此對儀表硬件平臺提出了較高要求。 開發人員將事先準備好的UI 圖片資源文件導入至QT Creator 中,通過可視化UI 設計軟件QT Designer 將所需資源文件移動至設計界面,對每個界面元素構建代碼以控制其縮放旋轉、顯示方式及運動軌跡。 但是由于QT 自帶動畫引擎功能比較單一,如果界面中動效元素過多或過于復雜,開發人員則需要動用大量代碼來設計每個元素的動效,對于矢量路徑動畫這類復雜運動效果的開發非常困難,且不支持多層圖層的遮罩、模糊效果運算,因此QT無法滿足現代全液晶汽車儀表中HMI 設計美觀、動效豐富和界面層級多的設計需求。
傳統的汽車液晶儀表經由一個高性能的芯片同時對圖形資源和數據信號進行處理,但是由于液晶顯示所需要運行的圖片資源極其龐大,單一的處理器無法很好地兼顧,造成了極大的內存占用和浪費。采用高性能芯片時,為了規避EMC(電磁干擾)和EMI(電磁兼容)相關問題[8],電路板內部布線極其復雜,開發板在印板時成本居高不下,再加上高性能芯片的高昂價格,造成生產成本無法達到預期效果。因此,本文采用底板和核心板分開處理的方式,不同模塊分工合作,根據分割的功能選擇低成本,性價比高的芯片。 同時,開發者將芯片分開布置的方式可以使其更加從容地考慮開發板內部走線的問題。 如圖1 所示,底板接受外部CAN 信號和數據IO 采集到的汽車實時信息,經由底板MCU 進行處理后,由I2C 傳輸給核心板,核心板通過傳輸來的數據解析后加載圖片資源控制汽車液晶儀表的正常顯示。

圖1 硬件結構框圖
液晶顯示屏幕的正常顯示需要通過背光電路和顯示驅動電路兩個方面的結合才能如期運行。 液晶顯示屏幕本身不具備發光的特性,使用時必須借助背光源才能達到顯示效果[9]。 顯示驅動電路通過控制液晶層像素來達到顯示效果。 傳統的單芯片儀表將背光電路和顯示驅動電路集合電路板上,本文采取底板和核心板分離的方式,核心板只負責加載圖片資源控制液晶屏顯示,故相較于傳統設計方式,本文需要對硬件進行重設計來控制儀表的正常顯示。 如圖2 所示,為設計的背光電路,背光電路位于底板上,選擇MP2481 背光芯片,輸入12V 電源使能該芯片,MCU 給予PWM 電平信號,經過背光芯片處理后,輸出PWM 波形經過核心板控制屏幕亮滅。

圖2 背光電路
本文選用i.MX6Q 芯片作為圖形處理芯片,該芯片內部集成了顯示驅動電路,無需進行額外的電路設計,如圖3 所示。

圖3 顯示驅動電路
2.2.1 CGI Studio 技術簡介
本文采用的是CGI Studio 進行設計開發,CGI Studio 是富士通公司基于OpenGL ES 進行一層封裝后提供的可進行可視化設計的顯示圖形界面開發框架[10]。 OpenGL ES 是個定義了跨編程語言、跨平臺的業界標準應用程序編程接口(API),引入了對可編程管線的支持,大大提高了不同消費電子設備的3D 圖形渲染速度,在嵌入式系統上實現了全面可編程的3D 圖形[11-12]。 可通過可視化界面配置汽車液晶儀表的顯示界面,并通過自身攜帶的控件對顯示元素進行相應的動畫配置,以實現簡單到復雜的動畫顯示效果。 對比傳統的開發方式和使用QT 進行液晶儀表的開發,CGI Studio 有著前者所不能比擬的優點。 本文采用使用CGI Studio 分別在Windows平臺和Linux 平臺進行開發和移植。
2.2.2 平臺搭建和開發
CGI Studio 作為可視化顯示圖形界面的開發框架,軟件內包含了大量便捷的使用工具。 獲取顯示界面的原始圖像后,將其導入系統內部的顯示界面中,可將圖片在顯示界面上隨意拖動以達到設計過程中最完美的顯示效果。 CGI Studio 基于OpenGL ES 進行的封裝會在顯示界面上定義坐標原點,導入的圖像會基于該坐標原點定義出所處的位置從而生成相應的代碼。 CGI Studio 的控件與圖片進行綁定,賦予圖片各種各樣的屬性,可達到旋轉、平滑移動等一系列動畫效果。 圖片與控件綁定生成的各個部件需要對其進行命名以方便在Linux 進行綁定。在搭建過程中,動畫編輯器可對獨立或者整體的顯示動畫進行編輯,動畫在首尾由兩個關鍵幀構成,中間由空白幀構成,整個動畫由無數的關鍵幀聯系在一起;動畫編輯器可對其中任意一處的關鍵幀進行修改、修飾和刪除。 相比傳統的開發方法可構建出復雜和精美的顯示效果,并可以極大地節約人力物力。 具體開發流程如圖4 所示。

圖4 Windows 平臺開發流程框圖
對比傳統儀表開發方法,CGI Studio 開發HMI界面方便快捷,減少了開發者圖片資源的使用量和研發效率,極大地簡化了開發流程。 本文使用CGI Studio 開發效果圖如圖5 所示。

圖5 顯示效果圖
Windows 平臺的開發完成后生成了相應的BIN文件,將其上傳至開發板i.MX6 搭載的Linux 系統中。 在搭載的Linux 系統中建立接收數據的應用程序,根據CGI Studio 中各個部件的命名來建立相同名字的變量,編譯后生成對應的Taget 文件,將生成的Target 文件與CGI Studio 生成的BIN 文件通過交叉編譯來進行綁定,達到點對點進行傳輸的功能。儀表根據各個變量的數據來決定儀表的顯示狀態。具體開發流程如圖6 所示。

圖6 開發板實現流程
傳統的液晶儀表開發在修改HMI 界面過程中,需對原本的圖片資源進行大量修改才能達到二次開發效果,例如對圖片顯示資源坐標的平移,動畫效果邏輯修改等;同時,根據移植目標板內核的不同也會增加二次開發和移植的難度,開發者需要根據移植目標板的內核來對原程序進行相應的修改才能保證在新的架構上的正常運行。 在原產品上的維護和二次開發極為困難,傳統開發方式和QT 開發方式都需要極大的工作量和大量的代碼才能保證二次開發的順利進行。
本文采用的CGI Studio 開發過程中,HMI 顯示程序和顯示驅動程序互相獨立,分別位于Windows平臺下和Linux 平臺下完成。 傳統的開發方式基于所設計的開發板,在系統級芯片內完成,開發者的一切操作都脫離不開該芯片,芯片能力的強弱直接限制了開發者的能力。 CGI Studio 開發在Windows 平臺下,軟件內部有官方提供的各種各樣便利的插件,資源極其豐富。 研發者在二次開發和移植過程中,HMI 顯示界面可直接在Windows 平臺下進行修改,不受芯片環境的限制,同時,便利的可視化操作和簡易的動畫制作過程在研發者修改過程中提供了極大的便利。 如圖7 所示,研發者在跨平臺移植過程中除了對適應該系統架構的修改外,只需在程序內部搭載與外部顯示信號進行數據通信的程序變量,再通過交叉編譯的方式與CGI Studio 生成的BIN 文件進行變量綁定,即可直接移植進開發板。

圖7 CGI Studio 移植開發流程
根據通信協議制定測試數據庫,將車速信號、報警信號等錄入BusMaster 數據庫中,通過CAN 總線不停循環發送模擬實車運行環境。 儀表預留高低電平硬線接口,將12 V 高電平接入對應接口可點亮儀表對應信號顯示。 測試實物圖如圖8 所示。

圖8 測試實物圖
經過24 h 的測試驗證,本文基于CGI Studio 所設計的汽車儀表,在高頻率和低頻率CAN 報文循環發送下,能流暢顯示車速、里程、轉速、文字報警和圖標報警等各種信息。 經過模擬儀表死機也可觸發看門狗進行儀表重啟。 測試結果表明,儀表運行狀態良好,顯示流暢,不卡頓。
通過設計開發板,在程序中搭載幀率計算模塊將每秒顯示圖片打印在儀表特定部位,同時將三種開發方式的HMI 資源文件分別燒錄進入對應儀表中以進行性能測試。 儀表通過12 V 穩壓電源供電,以錄制的CAN 報文在BusMaster 上進行不間斷的報文回放,測試過程中不定時地向三臺測試儀表發送大量報文數據以驗證儀表響應速度等相關性能,同時觀察大量數據涌入情況下儀表穩定性是否符合使用要求。 經過4 h 不間斷測試,測試結果如表1 所示,裸機開發方式和QT 開發方式在儀表運行過程中可達到預期顯示效果,但打印出的顯示幀率較低,遠遠低于CGI Studio 開發方式下的60 frame/s 顯示幀率,在跨度較大的動畫顯示效果中可明顯看到卡頓;在數據大量涌入的情況下,裸機開發方式和QT開發方式下的圖片資源加載較慢,無法在較短時間內將對應圖標顯示在儀表上方,CGI Studio 開發方式下顯示流暢,響應速度快,不卡頓;在長時間測試過程中,大量數據交互情況下,傳統開發方式下儀表死機重啟頻率較高,QT 開發方式和CGI Studio 開發方式下儀表死機頻率較低。 因此,CGI Studio 在運行性能上優于傳統開發方式和QT 開發方式。

表1 不同開發方式運行性能對比
傳統開發方式在HMI 的界面繪制和驅動程序的制作必須由一人來完成,否則會因為程序的不同而產生干涉,在開發過程中也因為傳統的開發流程過于繁瑣復雜而需耗費大量的時間。 傳統的開發方式需準備大量的圖片資源來進行顯示,對圖片資源的需求和CPU 的資源占用極大;高性能的芯片和開發板內部的布線也使得開發板成本居高不下;因為芯片架構的不同和HMI 界面的修改使得移植和二次開發困難。
使用CGI Studio 可將HMI 界面繪制和驅動程序的制作分離開來,加快開發效率。 同時CGI Studio 的可視化界面繪制流程也讓界面布局制作和動畫制作極其方便。 底板和核心板分離的方式讓芯片性能得到充足的利用。 HMI 顯示界面的開發也不會因為目標芯片架構的不同,影響二次開發和移植。 如表2 所示,相較于傳統開發方式和QT 開發方式,本方法在HMI 開發難度,開發流程,可移植性等方面相較于傳統開發方式有了極大改善。

表2 CGI Studio 與傳統開發方式對比
本文以CGI Studio 為核心設計了一款純電客車的汽車液晶儀表。 創新之處在于通過設計雙板結構合理降低了開發成本;說明傳統的開發方式越發不適應當前環境下繁榮的汽車市場,指出了使用CGI Studio 進行開發的優點,提高了人機交互性能;通過跨平臺開發和交叉編譯綁定數據的方式增加了系統的可移植性;最后通過對成品儀表進行測試驗證,符合當前液晶儀表應用需求;該方案為當下HMI 開發市場提出了一種便捷的方案。