《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 設(shè)計(jì)應(yīng)用 > 基于Android平臺(tái)的車(chē)載信息娛樂(lè)系統(tǒng)架構(gòu)研究
基于Android平臺(tái)的車(chē)載信息娛樂(lè)系統(tǒng)架構(gòu)研究
摘要: 本文概述了車(chē)載電子系統(tǒng)的相關(guān)知識(shí),,并介紹了GoogleAndroid系統(tǒng)背景知識(shí);設(shè)計(jì)了一個(gè)基于Android架構(gòu)的車(chē)載電子可擴(kuò)展平臺(tái),,以適應(yīng)個(gè)性化汽車(chē)發(fā)展的需要,。下一步的工作是引導(dǎo)該系統(tǒng)運(yùn)行在自定義硬件上,,并獲取實(shí)時(shí)的汽車(chē)數(shù)據(jù),。
Abstract:
Key words :

引言

車(chē)載電子行業(yè)有著巨大的市場(chǎng)潛力,,因?yàn)檐?chē)主們期望將用在手機(jī)上面的某些應(yīng)用軟件直接運(yùn)行在自己的私家車(chē)上,。但同時(shí)也面臨諸多挑戰(zhàn),,車(chē)載電子廠商需要滿(mǎn)足不同汽車(chē)型號(hào)的要求,,而且即便是同一品牌的不同車(chē)型往往也需要不同的定制。如今的車(chē)主們都希望能夠像使用智能手機(jī)一樣隨心所欲地安裝或者刪除應(yīng)用軟件,。要將手機(jī)上使用的軟件移植到車(chē)載電子系統(tǒng)中,,開(kāi)發(fā)者必須面對(duì)一個(gè)嚴(yán)峻的挑戰(zhàn),即第三方應(yīng)用程序必須在一個(gè)隔離的環(huán)境中運(yùn)行,,以此來(lái)阻止對(duì)其他車(chē)載功能模塊的干擾,,以及可能使車(chē)主信息泄露等威脅。同時(shí),,第三方應(yīng)用軟件必須跟車(chē)載其他系統(tǒng)有效地結(jié)合起來(lái),,以便給用戶(hù)帶來(lái)更加完美的用戶(hù)體驗(yàn)。最后,,第三方軟件開(kāi)發(fā)者必須針對(duì)車(chē)載系統(tǒng)的共同特征,,開(kāi)發(fā)一套公用平臺(tái),以方便不同的汽車(chē)制造商進(jìn)行移植,,而且可以使同一個(gè)應(yīng)用程序無(wú)縫隙地在不同的品牌的轎車(chē)上使用,。

本文是對(duì)谷歌Android系統(tǒng)應(yīng)用的一種創(chuàng)新擴(kuò)展,,它可以對(duì)第三方應(yīng)用程序進(jìn)行隔離,并使可信任的第三方應(yīng)用程序有訪問(wèn)汽車(chē)功能軟件層的權(quán)限,,加強(qiáng)了對(duì)汽車(chē)安全的防范,。

1 背景知識(shí)

人們直觀上感覺(jué)汽車(chē)內(nèi)部的消費(fèi)電子似乎只是提供同智能手機(jī)、PDA以及MP3類(lèi)似的功能,,但是由于其在使用時(shí)不可避免地要與汽車(chē)其他功能模塊接觸,,所以車(chē)載娛樂(lè)電子比其他消費(fèi)電子要更加復(fù)雜。一般情況下,,汽車(chē)上面的大多數(shù)應(yīng)用軟件都是廠商在汽車(chē)生產(chǎn)的時(shí)候已經(jīng)固化好,,它們一般會(huì)隨著汽車(chē)的報(bào)廢而報(bào)廢,所以其生命周期一般是手機(jī)或者M(jìn)P3的5~10倍,。這就要求車(chē)載電子設(shè)計(jì)公司支持對(duì)其出廠后的應(yīng)用程序進(jìn)行長(zhǎng)期升級(jí),。但由于電子產(chǎn)品更新?lián)Q代很快,僅靠軟件升級(jí)很大程度上提高了成本,。

GENIVI聯(lián)盟去年同一些汽車(chē)巨頭,、芯片設(shè)計(jì)巨頭、軟件開(kāi)發(fā)公司等召開(kāi)了一次大會(huì),,主要討論的是怎樣為車(chē)載電子產(chǎn)品建立一個(gè)標(biāo)準(zhǔn)公開(kāi)的開(kāi)發(fā)平臺(tái),。GENIVI提出開(kāi)發(fā)一個(gè)可擴(kuò)展的架構(gòu),可能會(huì)應(yīng)用到下一代車(chē)載電子上面,,它需要在以下方面進(jìn)行努力:

①通過(guò)從開(kāi)源社區(qū)以及專(zhuān)業(yè)軟件開(kāi)發(fā)聯(lián)盟獲取無(wú)縫隙的軟件補(bǔ)丁以及插件,,使其可以增加更多的內(nèi)容和特點(diǎn),,并始終要考慮系統(tǒng)的安全性以及可靠性,。

②增加車(chē)主和乘客的切身享受,并且盡量使其性?xún)r(jià)比更高,,努力降低設(shè)備成本,。

GENIVI的軟件架構(gòu)利用英特爾的Moblin平臺(tái)作為框架,通過(guò)增加或者刪除組件來(lái)滿(mǎn)足特定汽車(chē)需求和使用,。支持用戶(hù)自定義安裝應(yīng)用程序正在討論,,同時(shí),許多可供選擇的平臺(tái)正在磋商中,,谷歌的Android系統(tǒng)便是其中之一,。

要強(qiáng)調(diào)的是,目前被GENIVI和Moblin重點(diǎn)強(qiáng)調(diào)支持的汽車(chē)電子硬件設(shè)備(CAN總線上網(wǎng)絡(luò)特定的設(shè)備),,當(dāng)前在Android上卻未能實(shí)現(xiàn),。但由于Android對(duì)開(kāi)源的大力支持,允許用戶(hù)對(duì)終端程序安裝并卸載,,目前Moblin對(duì)這些功能尚未許可,。

2 谷歌Android

2007年底,,在谷歌主持召開(kāi)的開(kāi)放手機(jī)聯(lián)盟大會(huì)上,一個(gè)完全免費(fèi)開(kāi)放的手機(jī)平臺(tái)誕生了,,其目標(biāo)是要延伸到更為廣泛的硬件設(shè)備當(dāng)中,。谷歌Android基本的特點(diǎn)是其開(kāi)放性,免費(fèi)的SDK源碼開(kāi)發(fā)者可以很容易下載得到,,Google的號(hào)召力以及Android的開(kāi)源性迅速促使開(kāi)發(fā)者社區(qū)的形成,。

Android是一個(gè)主要為手機(jī)設(shè)備提供的開(kāi)發(fā)平臺(tái),它包含一個(gè)系統(tǒng)內(nèi)核,、中間層和底層驅(qū)動(dòng)以及一些綁定的應(yīng)用程序,。整個(gè)項(xiàng)目有Apache許可證版本2授權(quán),因此移動(dòng)運(yùn)營(yíng)商,、軟件企業(yè),、任何開(kāi)發(fā)人員可以添加或刪除功能。按照2.0范例協(xié)議,,即使不是內(nèi)容提供商,,共享應(yīng)用程序都是可能的。該平臺(tái)允許一些二次開(kāi)發(fā)商根據(jù)自己的需要添加新的功能或者應(yīng)用,,所以可以很容易開(kāi)發(fā)出豐富的端對(duì)端應(yīng)用程序,。

2.1 結(jié)構(gòu)概述

Android系統(tǒng)架構(gòu)由5部分組成:Linux內(nèi)核、庫(kù)函數(shù),、Android運(yùn)行態(tài),、應(yīng)用程序框架、應(yīng)用程序,。

在線性架構(gòu)的底層是Linux內(nèi)核,,基本上是Linux2.6.27版本。通過(guò)Linux內(nèi)核為Android更新補(bǔ)丁,,內(nèi)核負(fù)責(zé)管理系統(tǒng)服務(wù)程序以及驅(qū)動(dòng)模塊,、內(nèi)存管理、任務(wù)調(diào)度,。根文件系統(tǒng)使用rootfs,,而數(shù)據(jù)及文件使用YAFFS,它是專(zhuān)門(mén)為NAND和NOR存儲(chǔ)器設(shè)計(jì)驅(qū)動(dòng)的文件系統(tǒng),。

應(yīng)用程序框架和Android運(yùn)行時(shí)態(tài)主要通過(guò)C/C++庫(kù),,這部分庫(kù)包括標(biāo)準(zhǔn)的C庫(kù)、多媒體庫(kù),、圖形界面庫(kù),、瀏覽器、字體庫(kù)以及數(shù)據(jù)庫(kù),。

Android運(yùn)行態(tài)包括核心庫(kù)以及Java Dalvik虛擬機(jī),,Dalvik是一種允許在有限的內(nèi)存上運(yùn)行多進(jìn)程的虛擬機(jī),,每一個(gè)程序運(yùn)行在一個(gè)獨(dú)立的Linux進(jìn)程里。

應(yīng)用程序框架由許多類(lèi),、接口,、包組成。它的目的是提供一種簡(jiǎn)單,、連續(xù)的方式去管理圖形化用戶(hù)接口,,訪問(wèn)資源內(nèi)存,收到通知,,或者處理來(lái)電,,主要的組成部分有可視系統(tǒng)、activity類(lèi)管理,、共享管理,、資源管理、通知管理,、電話管理,。

2.2 安全性

Android內(nèi)部進(jìn)程通信以及安全性主要指在安裝第三方應(yīng)用的情況下,盡可能保證系統(tǒng)的穩(wěn)定性,。底層的許可機(jī)制是由Linux內(nèi)核以及文件系統(tǒng)提供的,,基本上可以滿(mǎn)足基于Linux內(nèi)核的其他系統(tǒng)。由于Android設(shè)備針對(duì)的是單用戶(hù),,因此多用戶(hù)服務(wù)的設(shè)備靠分配唯一的標(biāo)識(shí)才能應(yīng)用,。

此外,Android是靜態(tài)的安全許可系統(tǒng),,它在程序安裝時(shí)被強(qiáng)制使用,。

2.3 進(jìn)程間的通信

Android有兩種進(jìn)程間通信的模型:intent和code綁定。intent類(lèi)框架提供上層的進(jìn)程間通信,,這是最好的方式,,可以動(dòng)態(tài)地利用SDK包進(jìn)行開(kāi)發(fā),,并與上層應(yīng)用程式綁定,。intent類(lèi)包含了幾個(gè)用來(lái)描述調(diào)用者真正意圖的域,調(diào)用者發(fā)送intent給Android的intent解析器,,And-roid系統(tǒng)將通過(guò)intent過(guò)濾器從所有的應(yīng)用程序中選擇最適合處理該intent的activity類(lèi),。intent域包含了期望的處理方式、類(lèi)以及數(shù)據(jù)字符,、數(shù)據(jù)的MIME類(lèi)型,。
intent能夠被用來(lái)觸發(fā)activities,發(fā)送數(shù)據(jù)給廣播并啟動(dòng)相應(yīng)的服務(wù),。安全性方面的限制主要通過(guò)Android系統(tǒng)提供的權(quán)限框架類(lèi)來(lái)實(shí)現(xiàn),。

每個(gè)程序運(yùn)行在自身的進(jìn)程里,,但開(kāi)發(fā)者能夠?qū)懸粋€(gè)服務(wù)運(yùn)行在不同的進(jìn)程中,一些對(duì)象在進(jìn)程間傳遞也是允許的,。在Android平臺(tái)上,,一個(gè)進(jìn)程通常不能進(jìn)入其他進(jìn)程內(nèi)存。因此,,兩個(gè)進(jìn)程間如果相互通信,,需要把他們的對(duì)象分解成操作系統(tǒng)可以識(shí)別的基礎(chǔ)類(lèi)型,并且通過(guò)進(jìn)程的邊界來(lái)控制對(duì)象,。附帶SDK的AIDL工具自動(dòng)生成控制代碼段,,AIDL是用來(lái)生成在兩個(gè)進(jìn)程之間通信代碼的一種接口描述語(yǔ)言。AIDL IPC機(jī)制就是使用代理類(lèi)在客戶(hù)端和實(shí)現(xiàn)端傳遞參數(shù),。

3 Android應(yīng)用在車(chē)載電子的一種架構(gòu)

Android擴(kuò)展了汽車(chē)的總體結(jié)構(gòu),,基本架構(gòu)如圖1所示,自定義的Android平臺(tái)應(yīng)用在汽車(chē)功能模塊和支持組件的一邊,。這種擴(kuò)展的目的是提供一種允許可信任的應(yīng)用程序訪問(wèn)汽車(chē)功能模塊(車(chē)輛制動(dòng),、轉(zhuǎn)向或電力傳動(dòng)分配)的安全機(jī)制,而不可信任的程序被隔離并且不可以訪問(wèn),。應(yīng)用程序之間的這種強(qiáng)制性的安全策略是源于可靠性要求的IVI系統(tǒng),。通過(guò)汽車(chē)管理類(lèi)可信任應(yīng)用程序有機(jī)會(huì)訪問(wèn)一些特性(CAN總線),但處理不當(dāng)也可能危及車(chē)輛安全(例如通過(guò)連續(xù)發(fā)送無(wú)效的數(shù)據(jù)幀使得CAN總線帶寬飽和),。這種方案的主要特點(diǎn)是使上層邏輯去耦合,,那樣就可以方便上層應(yīng)用獲取并處理來(lái)自底層數(shù)據(jù)。

3.1 汽車(chē)管理模塊

從上圖可知,,汽車(chē)管理模塊可以看成是負(fù)責(zé)車(chē)載應(yīng)用程序與Android底層交互的一個(gè)中間類(lèi)庫(kù),,只有通過(guò)它,車(chē)載應(yīng)用程序才可以獲取相應(yīng)底層數(shù)據(jù),。

它有兩個(gè)接口:一個(gè)是對(duì)應(yīng)于應(yīng)用程序而另一個(gè)是對(duì)應(yīng)平臺(tái)的組件,,它是在Android SDK上面開(kāi)發(fā)的并且擁有平臺(tái)認(rèn)證的一款應(yīng)用程序。因?yàn)檫@個(gè)管理類(lèi)不屬于平臺(tái)本身,,所以用戶(hù)在沒(méi)有專(zhuān)業(yè)人員幫助時(shí)不能自行更新,。

3.2 與應(yīng)用程序之間的交互

Android是基于不透明的IPC之間的通信模型。應(yīng)用程序?qū)⑵涔δ芙唤o操作系統(tǒng),,在運(yùn)行時(shí),,其他的應(yīng)用程序可以獲得他們的功能?;旧?,平臺(tái)提供了后期管理和維護(hù)代碼的能力,這種模型也可以用于在第三方應(yīng)用程序和汽車(chē)管理類(lèi)之間的交互。

汽車(chē)管理類(lèi)處理汽車(chē)功能模塊通過(guò)屬性android.permission.car.speed.read和android.permission.car.speed.write,。對(duì)于每一個(gè)屬性(例如汽車(chē)總線發(fā)送實(shí)時(shí)速度),,Android提供兩種權(quán)限,創(chuàng)建并且指派給管理類(lèi),。

利用預(yù)先定義的安全級(jí)別,,它可以指定不同安全級(jí)別擁有以下的權(quán)限:
①所有的。任何人可以訪問(wèn)應(yīng)用程序
②通常情況,。訪問(wèn)是有權(quán)限決定的,,但是一些應(yīng)用程序的權(quán)限沒(méi)有具體指出權(quán)限人;在程序安裝后,,權(quán)限會(huì)被手動(dòng)設(shè)置,。
③危險(xiǎn)。訪問(wèn)時(shí)有權(quán)限限制的,,用戶(hù)在安裝時(shí)必須有詳盡的安全許可,。
④簽名。訪問(wèn)是有權(quán)限限制的,,只要應(yīng)用程序獲得平臺(tái)的認(rèn)證,,那么權(quán)限就會(huì)自動(dòng)同意。
平臺(tái)認(rèn)證就是車(chē)載設(shè)計(jì)商在開(kāi)發(fā)設(shè)計(jì)過(guò)程中使用的簽署平臺(tái),。它也用于簽署汽車(chē)管理類(lèi),。如果一個(gè)第三方申請(qǐng)了此證書(shū),它就具有完整的控制汽車(chē)擴(kuò)展(事實(shí)上汽車(chē)管理類(lèi)只是一個(gè)簽署應(yīng)用平臺(tái)證書(shū)的應(yīng)用程序),。通過(guò)以下屬性定義的汽車(chē)功能,,能夠通過(guò)高級(jí)別的AIDL接口去訪問(wèn):

這種讀/寫(xiě)的方式允許通過(guò)輸入/輸出來(lái)訪問(wèn)屬性的值。通過(guò)增加或者刪除監(jiān)聽(tīng)器的方法來(lái)允許注冊(cè)或者取消相關(guān)的回調(diào)函數(shù),,該通知的屬性值是可以改變的,。汽車(chē)管理類(lèi)繼承了此接口。個(gè)人的電話是要被Android權(quán)限相關(guān)的屬性核實(shí)的,,如果來(lái)電者是被允許執(zhí)行的,,那么汽車(chē)管理類(lèi)進(jìn)程會(huì)自動(dòng)處理,否則就會(huì)拋出一個(gè)異常,。

在開(kāi)發(fā)應(yīng)用時(shí),,開(kāi)發(fā)者需要知道其屬性名稱(chēng)以及數(shù)據(jù)的類(lèi)型才能夠開(kāi)發(fā)第三方應(yīng)用程序。而且所有的交互發(fā)生在先前的AIDL接口,。這就意味著,,多虧Android系統(tǒng)的架構(gòu),,開(kāi)發(fā)者并不需要了解整個(gè)SDK而是只要知道AIDL文件定義的電話屬性和AIDL文件描述的回調(diào)函數(shù),。而且,如果不同的IVI來(lái)自不同的生產(chǎn)商,,但有著相同的屬性功能,,那么第三方應(yīng)用程序使用這樣的屬性能夠無(wú)縫隙地運(yùn)行在IVI上,。

為了證實(shí)以上架構(gòu)的實(shí)用性,開(kāi)發(fā)了一塊實(shí)現(xiàn)完整功能的工作模塊,,由自定義的Android發(fā)布版的概念驗(yàn)證組成,。該模塊已經(jīng)通過(guò)Andr-oid模擬器的測(cè)試,基于ARM處理器,,自定制模式的典型功能和IVI上面的用戶(hù)界面,,并在有英特爾Atom處理器的上網(wǎng)本上運(yùn)行。

結(jié)語(yǔ)

本文概述了車(chē)載電子系統(tǒng)的相關(guān)知識(shí),,并介紹了Google Android系統(tǒng)背景知識(shí),;設(shè)計(jì)了一個(gè)基于Android架構(gòu)的車(chē)載電子可擴(kuò)展平臺(tái),以適應(yīng)個(gè)性化汽車(chē)發(fā)展的需要,。下一步的工作是引導(dǎo)該系統(tǒng)運(yùn)行在自定義硬件上,,并獲取實(shí)時(shí)的汽車(chē)數(shù)據(jù)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。