3.30号系统移植

本文详细描述了如何在STM32MP157A平台移植UBOOT和TF-A的安全版本,包括源码清理、配置、设备树修改、编译和测试过程,以实现定制化的固件升级。
摘要由CSDN通过智能技术生成

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-fsmp1a                                                

4、进入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.dts 

     13 #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、生成对应的镜像文件     

2.4 测试步骤

3. 修改

3.1 删除DK1设备树相关内容

3.2 添加FSMP1A设备树相关内容

编译测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值