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