一、系统模块
1、DTBO/DTO
DTS是用于描述 FDT 的文件; DTS 经过 DTC 编译后可生成 DTB/DTBO ; DTB 和 DTBO 通过 DTO 操作可合并成一个新的 DTB ;
1.1、原理介绍
DTO(
Device tree Overlay)是
安卓 P 后引入且必须强制启用的功能,可让次设备树 Blob(DTBO) 叠加在已有的主设备树 Blob 上。DTO 可以维护系统
芯片 SOC 设备树,并动态叠加针对特定设备的设备树, 从而向树中添加节点并对现有树中的属性进行更改。 主设备树 Blob (*.dtb)一般由 Vendor 厂商提供,次设备树 Blob (*.dtbo)可由 ODM/OEM 等 厂商提供,最后通过 bootloader 合并后再传递给
kernel。
使用 dtc 编译.dts 时,需要添加选项-@以在生成的.dtbo 中添加_symbols_节点。该节点包含带有标签的所 欲节点列表,DTO 库可使用这个列表作为参考。
编译主.dts 的示例命令: dtc -@ -O dtb -o my_main_dt.dtb my_main_dt.dts
编译叠加层 DT.dts 的示例命令: dtc -@ -O dtb -o my_overlay_dt.dtbo my_overlay_dt.dts
1.2、DTO 启用
1.2.1、配置使能
CONFIG_CMD_DTIMG=y
CONFIG_OF_LIBFDT_OVERLAY=y
1.2.2、board_select_fdt_index()函数的实现。这是一个__weak 函数,用户可以根据实际情况重新实现它。 函数作用是在多份 DTBO 中获取用于执行 DTO 操作的那份 DTBO(返回 index 索引,最小从 0 开始), 默认的 weak 函数返回的 index 为 0。 __weak int board_select_fdt_index (ulong dt_table_hdr)
2、Cmdline
cmdline 是 U-Boot 向 kernel 传递参数的一个重要手段,诸如传递启动存储,设备状态等,目前 cmdline 参数有多个来源,由 U-Boot 进行拼接,过滤重复数据之后再传给 kernel,U-Boot 阶段的 cmdline 被保存 在 bootargs 环境变量中。 U-Boot 最终是通过修改 kernel DTB 里的/chosen/bootargs 实现 cmdline 传递。
2.1、数据来源
parameter.txt 文件 如果是
gpt 格式的分区表,在 parameter.txt 里存放 cmdline 信息是无效的。 如果是 RK 格式的分区表,可以在 parameter.txt 里存放 cmdline,例如: CMDLINE: console=ttyFIQ0
Androidboot.baseband=N/A androidboot.selinux=permissive androidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/init mtdparts=rk29xx
NAND:0x00002000@0x00002000(
Uboot),0x00002000@0x00004000(trust ),kernel dts 的/chose/bootargs,例如: chosen { bootargs = "earlyprintk=uart8250,mmio32,0xff30000 swiotlb=1 console=ttyFIQ0 androidboot.baseband=N/A androidboot.veritymode=enforcing androidboot.hardware=rk30board androidboot.console=ttyFIQ0
......
3、ENV 操作
3.1、框架支持
ENV 是 U-Boot 框架中非常重要的一种数据管理方式,通过 hash tbale 构建“键值”和“数据”进行映射管理, 支持“增删改查”操作。通常,我们把它管理的键值和数据统称为:环境变量。U-Boot 支持把 ENV 数据保存 在各种存储介质:NOWHERE/eMMC/FLASH/EEPROM/NAND/SPI_FLASH/UBI... // 默认配置: ENV 保存在内存
CONFIG_ENV_IS_NOWHERE
// ENV 保存在各种存储介质
CONFIG_ENV_IS_IN_MMC
CONFIG_ENV_IS_IN_NAND
CONFIG_ENV_IS_IN_EEPROM
CONFIG_ENV_IS_IN_
FAT
CONFIG_ENV_IS_IN_FLASH
CONFIG_ENV_IS_IN_NVRAM
......
更多详细内容请下载附件查看