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

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

3天内不再提示

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

星星科技指导员 来源:嵌入式计算设计 作者:Kailas Kharse 2022-10-26 10:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

但是,在执行安卓操作系统移植之前,请遵循以下做法,以确保高效和成功的安卓移植。

遵循 Linux 内核编码标准和安卓编码标准

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

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

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

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

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

此过程可确保加载程序永远不会意外覆盖内存中的重要数据(包括加载程序的代码和数据),并且图像数据从不受信任的存储中加载。

开发已验证的启动

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

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

安卓操作系统移植

移植 Linux 内核是移植安卓系统最重要的因素之一。从 kernel.org 下载相应的 Linux 版本,并将 Linux 移植到目标主板。此内核称为目标板的参考内核。查找与参考内核具有相同修订版的 Android 内核,或者使用最接近的修订版来简化过程。将参考内核和 Android 内核合并到将移植到目标板的合并内核中。集成到适用于 Android 的 Linux 内核中的一些新组件是调试器、AshMem、开放活页夹、电源管理器、低内存杀手和记录器。

要为 Android 正确配置合并的内核,您必须通过从合并的源代码构建内核映像来测试 Linux 根文件系统的已知工作配置。

注意:引用内核和 Android 内核的修订不匹配可能会导致花费更多时间进行合并和调试。

能够配置升级(即 OTA)服务器

OTA(无线)是安卓用于安卓设备中系统级更新(如操作系统更新)的机制。建议坚持让移植公司使用安卓OTA升级机制,而不是本土的升级系统。接下来,您可以将 OTA 升级服务器配置为您选择的服务器。这将使您能够控制更新过程,并控制客户何时可以使用错误修复。它还为安卓消费类设备提供了一致的用户体验。

移植安卓 11 时需要考虑的事项

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

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

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

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

审核编辑:郭婷

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

    关注

    66

    文章

    18672

    浏览量

    185565
  • 嵌入式
    +关注

    关注

    5186

    文章

    20151

    浏览量

    328875
  • 操作系统
    +关注

    关注

    37

    文章

    7329

    浏览量

    128635
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式实时操作系统的特点

    实时嵌入式操作系统(Real-Time Embedded Operating System)是专门设计用于嵌入式系统的实时操作系统
    发表于 11-13 06:30

    如何采用SAFERTOS和ESM保护嵌入式系统安全

    信任根的重要组成部分是实时操作系统(RTOS),它为应用程序的运行提供了一个安全的平台嵌入式系统的具体安全要求取决于其架构以及所面临的威胁。在本博客中,我们
    的头像 发表于 10-24 15:51 1149次阅读

    【好书推荐】RT-Thread第22本相关书籍!《嵌入式实时操作系统开发实践》| 技术集结

    教学的首选平台。本次推荐的第22本RT-Thread相关书籍——《嵌入式实时操作系统开发实践(基于英飞凌PSoC62和RT-Thread)》正是一本
    的头像 发表于 10-16 18:46 373次阅读
    【好书推荐】RT-Thread第22本相关书籍!《<b class='flag-5'>嵌入式</b>实时<b class='flag-5'>操作系统</b>开发<b class='flag-5'>实践</b>》| 技术集结

    嵌入式从入门进阶,怎么学?

    (kmallocvs vmalloc)、 中断线程化项目实战:移植 MQTT 嵌入式设备(物联网数据上报)、用 QT 开发工业设备监控界面(Modbus 协议)。
    发表于 09-02 09:44

    入行嵌入式应该怎么准备?

    知识: 一、C/C++编程C/C++是嵌入式系统开发中最常用的编程语言。熟练掌握C/C++语言将使你能够理解和编写底层驱动程序、操作系统以及与硬件交互的代码。对于嵌入式
    发表于 08-06 10:34

    Linux嵌入式和单片机嵌入式的区别?

    Linux嵌入式与单片机嵌入式在多个方面存在显著的区别,以下是详细的比较和归纳: 一、基本概念 1. Linux嵌入式: 定义:Linux
    发表于 06-20 09:46

    嵌入式开发入门指南:从零开始学习嵌入式

    特定功能的计算机系统,广泛应用于智能家居、工业控制、医疗设备、车载系统等领域。 2. 学习嵌入式开发的前置知识熟悉C语言编程掌握基本的数据结构与算法了解数字电路与微控制器原理熟悉Linux操作
    发表于 05-15 09:29

    RT-Thread嵌入式操作系统专业培训班-深圳站重磅开启!

    RT-Thread官方将在深圳举办为期三天的嵌入式操作系统专业培训班!本次培训深入讲解RT-Thread嵌入式实时操作系统的核心技术与实战
    的头像 发表于 04-11 18:18 653次阅读
    RT-Thread<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>专业培训班-深圳站重磅开启!

    RT-Thread嵌入式操作系统专业培训班来上海啦!

    RT-Thread官方将在上海(RT-Thread大本营)发起为期三天的嵌入式操作系统专业培训班!本次培训将会深入讲解RT-Thread嵌入式实时操作系统的核心概念、实战技巧和应用场景
    的头像 发表于 02-27 17:27 828次阅读
    RT-Thread<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>专业培训班来上海啦!

    如何成为嵌入式开发工程师?

    如何成为嵌入式开发工程师? 成为嵌入式开发工程师通常需要掌握一系列技能和知识,并且在实践中不断积累经验。以下是一些基本步骤和建议: 1. 基础教育:- 获取电子工程、计算机科学或相关领域的学位
    发表于 02-19 10:39

    RT-Thread嵌入式操作系统专业培训班登陆郑州!

    RT-Thread官方将在河南-郑州发起为期三天的嵌入式操作系统专业培训班!本次培训深入讲解RT-Thread嵌入式实时操作系统的核心概念
    的头像 发表于 02-12 18:28 719次阅读
    RT-Thread<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>专业培训班登陆郑州!

    如何提高嵌入式代码质量?

    并提升代码质量。 遵循良好的软件工程实践 良好的软件工程实践是提高代码质量的基础,特别是在嵌入式系统中更为重要。以下是几个关键点: 1. 模块化设计:
    发表于 01-15 10:48

    2025嵌入式操作系统专业培训班正式启动!

    RT-Thread官方将在河南-郑州发起为期三天的嵌入式操作系统专业培训班!本次培训将会深入讲解RT-Thread嵌入式实时操作系统的核心概念、实战技巧和应用场景!无论企业团队/工程师
    的头像 发表于 01-09 18:46 1363次阅读
    2025<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>专业培训班正式启动!

    ARM嵌入式实时操作系统比较

    嵌入式系统领域,实时操作系统(RTOS)是确保任务按时完成的关键技术。ARM架构因其低功耗、高性能的特点,在嵌入式系统中得到了广泛应用。本
    的头像 发表于 12-28 09:15 2445次阅读

    新手怎么学嵌入式?

    操作系统示例。 学习嵌入式技术是一个充满挑战但又极具乐趣的过程。对于新手来说,只要有耐心和恒心,按照上述步骤逐步学习,从基础知识编程语言,从硬件知识
    发表于 12-12 10:51