前言:尋找寫作靈感?中文期刊網用心挑選的協同車載電源管理系統淺析,希望能為您的閱讀和創作帶來靈感,歡迎大家閱讀并分享。
摘要:文中通過研究并修改系統源碼的方式,對車載Android的電源管理模塊進行重新設計,包括與之相關的Input輸入子系統、Audio聲音子系統以及開機動畫時序問題,滿足了智能座艙多樣化的定制需求。最后,通過模擬CAN總線測試以及實車測試,各子任務模塊在進行電源管理狀態切換時,可以做到協同有序,達到了預期目標,為當下國內外車載系統的開發提供了寶貴的經驗,具有一定推廣價值。
關鍵詞:車載系統;智能座艙;電源管理;CAN總線;Android;協同
0引言
車載信息娛樂系統(In-Vehicle-Infotainment,IVI)[1-2],是基于整車CAN總線[3]、ECU控制單元以及HMI人機交互界面的系統,包含儀表、空調和中控面板。信息化帶動了智能化,智能化催動IVI的變遷。從20世紀90年代的WinCE操作系統到Linux操作系統,再到當下開源的Android操作系統,車載系統也變得越來越智能、便捷[4-7]。但是,由于Android系統復雜且龐大,故目前與之相關的電源管理邏輯多集中于底層操作。本文通過對Android系統的研究與分析,基于原車底層電源管理邏輯,提出了一種與之相對應的多任務協同方案,本方案包括開機動畫的時序、按鍵輸入的特殊處理以及聲音系統的協同,一定程度上加速了車聯網產業的發展。
1系統分析
由于車載系統的特殊性,導致其與原生的Android系統存在明顯差異。首先,開機動畫要與車身的啟動信號進行綁定,不再遵循Android原生的啟動流程;其次,Android系統為了個人隱私和手機的功耗考慮,會自動鎖屏和休眠[8],但車載娛樂系統是伴隨車身的工作持續運作,不存在自動休眠和鎖屏功能;最后,按鍵功能定制,以Power按鍵舉例,傳統AndroidMobile,長按Power鍵為重啟,短按為鎖屏,而車載最常見的短按為顯示時鐘界面,長按則可以是非重啟的其他模式。綜合來說,由于智能座艙IVI的特殊性,本方案引入的修改點包括:系統開機動畫時序的調整策略,按鍵事件的響應策略以及系統聲音的邏輯管理。
2系統設計
Android是以Linux內核為基礎,由硬件抽象層(HardwareAbstractLayer--HAL)承接,再輔之各種系統服務構建起來的,所以要適配電源管理協同模塊,進行自下而上的全局分析。本文以車載系統的CAN總線通信為核心,將系統啟動流程、輸入子系統和聲音輸出子系統作為出發點,圍繞圖1所示的內容進行系統關鍵模塊的設計。車載系統的硬件由MCU+SOC構成,其中MCU主要負責車身CAN信號的收發,同時MCU又與SOC通過SPI總線建立連接,這樣車身信號可以通過MCU通知SOC,而SOC也可以將車身的控制信號通過MCU轉發給CAN。軟件設計方面,SOC采用Android操作系統,而Android又是以Linux為底層,所以此系統可以支撐起HMI以及硬件驅動。
3系統實現及測試
修改原生Android系統,通過BinderIPC進程間通信,便于獲取其他各項服務,并回饋電源管理的信號。BinderIPC是基于內存映射(mmap)實現的C/S軟件構架,其客戶端與服務端通過Binder驅動進行數據交互??蛻舳诉M程和服務端進程通過Binder驅動進行橋接,其進程間的通信序列如圖2所示,開機動畫的修改點如圖3所示?;谝陨险撌觯覀冃枰駻ndroid的服務管理中心(ServiceManager)注冊新系統服務,用以處理MCU上報的CAN報文,而其他進程可以訂閱感興趣的CAN報文,比如本文重點關注的電源管理信號等。
3.1開機動畫
車載系統的特殊性決定了開機動畫不能像傳統手機一樣,而是需要等待ACCON(點火)信號觸發后才能執行,故需要對BootAnimation(開機動畫)時序做圖3所示的定制修改。第一:屏蔽原生的啟動時序;第二:在新增的讀寫CAN信號進程中,等待車輛ACCON點火信號觸發后再執行。此舉可滿足車載系統對開機動畫的特殊要求。
3.2按鍵事件
車載系統按鍵分為兩種:一種是來自于方向盤的線控,另一種是來自中控觸摸屏的按鍵。前者由MCU控制,后者來自Linux的觸摸中斷。本文所提出的按鍵管理方案如圖4所示,其中面板的按鍵元素沿著Linux路徑,經事件總線上報給Framework層,而來自MCU的按鍵則會跳過Linux,直接轉為Android的Input事件供Framework層讀取,這樣二者都由輸入管理服務IMS(InputManagerService,IMS)傳輸到窗體管理服務WMS(WindowManagerService,WMS)中處理。在WMS中,可以由WindowPolicyManager的實現類PhoneWindow-Manager統一決策進行預處理[9],實現對兩種類型按鍵事件的統一操作和攔截。以某汽車廠家的真實需求為例,正常情況下,短按Power按鍵,需要全屏顯示時鐘界面,在時鐘界面下再短按Power,則退出時鐘界面。但是在ACCOFF車輛熄火情況下,短按Power按鍵,可以使用戶進入一小時模式,即車輛熄火,用戶依然可以正常體驗中控娛樂系統的音樂和收音功能,在一小時模式未結束時再點擊Power按鍵,則會關閉一小時功能。特殊情況下,還可以長按Power8s,重啟系統。其他要求,例如在某些場景下(比如倒車過程中)拒絕按鍵的響應。基于上以特殊的按鍵需求,本文在梳理了Android輸入子系統的事件流程后,提出了車載系統硬按鍵和面板按鍵的統一預處理及攔截分發方案,可以實現特殊按鍵的處理。
3.3AudioGoogle
在2018年專為車載系統發布了AndroidOCar,引入Car-Service中間件來管理外設和音頻邏輯。從官方發布的汽車音頻架構圖不難看出,此設計是以聲音流為中心而設計,如圖5(a)所示。系統將媒體播放、導航聲音、收音機的聲音統一作為邏輯聲音流,送入AudioFlinger中做混音合成,最終再以總線尋址的方式找到對應的聲卡設備進行輸出。按照官方的Porting(移植)步驟,主要做如下3點的適配:(1).devicePorts:包含可從模塊訪問的輸入輸出設備(包括永久連接和可移除設備)的描述序列表;(2).mixPorts:包含由音頻HAL提供的所有輸入和輸出聲音流列表;(3).routes:定義輸入和輸出設備或聲音流與設備之間可能存在的連接列表。除此之外,相比原生Android音頻,IVI系統擁有更多的音源類型。除AudioFocus之外,還存在其他音源間的混音和衰減等需求[10]??紤]車載電源管理的特殊性,我們還要結合電源管理對車載音頻做如圖5(b)所示的補充。(1)新增音源持久化記憶模塊,使車載娛樂系統在斷電及重新啟動后,可以恢復上次正在使用的音源;(2)在聲音的流類型上,加入優先級矩陣管理,用以協同導航、收音、電話、媒體間的交互。(3)對音頻焦點(AudioFocus)做適當的搶占與釋放,適配車載的Power按鍵功能。
3.4CAN總線及實車測試
通過模塊CAN電源管理信號和實車環境,對上述方案做綜合測試,實驗結果表明,開機動畫和按鍵的實現較為完整,因為這兩個模塊的功能測試用例較為直接,但是車載IVI的音源遠多于原生Android,所以僅對常用的主流音源做交互測試,實驗結果同樣達到了預期目標。
4結語
本文提出了一種多任務協同的車載電源管理系統,將車身CAN信號中的電源管理引入Android系統,研究并給出與此相關的三大核心模塊(開機動畫、用戶按鍵輸入以及聲音的輸出)的協同控制策略,本方案可適應車載中控娛樂系統的不同場景。略顯不足之處是系統的耦合性較強,修改難度大,所以有兩條建議可持續深入研究:(1)以CarService服務為核心,對各模塊進行解耦,提升系統整體的穩定性;(2)遵循AndroidProjectTreble[11],使更多的制造商以更低的成本接入,并完成系統的升級迭代。
作者:華春夢 臧艷輝 肖志良 單位:佛山職業技術學院