STM32MP1设备树

2023-02-08  

什么是设备树


设备树并不是从开始就存在,而是后来加入到Linux中的

设备树主要用来描述系统的硬件结构:SoC的identification;运行时配置;描述是系统不能动态获取的硬件信息

设备树规范


设备树有语法规范,但需要相应的驱动进行解释:造成设备树的通用性与特殊性

设备树的语法结构:树形结构—根“/”没有parent,每个节点只有一个parent;节点—每个节点一般代表系统中的一个设备,包含子节点,具有property-value对;支持overlay

设备树的物理形式


源码形式:dts(文本格式,一般为板级配置);dtsi(文本格式,一般为SOC配置,可以被DTS包含的设备树文件)

目标形式:dtb(二进制文件格式,通过编译工具进行编译)

设备树的编译


DTC将设备树源码编译成二进制文件:输入文件-dts,输出文件-dtb

STM32MP1中设备树的编译:在编译相应组件时自动完成,Linux设备树可单独生成

设备树的调试工具


在主机上调试设备树:dtc,fdtdump,fdtget,fdtput

在目标机上查看设备树

STM32MP1中的设备树


TF-A:源码路径:fdts/stm32mp15*;输出:与最终TF-A编译成一个image

U-Boot:源码路径:arch/arm/dts/stm32mp15*;输出:与最终U-Boot编译成一个image

Linux Kernel:源码路径:arch/arm/boot/dts/stm32mp15*;输出:可单独存放在文件系统里

修改编写STM32MP1设备树


STM32MP1开发中的设备树修改需求:文件重命名—对U-Boot设备树重命名要考虑Makefile自动包含规则;对系统进行描述配置—包括DDR

工具:使用文本编辑工具编辑源码;使用原有编译系统进行编译

STM32CubeMX辅助修改设备树


可直接在Windows下运行

生成板级配置:不包含SOC配置

生成DDR配置:STM32CubeMX还支持DDR Tuning以及测试

不生成非STM32MP1的设备树

使用copy&paste进行合并

应用实例-Secure/Non-Secure


需求:RCC有些寄存器在内核中写入报错

原理:默认RCC是配置在Secure World;将RCC放在Non-Secure World

步骤:修改板级TF-A设备树中RCC的secure-status;重新编译TF-A;重新烧录TF-A

应用实例-增加一个USART


需求:在内核中增加一个USART

原理:gpio controller node已经提供在SoC dtsi中;需要将相应的USART使能

步骤:修改板级配置;重新编译设备树;复制设备树到目标机的boot目录

应用实例-三USB


需求:让STM32MP1支持三个USB

原理:STM32MP1可同时支持两个高速USB 2.0和一个全速USB 2.0;STM32CubeMX目前支持两个高速USB 2.0

步骤:修改OTP支持全速;编译设备树;复制设备树到目标机的boot目录


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。