<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)ndroid平臺的車(chē)載信息娛樂(lè )系統架構研究

基于A(yíng)ndroid平臺的車(chē)載信息娛樂(lè )系統架構研究

作者: 時(shí)間:2015-03-11 來(lái)源:網(wǎng)絡(luò ) 收藏

  引言

本文引用地址:http://dyxdggzs.com/article/270836.htm

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

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

  1 背景知識

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

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

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

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

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

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

  2 谷歌Android

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

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

  2.1 結構概述

  Android系統架構由5部分組成:Linux內核、庫函數、Android運行態(tài)、應用程序框架、應用程序。

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

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

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

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

  2.2 安全性

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

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

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

  Android有兩種進(jìn)程間通信的模型:intent和code綁定。intent類(lèi)框架提供上層的進(jìn)程間通信,這是最好的方式,可以動(dòng)態(tài)地利用SDK包進(jìn)行開(kāi)發(fā),并與上層應用程式綁定。intent類(lèi)包含了幾個(gè)用來(lái)描述調用者真正意圖的域,調用者發(fā)送intent給Android的intent解析器,And-roid系統將通過(guò)intent過(guò)濾器從所有的應用程序中選擇最適合處理該intent的activity類(lèi)。intent域包含了期望的處理方式、類(lèi)以及數據字符、數據的MIME類(lèi)型。

  intent能夠被用來(lái)觸發(fā)activities,發(fā)送數據給廣播并啟動(dòng)相應的服務(wù)。安全性方面的限制主要通過(guò)Android系統提供的權限框架類(lèi)來(lái)實(shí)現。

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

  3 Android應用在車(chē)載電子的一種架構

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

  3.1 汽車(chē)管理模塊

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

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

  3.2 與應用程序之間的交互

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

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

  利用預先定義的安全級別,它可以指定不同安全級別擁有以下的權限:

 ?、偎械?。任何人可以訪(fǎng)問(wèn)應用程序

 ?、谕ǔG闆r。訪(fǎng)問(wèn)是有權限決定的,但是一些應用程序的權限沒(méi)有具體指出權限人;在程序安裝后,權限會(huì )被手動(dòng)設置。

 ?、畚kU。訪(fǎng)問(wèn)時(shí)有權限限制的,用戶(hù)在安裝時(shí)必須有詳盡的安全許可。

 ?、芎灻?。訪(fǎng)問(wèn)是有權限限制的,只要應用程序獲得平臺的認證,那么權限就會(huì )自動(dòng)同意。

  平臺認證就是車(chē)載設計商在開(kāi)發(fā)設計過(guò)程中使用的簽署平臺。它也用于簽署汽車(chē)管理類(lèi)。如果一個(gè)第三方申請了此證書(shū),它就具有完整的控制汽車(chē)擴展(事實(shí)上汽車(chē)管理類(lèi)只是一個(gè)簽署應用平臺證書(shū)的應用程序)。通過(guò)以下屬性定義的汽車(chē)功能,能夠通過(guò)高級別的AIDL接口去訪(fǎng)問(wèn):



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

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

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

  結語(yǔ)

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

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程


c++相關(guān)文章:c++教程




關(guān)鍵詞: Android ARM

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>