Android是流行的智能手機操作系統,它正在接管平板電腦、汽車、智能電視、可穿戴設備、家用電器、游戲機市場等。它為嵌入式開發平臺提供了獨特而熟悉的體驗,從最小的智能手表屏幕到可折疊和chromebooks上的更大顯示屏,到車載娛樂系統,再到最大的電視屏幕。基于Android操作系統的醫療設備在醫療保健行業也被廣泛接受。因此,將Android操作系統移植到嵌入式平臺最近引起了很多關注。
但是,在執行Android操作系統移植之前,請遵循下面提到的實踐,以確保高效和成功的Android移植。
1.遵循Linux內核編碼標準和Android編碼標準
有各種各樣的過程被認為是軟件開發的基本屬性。這些過程用于特定的編程語言、編程風格、方法等。編碼標準確保開發人員遵循特定的指導方針來處理項目。在做Android移植的驅動定制時,需要遵循Linux/Android編碼標準。這確保了無錯誤和易于維護的驅動程序。還有必要檢查代碼是否沒有未使用的變量。
編碼時保持一致性對于程序的質量至關重要。此外,在系統的不同層次上普遍遵循指導方針,以避免相互矛盾。完成的程序代碼應該由單個嵌入式開發人員在單個會話中管理,或者看起來像是由單個開發人員編寫的。
2.開發安全引導和映像認證
安全引導是設備安全架構的構建模塊。從技術上講,安全引導是一個引導序列,其中每個軟件映像都在設備上加載和執行。此外,該軟件映像是使用軟件授權的。該序列旨在通過在執行前檢查所有代碼來防止運行未經授權或修改的代碼。
所有圖像加載都遵循相同的一般過程,稱為“加載器”加載程序分配一個安全的內存區域來加載“ELF頭”、“程序頭”和“散列段”。加載程序通過檢查映像元數據、根證書、證書鏈和哈希表來驗證哈希段。加載程序通過對ELF段進行散列并將散列值與哈希表中的相等條目進行比較來驗證加載的ELF段。如果任何一個計算出的哈希值有差異,圖像將被拒絕。該嵌入式開發過程確保加載器永遠不會用從不可信的存儲器加載的圖像數據意外地覆蓋存儲器中的重要數據(包括加載器的代碼和數據)。
3.開發經驗證的引導
驗證啟動確保所有執行的代碼來自可信來源(通常是設備原始設備制造商)。它從引導分區、受硬件保護的信任根和引導加載程序到其他經過驗證的分區(包括系統、供應商和可選的OEM分區)創建完整的信任權限鏈。在設備啟動期間,每個階段都會在移交執行之前驗證下一階段的完整性和真實性。
之后,驗證啟動檢查具有回滾保護的Android的正確版本,因為回滾保護通過確保設備僅更新到較新版本的Android來幫助防止可能的利用變得持續。此外,驗證啟動還允許Android設備與用戶交流其完整性狀態。
4.為Android移植Linux內核:
Android操作系統移植
移植Linux內核是移植Android最重要的因素之一。從kernel.org下載合適的Linux版本,并將Linux移植到你的目標板上。這個內核被稱為你的目標板。找一個與參考內核版本相同的Android內核,或者使用最接近的版本來簡化過程。在嵌入式開發中,將參考內核和Android內核合并為一個合并的內核,該內核將被移植到目標板上。集成到Android Linux內核中的一些新組件是調試器、AshMem、Open Binder、電源管理器、低內存殺手和記錄器。
要為Android正確配置合并的內核,你必須通過從合并的源代碼構建內核映像,用Linux根文件系統測試已知的工作配置。
注意:參考內核和Android內核的版本不匹配可能會導致花費更多的時間進行合并和調試。
5.配置升級(即OTA)服務器的能力
OTA(空中下載)是Android用于Android設備中系統級更新的機制,如操作系統更新。建議堅持讓移植公司使用Android OTA升級機制,而不是自主開發的升級系統。接下來,你可以將OTA升級服務器配置為你選擇的服務器。這將使你能夠控制更新過程,并控制何時向你的客戶提供錯誤修復。它還為Android消費設備提供了一致的用戶體驗。
移植Android 11時需要考慮的事情
Android 11包含了與分區布局相關的各種變化,可以支持動態分區——一種用于Android的用戶空間分區系統,可以在空中(OTA)更新期間創建、調整或銷毀分區。這些動態分區消除了供應商管理各個分區(如系統、供應商和產品)大小的痛苦。相反,在嵌入式開發中,設備會分配一個超級分區和可以在其中動態調整大小的子分區。
當所有特定于供應商的信息都從引導分區中提取出來并重新定位到供應商引導分區中時,就可以使用GKI(通用內核映像)輕松引導任意設備。現在,供應商引導分區包含以前包含在引導分區中的信息(如閃存頁面大小、內核、內存磁盤加載地址、DTB本身)。為了在移植Android 11的同時成功完成引導,引導加載程序必須能夠訪問引導和供應商引導分區以獲得足夠的數據。
在非A/B設備的恢復映像上,恢復映像應包含來自設備樹blob (DTB)或高級配置和電源接口(ACPI)覆蓋映像的信息。當這樣的設備引導進入恢復模式時,引導加載程序可以加載與恢復映像兼容的覆蓋映像。支持A/B(無縫)更新的設備應使用恢復作為引導,而不是單獨的恢復分區,通用內核映像(GKI)必須使用主引導頭版本3,以與供應商引導分區兼容。
遵循中的上述實踐嵌入式工程,你可以確保在嵌入式開發平臺上高效、成功地移植Android,增強現有連接設備的功能,或者從頭開始設計新系統,而不會有太多麻煩。
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。