IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【Device Tree】Android DTS 加载流程 -> 正文阅读

[移动开发]【Device Tree】Android DTS 加载流程

前言

在之前的文章中已经对设备树的基本概念作了讲解, 操作系统(例如在 Android 中使用的 Linux 内核)会使用 DT 来支持 Android 设备使用的各种硬件配置。硬件供应商(ODM)会提供自己的 DT 源文件,接下来 Linux 会将这些文件编译到引导加载程序使用的设备树 Blob (DTB) 文件中。

Android在原有的DT基础上增加了设备树叠加层的处理方式。进一步的对于芯片产品的DT和开发者(ODM/OEM/产品开发者)的DT做了解耦。

设备树叠加层 (DTO) 可让主要的(ODM)设备树 Blob (DTB) 叠加在Soc设备树上。使用 DTO 的引导加载程序可以维护系统芯片 (SoC) DT,并动态叠加针对特定设备(ODM)的 DT,从而向树中添加节点并对现有树中的属性进行更改。
本篇文章主要讲述如下内容:

  • DT的专有名词
  • Bootloader 加载DT的基本流程
  • Android 下DTO的实现以及原理
  • 实际案例-MT8167 平台DTS的加载完整流程

DT相关的专有名词

DTDevice Tree
DTBDevice Tree Blob
DTBODevice Tree Blob for Overlay
DTCDevice Tree Compiler
DTODevice Tree Overlay
DTSDevice Tree Source
FDTFlattened Device Tree, a binary format contained in a .dtb blob file

Bootloader 加载DT的基本流程

在这里插入图片描述
如上图所示,系统加载DT主要包含: DTS源文件编译, .dtb分区以及对应镜像文件生成, bootloader运行将.dtb 分区的文件加载到内存中, 将对应的内存地址通过寄存器传递到kernel。

在支持DTO的Android下, DT 是由以下两个部分组成:

  • Main DT, 主要是Soc-only的部分以及默认的系统配置,例如cpu配置/内存相关配置等,soc的供应商提供, 本文所用的MT8167 那么这个Main DT就是由MTK提供的.
  • Overlay DT, 该Soc所对应的产品需要的特定配置, 主要是由ODM/OEM提供,这里可以理解为开发者自己定义(当然目前在MT8167上MTK也提供了基本的Oerlay DT基本模板)
  1. 编译阶段
  • 通过dtc(device tree compiler)将Main DT dts源文件编译为.dtb文件.
  • 通过dtc(device tree compiler)将Overlay DT的dts源文件编译为后缀名为.dtbo的文件.
    这里需要注意的是, .dtb和.dtbo 的文件格式是相同的都是FDT. 后缀名不同只是为了区分.
  1. dtb分区
    在这里插入图片描述
    在MT8167这一平台上是将dtbo划分为了独立的分区, 具体的分析在实际案例章节会详细说明.

  2. 运行

在这里插入图片描述

  • 在bootloader中将.dtb文件读取到内存中
  • 在bootloader中将.dtbo文件从dtbo分区(emmc指定分区)读取到内存中.
  • 将.dtb 和 .dtbo 合并
  • 在bootloader跳转启动kernel时,将该内存地址通过寄存器传递给到kernel
    关于这个环节的详细流程在实际案例章节会详细说明.

实际案例-MT8167 平台DTS的加载完整流程

2022/05/29前输出

MT8167 平台的Main DT和Overlay DT一览

截图平台的相关DTS源文件 只需要截图部分就可以.

odmdtbo.img(dtbo) 构建以及.dtb的存储
bootloader中如何加载dtb和dtbo

需要具体的代码分析
以及如何传递给kernel

kernel中是如何使用获取到合并后的DT

参考链接

Google官方文档-Device Tree Overlays
【Device Tree】Device Tree 基础概念
【Device Tree】Kernel中的gpio driver在DTS下是如何初始化的

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 18:20:14  更:2022-05-24 18:22:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 0:29:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码