• AVB(二):DTO 支持


    设备树叠加层 (DTO) 扩展了现有的扁平化设备树 (FDT) 实现,让用户空间可以通过加载用于修改原始数据的额外叠加层 FDT,在运行时修改内核中的初始设备树数据。

    Android 不要求在运行时从用户空间更新 DT blob,而是建议供应商借助 libfdt 或 libufdt 在引导加载程序中添加设备树补丁程序。

    1、Android DTO 支持

    Android 对 DTO 的支持因 Android 版本而异:

    • 1、Android 7.x 及更低版本不要求提供设备树支持,也没有针对供应商如何将 DT blob 传递给内核或在何处存储这些 blob 提供建议。
    • 2、Android 8.x 建议提供设备树支持,以将内核的板专属部分和仅限 SoC 访问的部分区分开来。
    • 3、Android 9 及更高版本要求必须存在设备树 blob 叠加层 (DTBO) 分区并且至少应用一个 DTO

    2、DTO 分区要求

    大多数 Android 设备都会在构建时将 DT blob 附加到内核,而引导加载程序会从内核加载 blob

    不过,由于 DT blob 被视为系统芯片 (SoC) 内核的一部分,因此 Android 对如何构建或存储 DT blob 没有特定要求。

    设备可以将 DT blob 附加到内核,也可以将 blob 存储在单独的分区中;唯一的要求是引导加载程序应该知道如何加载以及从何处加载 DT blob。

    如需支持 DTO,设备应具备以下条件:

    • 1、每个内核映像都应具有一个适用于板专属 DT 叠加层的 DTBO 分区,并且引导加载程序必须知道从何处以及如何加载 SoC 专属 DTB。分区大小取决于编译 SoC 内核所需的更改量;选择分区大小时需要为未来更新留出空间,通常,8 MB 大小的分区已绰绰有余。

    • 2、针对 A/B 设备更新了 DTO 分区。恢复内核与 Android 内核相同,但分区必须针对 A/B 设备设置,因为这样才可以通过无线下载 (GOTA) 更新进行更新。分区大小取决于设备以及主 SoC 内核 DT Blob 上所需的更改数量。

    3、DTO 引导加载程序要求

    要支持 DTO,引导加载程序应具备以下条件:

    • 1、知道如何以及从何处(考虑使用 A/B 设备的启动槽)以供应商独有的方式加载 SoC 专属 DT blob(通常是从内核映像的末端提取,因为 blob 会附加到内核)。

    • 2、知道如何以及从何处以供应商独有的方式加载叠加层 DT Blob。

    • 3、将组合设备树传递给内核之前,使用叠加层修补主 DT blob。

  • 相关阅读:
    【代码随想录】双指针法刷题
    讲座回顾丨基于 OpenYurt 和 EdgeX 的云边端协同新可能
    About Critical Values
    MATLAB中uiwait函数用法
    如何使用ZBrush颜色菜单,看完这篇文章你就会了
    如何压缩图片200k以下?
    千兆光模块和万兆光模块的成本分析及控制
    [Spring Boot]10 使用RestTemplate调用第三方接口
    还没搞明白 Spring AOP 就去美团面试,结果被面试官 KO
    借助 Windows 事件转发进行入侵检测
  • 原文地址:https://blog.csdn.net/weixin_45264425/article/details/128070665