RK3399 Android7.1:设备树DTS深入解析与实践

需积分: 5 7 下载量 30 浏览量 更新于2024-08-04 1 收藏 122KB PDF 举报
本文档是一份关于RK3399平台在Android 7.1环境下,针对Linux内核设备树(DTS)的详细学习笔记。随着Linux内核3.X版本的发展,传统的板级细节描述代码逐渐被设备树所取代,设备树成为描述硬件设备配置和连接的重要方式,主要存储于arch/arm/boot/dts或arch/arm64/boot/dts目录下。 设备树由两大部分构成:dts(Device Tree Source)和dtsi(Device Tree Sources Include)。dts是针对特定产品的配置文件,用于描述单个硬件平台的特性,如RockchipRK3399ExcavatorBoardedp的配置。当需要在同一套源码中适配不同公司的产品时,通用的配置信息会被放置在dtsi中,dts可以通过#include指令引用这些公共信息。 DTB(Device Tree Blob)是dts经过dtc(Device Tree Compiler)编译后的二进制文件,它在引导过程中由Bootloader加载到Linux内核中,因此,Bootloader需要具备设备树的支持,同时Kernel也需要相应的驱动模块来解析和利用设备树数据。 学习实例中,以kernel/arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator-edp.dts为例,首先介绍的是dts文件的版本信息,即/dts-v1/,表示采用的是设备树的版本1规范。然后,文件中包含了几个重要的dtsi头文件,如rk3399-excavator-sapphire.dtsi、rk3399-android.dtsi和rk3399-vop-clk-set.dtsi,这些头文件提供了平台特有的功能和配置。 在"/"根节点中,定义了模型名、兼容性字符串等关键信息,如model属性定义了设备名称,compatible属性则指定了该设备与Rockchip和Android系统的兼容性。此外,还创建了一个名为vcc_lcd的节点,用于描述LCD供电管理,它具有compatible="regulator-fixed"属性,表明这是一个固定的电压调节器,且设置了regulator-name属性为"vcc_lcd",并引用了GPIO接口。 这篇学习笔记深入讲解了设备树在Linux内核中的应用,包括其架构、组成部分、编译过程以及在实际硬件平台(如RK3399)中的具体实现。理解并掌握设备树对于维护和定制Linux内核以适应不同硬件平台至关重要。