1.分析目录
1>Pre-requisite
2>Initialise cross-compilation via SDK
3>Prepare tf-a source code
4>Management of tf-a source code
5>Compile tf-a source code
6>Update software on board
2.解压tf-a源码目录
$> tar xfz tf-a-stm32mp-2.2.r2-r0.tar.gz
3.对tf-a源码打补丁
$> for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
4.编译tf-a源码命令
$> make -f $PWD/../Makefile.sdk all
or for a specific config :
$ make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157c-ev1 TF_A_CONFIG=trusted ELF_DEBUG_ENABLE='1' all
5.tf-a源码生成镜像文件路径
Files generated should be as follow:
#> ../build/*/tf-a-*.stm32
正式移植TF-A源码
1.进入tf-a源码目录下,进行打补丁----->打补丁打一次即可
for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
2.打开Makefile.sdk文件,搜索:CROSS_COMPILE,更改交叉编译工具链前缀:arm-linux-gnueabihf-
3.由于FSMP1A开发板是参考DK1公板进行设计的,所以需要复制DK1公板设备树相关内容
1)进入tf-a源码目录下fdts目录下,复制设备树相关内容
2)进入tf-a源码目录下fdts目录下,更改复制完成后的FSMP1A相关设备树内容
4.进入tf-a源码顶层目录下,打开Makefile.sdk文件,搜索TFA_DEVICETREE 添加 stm32mp157a-fsmp1a
5.对tf-a源码进行编译,进入tf-a源码目录下 make -f $PWD/../Makefile.sdk all
查看是否生成对应镜像文件
在tf-a-stm32mp-2.2.r2-r0/build/trusted/目录下查看是否有tf-a-stm32mp157a-fsmp1a-trusted.stm32
6.对tf-a源码进行编译,进入tf-a源码目录下
make -f $PWD/../Makefile.sdk all
会出现如下现象信息解决方法:
错误信息:/bin/sh: 22: stm32wrapper4dbg: not found
进入tf-a源码顶层目录下,打开Makefile.sdk,搜索:stm32wrapper4dbg查看到如下信息:
67 if [ "$(TF_A_ENABLE_DEBUG_WRAPPER)" = "1" ]; then \
68 # Generate wrapper for debugging \
69 stm32wrapper4dbg -s $(LOCAL_PATH)/../build/$$
搜索TF_A_ENABLE_DEBUG_WRAPPER是如何进行赋值的,通过搜索:TF_A_ENABLE_DEBUG_WRAPPER,打印如下信息
将如下内容:
27 TF_A_ENABLE_DEBUG_WRAPPER ?= 1
更改为:
27 TF_A_ENABLE_DEBUG_WRAPPER ?= 0
对tf-a源码进行测试
1.进入到/home/linux/FSMP1A/tf-a-stm32mp-2.2.r2-r0/build/trusted
2.将tf-a-stm32mp157a-fsmp1a-trusted.stm32拷贝到uboot源码目录下
cp tf-a-stm32mp157a-fsmp1a-trusted.stm32 ~/FSMP1A/u-boot-stm32mp-v2020.10-stm32mp-r2-r0/u-boot-stm32mp-v2020.10-stm32mp-r2/
3.进入到uboot源码目录下
cd ~/FSMP1A/u-boot-stm32mp-v2020.10-stm32mp-r2-r0/u-boot-stm32mp-v2020.10-stm32mp-r2/
4.将TF卡插入到读卡器中,并被ubuntu识别
5.在uboot源码顶层目录下,执行脚本文件,进行烧写镜像文件
./sdtools.sh /dev/sdb
6.将读卡器从ubuntu中退出
7.将TF卡插入到开发板中,并进行测试,观察现象
8.出现如下错误现象为正常现象:电源错误信息
Exception mode=0x00000016 at: 0x2ffdf799
PANIC at PC : 0x2ffdf799
电源错误信息更改
1.通过对比电路图可知,FSMP1A采用的是电源分离的思想,而DK1公板采用的一个电源管理芯片对电源进行管理
2.解决方法:
1)去掉DK1公板相关电源内容
2)添加FSMP1A电源相关内容
3.进入tf-a-stm32mp-2.2.r2-r0/tf-a-stm32mp-2.2.r2/fdts目录下,打开stm32mp15xx-fsmp1x.dtsi
vi stm32mp15xx-fsmp1x.dtsi
1)删除i2c4节点(注释)
2)删除cpu0和cpu1节点(注释)
添加FSMP1A开发板设备树内容
1.进入tf-a-stm32mp-2.2.r2-r0/tf-a-stm32mp-2.2.r2/fdts目录下,打开stm32mp15xx-fsmp1x.dtsi
vi stm32mp15xx-fsmp1x.dtsi
2.添加电源相关节点内容
3.添加sdmmc2相关节点内容
对tf-a源码编译测试
0.对tf-a源码进行编译,进入tf-a源码目录下
make -f $PWD/../Makefile.sdk all
1.进入到/home/linux/FSMP1A/tf-a-stm32mp-2.2.r2-r0/build/trusted
2.将tf-a-stm32mp157a-fsmp1a-trusted.stm32拷贝到uboot源码目录下
cp tf-a-stm32mp157a-fsmp1a-trusted.stm32 ~/FSMP1A/u-boot-stm32mp-v2020.10-stm32mp-r2-r0/u-boot-stm32mp-v2020.10-stm32mp-r2/
3.进入到uboot源码目录下
cd ~/FSMP1A/u-boot-stm32mp-v2020.10-stm32mp-r2-r0/u-boot-stm32mp-v2020.10-stm32mp-r2/
4.将TF卡插入到读卡器中,并被ubuntu识别
5.在uboot源码顶层目录下,执行脚本文件,进行烧写镜像文件
./sdtools.sh /dev/sdb
6.将读卡器从ubuntu中退出
7.将TF卡插入到开发板中,并进行测试,观察现象