1.对tf-a源码进行解压:
$> tar xfz tf-a-stm32mp-2.2.r2-r0.tar.gz
2.打补丁:
进入tf-a源码目录 $> cd tf-a-stm32mp-2.2.r2
打补丁命令 $> for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
3.配置交叉编译工具链
EXTRA_OEMAKE=CROSS_COMPILE=arm-linux-gnueabihf-
4.拷贝设备树
(1)cd tf-a-stm32mp-2.2.r2/fdts目录下
cp stm32mp157a-dk1.dts stm32mp157a-fsmp1a.dts
cp stm32mp15xx-dkx.dtsi stm32mp15xx-fsmp1x.dtsi
(2)修改上层目录下的 Makefile.sdk 编译脚本在 TFA_DEVICETREE 配置项中添加 stm32mp1
57a-fsmp1a
TFA_DEVICETREE ?= stm32mp157a-fsmp1a stm32mp157a-dk1 stm32mp157d-dk1 stm32
mp157c-dk2 stm32mp157f-dk2 stm32mp157c-ed1
(3)修改 fdts/stm32mp157a-fsmp1a.dts
#include "stm32mp15xx-dkx.dtsi"
修改为
#include "stm32mp15xx-fsmp1x.dtsi"
5.编译源码
make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157a-fsmp1a
TF_A_CONFIG=trusted ELF_DEBUG_ENABLE='1' all
报错信息:
make[1]: 离开目录“/home/linux/FSMP1A/tf-a-stm32mp-2.2.r2-r0/tf-a-stm32mp-2.2.r2”
/bin/sh: 22: stm32wrapper4dbg: not found
由于该打印信息一定经由顶层目录下的makefile打印,所以在顶层的makefile.sdk中搜索
stm32wrapper4dbg
找到 if [ "$(TF_A_ENABLE_DEBUG_WRAPPER)" = "1" ]; then \
# Generate wrapper for debugging \
stm32wrapper4dbg -s $(LOCAL_PATH)/../build/
TF_A_ENABLE_DEBUG_WRAPPER 变量 等于时会一直打印该内容
搜索:TF_A_ENABLE_DEBUG_WRAPPER 变量 ,
将 TF_A_ENABLE_DEBUG_WRAPPER ?= 1
可知这里将TF_A_ENABLE_DEBUG_WRAPPER 变量赋值为1了,所以为了不执行打印将
变量更改为 TF_A_ENABLE_DEBUG_WRAPPER ?= 0
6.编译源码