9.2 TF-A 移植

9.2.1 新建自己开发板对应的设备树

1、创建板子对应的设备树

        设备树英文名字叫做 Device tree。用来描述板子硬件信息的。比如你的板子上的 CPU 有几
个核、每个 CPU 核主频是多少,IIC、SPI 这些外设的寄存器范围是多少,IIC 接口下都挂了哪
些设备等等。
        设备树文件是一种文本格式的文件,方便阅读与修改,文件后缀为.dts,设备树头文件后为.dtsi。
        和 C 语言一样.dts 可以引用头文件.dtsi, .dts 经过编译以后生成.dtb文件,.dtb 就是开发板要使用的。类似于我们将 C 语言的.c 文件编译为.bin 文件,然后在开发板上运行,将 dts 编译为 dtb 的工具叫做 DTC,并不是我们使用的 gcc 编译器。
        打开 tf-a-stm32mp-2.2.r1\fdts 目录,fdts 目录下保存的就是所有开发板的设备树文件,其中
就包括了 STM32MP1 系列.

        stm32mp157d-ev1.dts 就是 STM32MP157D EVK 开发板所对应的设备树文件。同理还有 STM32MP157 其他型号的芯片,比如 stm32mp157a、stm32mp157c 等。我们以stm32mp157d-ev1.dts 为蓝本,添加正点原子 STM32MP157 开发板对应的设备树文件。

        用 VScode 打开 stm32mp157d-ev1.dts 文件

        第 8 行引用了“stm32mp157d-ed1.dts”这样一个 dts 文件,注意,在设备树里面可以直接通过 include 引用另外一个.dts 文件,不仅限于.dtsi 文件,也就是说.dts 文件也可以作为头文件使用。
可以看出 stm32mp157d-ev1.dts 文件非常简洁,主要原因是其引用了 stm32mp157d-ed1.dts,主 要 工 作 都 由 stm32mp157d-ed1.dts 文 件 来 完 成 了 。

        因此,我们复制一份 stm32mp157d-ed1.dts,并命名为 stm32mp157d-atk.dts,
stm32mp157d-atk.dts 就是我们为正点原子 STM32MP157 开发板准备的设备树。

        第 8~13 行,头文件引用,其中第 8~11 行引用 STM32MP15X 芯片相关的 dtsi 头文件。
        第 12 行,非常重要,“stm32mp15xx-edx.dtsi”是 edx 系列开发板的通用头文件,适合具体板子有关的。很明显,板子不同其对应的板子头文件也不同。需要以stm32mp15xx-edx.dtsi 为蓝本,创建正点原子开发板对应的板子头文件。直接复制一份 stm32mp15xx-edx.dtsi,然后将其重命名为“stm32mp157d-atk.dtsi”
        第 20 行, stdout-path 表示标准输出,也就是设置 TF-A 信息输出路径,这里设置为 serial0,也就是串行接口 0(注意,不是 STM32MP157 的串口 0),波特率为 115200。
        第 24 行,设置 serial0 对应 STM32MP157 的串口 4,所以 TF-A 会使用 STM32MP157 的串口 4 作为信息输出接口,大家在做板子的时候最好选择串口 4 作为通信接口。

如图:

2、编译

        在编译之前要先修改以后 Makefile.sdk,因此我们前面新建的stm32mp157d-atk.dts 并没有添加到编译列表里面,直接编译的话并不会编译此文件。打开Makefile.sdk,在 TFA_DEVICETREE 配置项中添加“stm32mp157d-atk”。

        编译完成以后进入 build/trusted 目录下,此时就会生成以“tf-a-stm32mp157d-atk”开头的相关文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值