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