Android是流行的智能手機操作系統,正在接管平板電腦,汽車,智能電視,可穿戴設備,家用電器,游戲機市場等。它為嵌入式平臺提供了獨特而熟悉的體驗,從最小的智能手表屏幕到可折疊和Chromebook上的較大顯示器,再到車載娛樂系統,再到最大的電視屏幕。基于Android操作系統的醫療設備在醫療保健行業中也被廣泛接受。因此,將Android操作系統移植到嵌入式平臺最近引起了很多關注。
但是,在執行 Android 操作系統移植之前,請遵循以下做法以確保高效和成功的 Android 移植。
遵循 Linux 內核編碼標準和 Android 編碼標準
有各種過程被認為是軟件開發的基本屬性。這些過程用于具有編程風格、方法等的特定編程語言。編碼標準可確保開發人員遵循特定的準則來處理項目。在為 Android 移植進行驅動程序定制時,有必要遵循 Linux/Android 編碼標準。這確保了無錯誤且易于維護的驅動程序。還需要檢查代碼是否沒有未使用的變量。
在編碼時保持一致性對于程序的質量至關重要。此外,在系統的不同級別上普遍遵循準則,以避免相互矛盾。完成的程序代碼應該由單個開發人員在單個會話中進行管理,或者看起來像是由單個開發人員編寫的。
開發安全啟動和映像身份驗證
安全啟動是設備安全體系結構的構建基塊。從技術上講,安全啟動是一個啟動序列,其中每個軟件映像都在設備上加載和執行。此外,此軟件映像是使用軟件授權的。此序列旨在通過在執行前檢查所有代碼來防止運行未經授權或修改的代碼。
所有圖像加載都遵循稱為“加載器”的相同常規過程。加載器分配一個安全的內存區域來加載“ELF 標頭”、“程序標頭”和“哈希段”。加載程序通過檢查映像元數據、根證書、證書鏈和哈希表來驗證哈希段。加載器通過對加載的 ELF 段進行哈希處理并將哈希值與哈希表中的相等條目進行比較來驗證加載的 ELF 段。如果任何計算的哈希值存在差異,則拒絕圖像。
開發經過驗證的引導
驗證啟動可確保所有執行的代碼都來自受信任的來源(通常是設備 OEM)。它創建完整的信任鏈,從引導分區、受硬件保護的信任根和引導加載程序到其他經過驗證的分區,包括系統、供應商和可選的 OEM 分區。在設備啟動期間,每個階段都會在移交執行之前驗證下一階段的完整性和真實性。
之后,“已驗證啟動”會通過回滾保護檢查正確版本的 Android,因為回滾保護通過確保設備僅更新到較新版本的 Android 來幫助防止可能的漏洞持續存在。此外,經過驗證的啟動還允許 Android 設備與用戶溝通其完整性狀態。
Port Linux Kernel for Android
移植Linux內核是移植Android的最重要因素之一。從 kernel.org 下載相應的 Linux 版本,并將 Linux 移植到目標主板 此內核稱為目標主板的參考內核。查找與參考內核具有相同修訂版的 Android 內核,或者使用最接近的版本來簡化該過程。將參考內核和 Android 內核合并到將移植到目標主板的合并內核。集成到Android版Linux內核中的一些新組件是Debugger,AshMem,Open Binder,Power Manager,Low Memory killer和Logger。
要為 Android 正確配置合并內核,您必須通過從合并的源代碼構建內核映像來使用 Linux 根文件系統測試已知的工作配置。
注意:參考內核和 Android 內核的修訂不匹配可能會導致花費更多時間進行合并和調試。
能夠配置升級(即 OTA)服務器
OTA(無線)是 Android 用于在 Android 設備中進行系統級更新(如操作系統更新)的機制。建議移植公司堅持使用Android OTA升級機制,而不是本土升級系統。并且,您可以將OTA升級服務器配置為您選擇的服務器。這將使您能夠控制更新過程,并控制何時向客戶提供錯誤修復。它還為Android消費者設備提供了一致的用戶體驗。
移植安卓 11 時要考慮的事項
Android 11 包含與分區布局相關的各種更改,這些更改可以支持動態分區 - 適用于 Android 的用戶空間分區系統,可在無線 (OTA) 更新期間創建、調整大小或銷毀分區。這些動態分區消除了供應商管理各個大小的分區(如系統、供應商和產品)的痛苦。相反,設備會分配一個超級分區,以及可以在其中動態調整大小的子分區。
當所有特定于供應商的信息都從引導分區中分解出來并重新定位到供應商引導分區中時,它可以使用 GKI(通用內核映像)輕松引導任意設備。現在,供應商引導分區包含以前包含在引導分區中的信息(如閃存頁面大小、內核、虛擬硬盤加載地址、DTB 本身)。要在移植 android 11 時成功完成投票,引導加載程序必須有權訪問引導分區和供應商引導分區以獲取足夠的數據。
在非 A/B 設備的恢復映像上,恢復映像應包含來自設備樹 blob (DTB) 或高級配置和電源接口 (ACPI) 覆蓋映像的信息。當此類設備啟動到恢復狀態時,引導加載程序可以加載與恢復映像兼容的覆蓋映像。支持 A/B(無縫)更新的設備應使用恢復作為啟動,而不是單獨的恢復分區,通用內核映像 (GKI) 必須使用主啟動標頭版本 3 才能與供應商啟動分區兼容。
遵循上述嵌入式工程實踐,您可以確保在嵌入式平臺上高效、成功地移植Android,并增強現有連接設備的功能或從頭開始設計新系統,而不會有太多麻煩。
審核編輯:郭婷
-
嵌入式
+關注
關注
5090文章
19176瀏覽量
306892 -
Android
+關注
關注
12文章
3943瀏覽量
127740 -
操作系統
+關注
關注
37文章
6889瀏覽量
123598
發布評論請先 登錄
相關推薦
評論