一、概述
这里用的烧录方式是使用STM32CubeProgrammer USB方式烧录
二、文件准备
还记得FIP_artifacts文件夹吗,里面存放了TF-A、optee、u-boot编译输出的东西,以及最后的fip-stm32mp135-atk-optee.bin文件
烧写程序需要准备这些:
1. arm-trusted-firmware/tf-a-stm32mp135-atk-usb.stm32
2. fip/fip-stm32mp135-atk-optee.bin
3. arm-trusted-firmware/tf-a-stm32mp135-atk-emmc.stm32
4. arm-trusted-firmware/metadata.bin
如果是照着本教程编译完的,那么这些文件肯定已经躺在FIP_artifacts里面了,还差一个烧录脚本
三、创建烧录脚本
在FIP_artifacts创建一个stm32mp135-atk-emmc-optee.tsv文件,内容如下
#Opt Id Name Type IP Offset Binary
- 0x01 fsbl1-boot Binary none 0x0 arm-trusted-firmware/tf-a-stm32mp135-atk-usb.stm32
- 0x03 fip-boot FIP none 0x0 fip/fip-stm32mp135-atk-optee.bin
P 0x04 fsbl1 Binary mmc1 boot1 arm-trusted-firmware/tf-a-stm32mp135-atk-emmc.stm32
P 0x05 fsbl2 Binary mmc1 boot2 arm-trusted-firmware/tf-a-stm32mp135-atk-emmc.stm32
P 0x06 metadata1 Binary mmc1 0x00080000 arm-trusted-firmware/metadata.bin
P 0x07 metadata2 Binary mmc1 0x00100000 arm-trusted-firmware/metadata.bin
P 0x08 fip-a FIP mmc1 0x00180000 fip/fip-stm32mp135-atk-optee.bin
PED 0x09 fip-b FIP mmc1 0x00580000 none
PED 0x0A u-boot-env Binary mmc1 0x00980000 none
一定要用TAB去空开,不能用空格,这个的具体写法可以参考网上很多帖子,这里就不过多阐述了
四、开始烧录吧!!
打开STM32CubeProgrammer
点击+号,选择刚刚创建的stm32mp135-atk-emmc-optee.tsv文件
点击Browse,选择FIP_artifacts目录
记得拨码开关三个0,然后按一下复位
然后连接USB,开始Download吧,这部分可以看原子的教程了。
如果移植正常成功的话,屏幕上是会显示烧录过程的。
烧录完成通过emmc启动一下看看
这里还是有一个问题,笔者移植的uboot里,最前面启动uboot的时候提示:
stm32-usbphyc usbphyc@5a006000: Can't get phy-supply regulator
clk_register: failed to get ck_usbo_48m device (parent of usbo_k)
笔者在测试的时候,发现这部分在DRAM:512Mib后面那个optee optee:OP-TEE: revision之后,usb又一次初始化的时候是成功初始化了,但是在这为什么初始化两次并没有理解,而且为什么第一次失败了,第二次成功了,实际上是能用的了。如果有大佬看看麻烦评论求教教我。