車載信息娛樂系統(tǒng)軟件設計要點
面對日趨激烈的市場競爭和越來越挑剔的用戶,汽車制造商和汽車配件供應商一直在努力創(chuàng)新——具有更新科技含量和更好用戶體驗的產品不斷被應用到汽車中。先進的車載信息娛樂系統(tǒng)已經邁入了一個新的科技時代。它從原先控制收音機或空調的簡單系統(tǒng)發(fā)展到現在可以包含免提電話、衛(wèi)星導航、互聯網服務和支持多種媒體的前后座影音播放的復雜大系統(tǒng)。無論是高端產品,還是中低端產品,這種系統(tǒng)的軟硬件設計都要滿足嚴格的安全性標準,同時又要具有很好的易用性和靈活性。本文將從安全性、實時性、環(huán)保性和新穎性等幾個方面對該系統(tǒng)的軟件設計提出一些思考,希望能夠有助于從事此類系統(tǒng)開發(fā)的工程師。
本文引用地址:http://2s4d.com/article/201706/350726.htm安全性
這里所說的安全性是指(1)系統(tǒng)能夠長時間提供有效服務而不發(fā)生故障;(2)一旦有故障發(fā)生,系統(tǒng)能夠自行處理;(3)系統(tǒng)能夠自動保存故障診斷文件。
處理安全性相關的問題原則是隔離和冗余。隔離就是模塊化。冗余就是增加備份。對硬件設計來說,模塊化和增加冗余設備都是很直接的。實際的挑戰(zhàn)來自于軟件的安全設計,而且大多數的系統(tǒng)故障是由于軟件的錯誤。設計良好的軟件模塊應當保證某個模塊中發(fā)生的故障不會導致其它模塊也發(fā)生故障,更不會導致整個系統(tǒng)故障;而實際系統(tǒng)設計還應該保證發(fā)生故障的模塊很快重新啟動或及時由備份模塊替代,同時整個系統(tǒng)的其它部分正常運轉。
舉例來說,系統(tǒng)中某個任務發(fā)生故障——想要改寫屬于另一個任務的內存區(qū),系統(tǒng)的監(jiān)控程序會監(jiān)控到這是一個非法事件,并重啟發(fā)生故障的任務,同時保存故障診斷文件以供開發(fā)人員今后解決問題——監(jiān)控程序可以非常詳細地記錄故障發(fā)生時的系統(tǒng)狀況,從而能夠幫助開發(fā)人員快速定位問題。
顯然,對于車載信息娛樂系統(tǒng)這樣的大系統(tǒng),傳統(tǒng)的單內核操作系統(tǒng)由于沒有充分隔離內核任務和應用程序的內存空間,很難實現以上例舉的操作。在工業(yè)界非常流行的QNX微內核實時操作統(tǒng),經過多年的實踐和創(chuàng)新,充分實現了各個系統(tǒng)服務的隔離,成為設計高安全性軟件的良好基礎。
實時性
簡單地說,實時性就是系統(tǒng)任務在有效的時間內得到有效的結果。
車載信息娛樂系統(tǒng)是一個多任務的復雜系統(tǒng),其中包含有許多和汽車網絡進行交互的子系統(tǒng),如CAN和MOST,也包括其它的通訊協(xié)議,如 RS232、Ethernet以及藍牙等。從系統(tǒng)軟件設計的開始就要考慮系統(tǒng)的實時特性是非常重要的。一方面,引入實時性設計能夠為用戶帶來更好的應用體驗,如穩(wěn)定和流暢的多媒體播放,準確和有效的導航提示等;另一方面,系統(tǒng)的實時性設計能夠保證某些關鍵任務的順利執(zhí)行,比如藍牙電話和倒車畫面播放等。反過來講,如果這個系統(tǒng)不能夠很好的處理各個任務的優(yōu)先級和實時性,那么在系統(tǒng)實際運行的過程中,難免會出現一個或多個任務無法及時完成,從而導致系統(tǒng)故障和用戶投訴。
更為關鍵的是,整個系統(tǒng)是如此復雜,通常從關機狀態(tài)(電源徹底關閉)到系統(tǒng)啟動進入正常運行狀態(tài)要花費數百毫秒。而汽車啟動時,CAN器件通常會在 65毫秒內發(fā)送開機的信號。連接在CAN總線上的信息娛樂系統(tǒng)必須要在55毫秒或更少的時間內準備好接收開機信號,并在100毫秒內響應開機信號。如果信息娛樂系統(tǒng)不能及時響應CAN開機信號,它將很可能被認為是有故障的CAN器件而被排除在CAN網絡之外。
從實時性的設計出發(fā),系統(tǒng)必須在完成初始化之前就要開始相應CAN網絡的信息。傳統(tǒng)的方式是使用額外的輔助器件來進行此類任務——增加了硬件成本?,F在,采用QNX的“mini-driver”技術可以完全省去這些輔助器件。mini-driver的設計使某些器件驅動,比如CAN驅動,在系統(tǒng)啟動期間就可以使用——順利處理來自CAN網絡的事件響應;當系統(tǒng)啟動完成之后,更完備的驅動會接管mini-driver的所有任務——軟件成本很低。
環(huán)保性
環(huán)保性是指系統(tǒng)能夠有效地進行電源管理。
汽車內的電源管理是一項非常具有挑戰(zhàn)性的任務。汽車電源是電量受限制的電池。在汽車熄火之后,一方面,車內系統(tǒng),尤其是信息娛樂系統(tǒng)不能有過大的耗電量,必須保證正常電池在幾天、甚至幾周后仍然能夠順利點火;另一方面,信息娛樂系統(tǒng)也要能夠在超低能耗的狀態(tài)之下對特定事件作出有效和及時的響應。如果沒有一個多層次的待機狀態(tài),系統(tǒng)每次都要完全重啟,那么不但每次都有較長的開機時間,而且很難滿足對許多實時性事件的正確響應,如在上節(jié)所述的CAN 開機信號。
解決的方案就是根據具體的需要定制多層次的待機狀態(tài),使得信息娛樂系統(tǒng)能夠隨著時間的推移和電池電量的下降逐步進入各個低能耗待機狀態(tài),直至徹底關機。在每個不同的待機狀態(tài)系統(tǒng)都可以對特定的事件做出響應而在足夠短的時間內進入工作狀態(tài)。然而,傳統(tǒng)的電源管理標準APM(Advanced Power Management)和ACPI(Advanced Configuration and Power InteRFace)都很難應用到車載信息娛樂系統(tǒng)的電源管理程序中。APM和ACPI主要是用在個人電腦的電源管理上。APM是運行在BIOS(很少會用在車載信息娛樂系統(tǒng)上的器件)上的程序,電腦的應用程序或操作系統(tǒng)基本不會知道APM所作出的電源管理決定,所以這個方案無法提供我們所需要的可定制型多層次電源管理狀態(tài)。ACPI采用了由操作系統(tǒng)決定電源管理狀態(tài)的方法,它可以做出更為復雜和有效的電源管理。但是在車載信息娛樂系統(tǒng)中,操作系統(tǒng)往往并不知道各個應用程序的具體電源狀態(tài),比如,車是否熄火、藍牙設備是否工作等,而這些正是車載系統(tǒng)電源管理的重點,所以ACPI也不能滿足車載系統(tǒng)電源管理的要求。
基于QNX操作系統(tǒng),電源管理可以作為一個應用程序來開發(fā)。這樣,系統(tǒng)設計人員就能夠根據不同的系統(tǒng)需求設計具有針對性地電源管理方案。通過應用程序之間以及應用程序和操作系統(tǒng)的通信,各個系統(tǒng)模塊的電源狀態(tài)可以得到精確的控制,從而能夠有效地使用能源,促進環(huán)保。
新穎性
新穎性是說產品要有個性,要和其它同類產品區(qū)別開來。
對于車載信息娛樂系統(tǒng)來說,新穎性意味著能夠根據客戶要求快速定制的人機界面和具有質感、內容豐富的圖形顯示,無論是媒體播放器、網頁瀏覽器、還是衛(wèi)星導航系統(tǒng)。所有這一切都和圖形用戶界面的開發(fā)有關。如何在設計階段很好地把人機界面模塊化是設計人員開始設計使就要考慮的關鍵問題,否則今后面對客戶的新需求就會很痛苦——是重新設計軟件,還是拒絕客戶的需求?不單如此,如果不能夠很好地把人機界面模塊化,有時底層的協(xié)議發(fā)生變化,重新設計人機界面就是一個不可避免的難題。
所以,人機界面的模塊化其實不僅僅是外殼的剝離,它其實包含了數據表達的選擇和設備操作的定義。由于人機界面部分通常是車載信息娛樂系統(tǒng)投入較大的代碼部分,所以高質量的模塊化人機界面程序和相關驅動程序可以顯著的降低系統(tǒng)擴展的成本。一方面,模塊化提高了代碼的可重用性,另一方面,它們也減少了測試方面的投入。希望設計開發(fā)人員能充分考慮這一問題。
本文小結
本文就車載信息娛樂系統(tǒng)的軟件設計從安全性、實時性、環(huán)保性和新穎性四個方面提出一些思考,希望這些想法能夠為蓬勃發(fā)展的中國汽車電子帶來些許推動。
評論