尝试移植TF-A(1月30日)

尝试移植TF-A

  1. 解压补丁文件

将压缩包解压后,查找发现没有“stm32mp15xx-dkx.dtsi”这个设备树头文件,将官方提供的压缩包使用补丁使用“for p in `ls -1 ../*.patch`; do patch -p1 < $p; done”命令解压后该文件出现。

图1

  1. 生成副本文件

将stm32mp15xx-dkx.dtsi 和 stm32mp157a-dk1.dts 文件生成副本 stm32mp15xx-fsmp1x.dtsi 和 stm32mp157a-fsmp1a.dts;然后打开 stm32mp157a-fsmp1a.dts 将头文件修改成 stm32mp15xx-fsmp1x.dtsi 。

图2

  1. 配置交叉编译工具链

通过阅读README帮助文档可以得知需要把交叉编译工具链设置为自己所需要的,由于本次实验平台是ARM内核所以配置成arm的编译工具链,打开下载的文件顶层目录的Makefile.sdk,可以找到CROSS_COMPILE相关内容,修改为如图3所示。

图3

  1. 配置Makefile.sdk文件

修改上层目录下的 Makefile.sdk 编译脚本在 TFA_DEVICETREE 配置项中添加 stm32mp157a-fsmp1a

图4

  1. 编译

通过阅读README帮助文档可以得知编译的命令为“make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157c-ev1 TF_A_CONFIG=trusted ELF_DEBUG_ENABLE='1' all“ 需要将

“TFA_DEVICETREE=stm32mp157c-ev1“修改为”TFA_DEVICETREE=stm32mp157a-fsmp1a“;注意一定要检查空格情况否则会出现如图5所示错误信息。

图5

继续编译会发现出现如图6所示错误。

图6

既然这个错误是Makefile编译的时候产生的,那么就尝试在Makefile.sdk这个文件中查找错误信息。打开tf-a源码顶层目录打开Makefile.sdk,搜索”stm32wrapper4dbg”如图7,8所示。

图7

图8

虽然不明白是什么但是有一个共同的地方就是都有一个判断条件“$(TF_A_ENABLE_DEBUG_WRAPPER)”= ”1”,搜索变量TF_A_ENABLE_DEBUG_WRAPPER如图9所示。

可以发现这个变量被默认赋值为1,通过”'1' to generate tf-a for debugging“这句话可以得知1是设置tf-a调试的,那么我设置0是不是就不调试了,尝试修改为0再次编译,结果如图9所示。发现没有了刚才的报错,先尝试烧写到SD卡中看看现象。

图9

  1. 烧录

和之前移植U-BOOT相同,这里依旧使用shell脚本来实现TF卡的格式化分区以及文件的烧录;我们知道安全启动模式下是TF-A作为FSBL来引导U-BOOT(trusted版本)来完成SSBL启动,所以需要将生成的U-BOOT镜像文件也烧录进SD卡中。相关命令为

"sudo dd if=tf-a-stm32mp157a-fsmp1a-trusted.stm32 of=/dev/sdb1 conv=fdatasync"

"sudo dd if=tf-a-stm32mp157a-fsmp1a-trusted.stm32 of=/dev/sdb2 conv=fdatasync"

"sudo dd if=u-boot-stm32mp157a-fsmp1a-trusted.stm32 of=/dev/sdb3 conv=fdatasync"

修改shell脚本如图10所示。

图10

下载到开发板串口助手打印的结果如图11所示。该错误为公版开发板电源和实验所用的电源不相匹配,接下来需要分析电源相关结点。

图11

  1. 修改电源相关内容

首先分析公版开发板和实验所用开发板设计电路的区别;如图12所示公版开发板采用电源管理芯片做电源管理,而本次实验采用分离电路作为电源管理,所以需要将文件中原有电源管理芯片相关内容去掉,增加上固定电源相关内容。

图12(公版电源相关电路图)

打开设备树头文件 stm32mp15xx-fsmp1x.dtsi ,如图公版电源管理芯片由I2C4控制,所以需要将该文件中的I2C4相关结点全部删除,以及将电源相关结点 cpu0 cpu1全部删除,如图13,14所示。

图13

图14

添加上该实验板所需要的设备树结点,如图15所示。

图15

  1. 测试

最后烧写进SD卡,实验结果如图16所示。可以发现可以正常启动U-BOOT,移植成功。

图16

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值