uboot安全版本移植
1.uboot移植步骤
1、进入家目录下FSMP1A目录uboot源码目录下
linux@ubuntu:~$ cd FSMP1A/u-boot-2021.07/
2、在uboot源码目录下,执行make distclean清除目标
linux@ubuntu:~/FSMP1A/u-boot-2021.07$ make distclean
3、在uboot源码目录下,执行安全版本的默认配置文件
linux@ubuntu:~/FSMP1A/u-boot-2021.07$ make stm32mp15_trusted_defconfig
成功现象:
#
# configuration written to .config
#
4、在uboot源码目录下,执行make menuconfig,去掉图形化界面配置信息
Device Drivers --->
Power --->
[ ] Enable support for STMicroelectronics STPMIC1 PMIC
5、在uboot源码目录下,执行make menuconfig,更改默认编译的设备树信息
Device Tree Control --->
(stm32mp157a-fsmp1a) Default Device Tree for DT control
6、在uboot源码顶层目录下,执行make menuconfig,去掉adc电流
Command line interface --->
(FSMP1A> ) Shell prompt
Device access commands --->
[ ] adc - Access Analog to Digital Converters info and data
7、在uboot源码顶层目录下,执行make menuconfig,去掉adc电流
Device Drivers --->
[ ] Enable ADC drivers using Driver Model
8、在uboot源码目录下,编译uboot源码,生成uboot镜像文件
time make -j4 all
9、成功现象如下所示
10、将u-boot.stm32重新命名为u-boot-stm32mp157a-fsmp1a-trusted.stm32
linux@ubuntu:~/FSMP1A/u-boot-2021.07$ cp u-boot.stm32 u-boot-stm32mp157a-fsmp1a-trusted.stm32
2. TF-A移植
2.1 准备源码
2.2 分析README文档(重点)
Compilation of TF-A (Trusted Firmware-A): ========> tf-a目录
1. Pre-requisite ========> 准备工作
2. Initialise cross-compilation via SDK ========> 初始化交叉编译工具链
3. Prepare tf-a source code ========> 准备tf-a源码
4. Management of tf-a source code ========> 管理tf-a源码
5. Compile tf-a source code ========> 编译tf-a源码
6. Update software on board ========> 更新tf-a源码
1、解压tf-a源码
$> tar xfz tf-a-stm32mp-2.2.r2-r0.tar.gz
2、进入tf-a源码目录
$> cd tf-a-stm32mp-2.2.r2
3、打补丁命令,作用:补丁文件中存放默认的一些配置文件,对于程序员来说,需要将补丁文件打入到当前源码目录下
$> for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
4、编译tf-a源码
$> make -f $PWD/../Makefile.sdk all
或者
$ make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157c-ev1 TF_A_CONFIG=trusted ELF_DEBUG_ENABLE='1' all
5、生成镜像文件名称,以及位置
#> ../build/*/tf-a-*.stm32
2.3 移植步骤
1、进入家目录下FSMP1A目录TF-A源码目录下,解压tf-a源码
linux@ubuntu:~/FSMP1A/tf-a-stm32mp-2.2.r2-r0$ tar -vxf tf-a-stm32mp-2.2.r2-r0.tar.gz
2、在 ~/FSMP1A/tf-a-stm32mp-2.2.r2-r0顶层目录下,打开 Makefile.sdk 文件,配置交叉编译工具链
linux@ubuntu:~/FSMP1A/tf-a-stm32mp-2.2.r2-r0$ vi Makefile.sdk
14 EXTRA_OEMAKE=CROSS_COMPILE=arm-ostl-linux-gnueabi- !!!!后面的内容千万不要动!!!!!
更改交叉编译工具链的前缀:
14 EXTRA_OEMAKE=CROSS_COMPILE=arm-linux-gnueabihf-
3、在 ~/FSMP1A/tf-a-stm32mp-2.2.r2-r0顶层目录下,打开 Makefile.sdk 文件,更改默认编译的设备树文件
24 TFA_DEVICETREE ?= !!!!后面的内容千万不要动!!!!!
只需要添加FSMP1A平台编译的设备树
24 TFA_DEVICETREE ?= stm32mp157a-fsmp1a4、进入tf-a源码目录
linux@ubuntu:~/FSMP1A/tf-a-stm32mp-2.2.r2-r0$ cd tf-a-stm32mp-2.2.r2/
5、在tf-a源码目录下,对tf-a源码进行打补丁
linux@ubuntu:~/FSMP1A/tf-a-stm32mp-2.2.r2-r0/tf-a-stm32mp-2.2.r2$ for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
6、FSMP1A开发板参考DK1公板进行移植的,DK1公板所有的硬件信息都在设备树中进行存放所以需要将DK1设备树的信息复制为FSMP1A信息
7、进入TF-A源码设备树目录,将DK1公板设备树信息,复制为FSMP1A设备树内容
1)进入设备树目录:linux@ubuntu:~/FSMP1A/tf-a-stm32mp-2.2.r2-r0/tf-a-stm32mp-2.2.r2$ cd fdts/
2)将 DK1公板设备树信息,复制为FSMP1A设备树内容
cp stm32mp157a-dk1.dts stm32mp157a-fsmp1a.dts
cp stm32mp15xx-dkx.dtsi stm32mp15xx-fsmp1x.dtsi
3)修改设备树的源文件
linux@ubuntu:~/FSMP1A/tf-a-stm32mp-2.2.r2-r0/tf-a-stm32mp-2.2.r2/fdts$ vi stm32mp157a-fsmp1a.dts13 #include "stm32mp15xx-dkx.dtsi"
14 #include <dt-bindings/soc/st,stm32-etzpc.h>
15
16 / {
17 model = "STMicroelectronics STM32MP157A-DK1 Discovery Board";
18 compatible = "st,stm32mp157a-dk1", "st,stm32mp157";修改为
13 #include "stm32mp15xx-fsmp1x.dtsi" ==========> 这一行为需要修改的内容
14 #include <dt-bindings/soc/st,stm32-etzpc.h>
15
16 / {
17 model = "HQYJ STM32MP157A-FSMP1A Discovery Board"; ==========> 这一行为需要修改的内容
18 compatible = "hqyj,stm32mp157a-fsmp1a", "hqyj,stm32mp157"; ==========> 这一行为需要修改的内容
8、在TF-A源码目录下,编译TF-A源码,生成TF-A的镜像文件
linux@ubuntu:~/FSMP1A/tf-a-stm32mp-2.2.r2-r0/tf-a-stm32mp-2.2.r2$ make -f $PWD/../Makefile.sdk all
出现如下现象:/bin/sh: 22: stm32wrapper4dbg: not found
9、生成对应的镜像文件