0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

将Android操作系统移植到嵌入式平台的最佳实践

星星科技指导员 来源:嵌入式计算设计 作者:Kailas Kharse 2022-07-01 10:20 次阅读

Android 是流行的智能手机操作系统,它正在接管平板电脑、汽车、智能电视、可穿戴设备、家用电器、游戏机市场等。它为嵌入式平台提供了独特而熟悉的体验,从最小的智能手表屏幕到可折叠和 chromebook 上的更大显示器,再到车载娱乐系统,再到最大的电视屏幕。Android OS 驱动的医疗设备在医疗保健行业也被广泛接受。因此,Android OS 向嵌入式平台的移植最近引起了很多关注。

但是,在执行 Android 操作系统移植之前,请遵循以下做法以确保高效且成功地进行 Android 移植。

遵循 Linux 内核编码标准和 Android 编码标准

有各种程序被认为是软件开发的基本属性。这些程序用于特定的编程语言、编程风格、方法等。编码标准确保开发人员遵循特定的指导方针来处理项目。在进行 Android 移植的驱动程序定制时,必须遵循 Linux/Android 编码标准。这确保了无错误且易于维护的驱动程序。还需要检查代码是否没有未使用的变量。

在编码时保持一致性对于程序的质量至关重要。此外,在系统的不同级别上普遍遵循指导方针,以避免相互矛盾。完成的程序代码应该由单个开发人员在单个会话中管理或看起来像是由单个开发人员编写的。

开发安全启动和映像身份验证

安全启动是设备安全架构的构建块。从技术上讲,安全启动是在设备上加载和执行每个软件映像的启动顺序。此外,该软件映像是使用软件授权的。此序列旨在通过在执行前检查所有代码来防止运行未经授权或修改的代码。

所有图像加载都遵循称为“加载器”的相同通用过程。加载器分配一个安全的内存区域来加载“ELF Header”、“The Program Header”和“The hash segment”。加载程序通过检查图像元数据、根证书、证书链和哈希表来验证哈希段。加载器通过散列它们并将散列值与散列表中的相等条目进行比较来验证加载的 ELF 段。如果任何计算的哈希值存在差异,则图像被拒绝。

这个过程确保加载器永远不会意外地覆盖内存中的重要数据(包括加载器的代码和数据),而图像数据是从不受信任的存储中加载的。

开发经过验证的引导

验证启动确保所有执行的代码都来自受信任的来源(通常是设备 OEM)。它创建从引导分区、受硬件保护的信任根和引导加载程序到其他经过验证的分区(包括系统、供应商和可选的 OEM 分区)的完整信任链。在设备启动期间,每个阶段都会在移交执行之前验证下一个阶段的完整性和真实性。

之后,验证启动会通过回滚保护检查正确的 Android 版本,因为回滚保护通过确保设备仅更新到较新版本的 Android 来帮助防止可能的漏洞持续存在。此外,验证启动还允许 Android 设备与用户交流其完整性状态。

用于 Android 的端口 Linux 内核:

安卓操作系统移植

移植 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 消费设备提供一致的用户体验。

移植 Android 11 时需要考虑的事项

Android 11 包含与分区布局相关的各种更改,这些更改可以支持动态分区 - 适用于 Android 的用户空间分区系统,可以在无线 (OTA) 更新期间创建、调整大小或销毁分区。这些动态分区消除了供应商管理单个大小的分区(如系统、供应商和产品)的痛苦。相反,设备分配一个超级分区,以及可以在其中动态调整大小的子分区。

当所有特定于供应商的信息都从引导分区中提取出来并重新定位到供应商引导分区中时,它可以使用 GKI(通用内核映像)轻松引导任意设备。现在供应商引导分区包含以前包含在引导分区中的信息(例如闪存页面大小、内核、ramdisk 加载地址、DTB 本身)。要在移植 Android 11 时成功完成引导,引导加载程序必须能够访问引导分区和供应商引导分区以获得足够的数据。

在非 A/B 设备的恢复映像上,恢复映像应包含来自设备树 blob (DTB) 或高级配置和电源接口ACPI) 覆盖映像的信息。当此类设备启动恢复时,引导加载程序可以加载与恢复映像兼容的覆盖映像。支持 A/B(无缝)更新的设备应使用恢复作为引导而不是单独的恢复分区,并且通用内核映像 (GKI) 必须使用 3 的主引导标头版本以与供应商引导分区兼容。

遵循上述嵌入式工程实践,您可以确保在嵌入式平台上高效成功地移植 Android,并增强现有连接设备的功能或从头开始设计新系统,而无需太多麻烦。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4963

    文章

    18161

    浏览量

    286544
  • Android
    +关注

    关注

    12

    文章

    3841

    浏览量

    125501
  • Linux
    +关注

    关注

    87

    文章

    10943

    浏览量

    206546
收藏 人收藏

    评论

    相关推荐

    请问ADuC7060能否移植uCOS II嵌入式操作系统

    我想问一下ADuC7060能否移植uCOS II嵌入式操作系统
    发表于 01-15 06:59

    基于嵌入式Linux内核的Android操作系统智能移动终端

    电子发烧友网站提供《基于嵌入式Linux内核的Android操作系统智能移动终端.pdf》资料免费下载
    发表于 11-06 10:07 0次下载
    基于<b class='flag-5'>嵌入式</b>Linux内核的<b class='flag-5'>Android</b><b class='flag-5'>操作系统</b>智能移动终端

    有无操作系统嵌入式Linux驱动设备有何区别?

    是将系统的软件与硬件连接起来,使它们能够相互交互。 嵌入式系统常使用Linux系统作为开发平台,它具有开源、可
    的头像 发表于 10-29 17:29 398次阅读

    一种嵌入式操作系统—VxWorks

    电子发烧友网站提供《一种嵌入式操作系统—VxWorks.pdf》资料免费下载
    发表于 10-27 10:59 0次下载
    一种<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>—VxWorks

    嵌入式实时操作系统μC/OS-Ⅱ在LPC1788上的移植及应用

    电子发烧友网站提供《嵌入式实时操作系统μC/OS-Ⅱ在LPC1788上的移植及应用.pdf》资料免费下载
    发表于 10-23 14:07 0次下载
    <b class='flag-5'>嵌入式</b>实时<b class='flag-5'>操作系统</b>μC/OS-Ⅱ在LPC1788上的<b class='flag-5'>移植</b>及应用

    什么是嵌入式Linux?

    Linux到底是什么呢? 嵌入式linux 是日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。简单
    发表于 10-11 13:47

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统
    发表于 09-28 06:59

    嵌入式操作系统IJLC/OS一Ⅱ在通信电源监控中应用

    的查询分析和统计等功能也必不可少。通信电源设备运行参数多,实时效果强,在设备当中选择功能强大的控制芯片.应用嵌入式操作系统.使其尽可能地发挥出强大的软件控制功能,满足用户对通信电源控制的各种要求。与传统
    发表于 09-20 06:46

    环境传感器成功集成Linux/Android操作系统的指南

    本应用笔记为意法半导体环境传感器 (气压、湿度、紫外线传感器)成功集成Linux/Android 操作系统提供指南。
    发表于 09-13 07:07

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统
    发表于 09-11 07:24

    如何使用TensorFlow神经网络模型部署移动或嵌入式设备上

    有很多方法可以经过训练的神经网络模型部署移动或嵌入式设备上。不同的框架在各种平台上支持Arm,包括TensorFlow、PyTorch、Caffe2、MxNet和CNTK,如
    发表于 08-02 06:43

    嵌入式学习路线你知道吗?

    学习嵌入式系统的构建 这一阶段主要学习带有操作系统嵌入式系统的构建,包括系统的启动流程、Boo
    发表于 06-14 16:00

    运行带有Xen Hypervisor和预建linux Android auto的2操作系统,如何配置显示?

    ) 和 Android Automotive OS (android_p9.0.0_2.3.5-auto_image_8qmek) 我成功地能够运行 Domain-0 和 DomU。 我正在用我的嵌入式
    发表于 05-24 07:09

    什么是ARM-Linux嵌入式操作系统移植呢?

    什么是ARM-Linux嵌入式操作系统移植呢?
    发表于 05-16 10:22

    系统升级 | RK3568开发平台成功搭载SylixOS国产实时操作系统

    SylixOS 是一款大型嵌入式实时操作系统,诞生于2006年,起初它只是一个小型多任务调度器,经过多年开发,SylixOS 目前已经成为一个功能完善、性能卓越、可靠稳定的嵌入式系统
    发表于 04-25 14:18