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