系统移植(七)u-boot移植 ④ trusted版本

文章目录

  • 一、U-boot源码适配
    • (一)执行make stm32mp15_trusted_defconfig命令进行配置,生成.config文件
    • (二)执行make menuconfig命令,对u-boot源码进行重新配置
      • 1. 对u-boot源码进行配置,移除pmic驱动代码的编译
      • 2. 修改u-boot源码使用的默认的设备树文件
      • 3. 修改u-boot的命令行的提示符
      • 4. 移除开机3A电流检测
    • (三)执行make -j4 all重新编译u-boot源码
  • 二、TF-A(ATF)移植
    • (一)概念
    • (二)分析TF-A源码
      • 1. 目录下文件的作用
      • 2. 分析README.HOW_TO.txt
        • 1. 配置交叉编译器
        • 2. 准备TF-a源码,对TF-A源码压缩包进行解压缩,并执行打补丁的命令
        • 3. 编译TF-A源码
        • 4. 部署TF-A镜像文件到开发板中
    • (三)对TF-A源码进行配置和编译
      • 1. 修改Makefile.sdk文件,配置交叉编译器
      • 2. 准备TF-a源码,对TF-A源码压缩包进行解压缩,并执行打补丁的命令
      • 3. 根据DK1板子的设备树文件拷贝生成FSMP1A板子的设备树文件
      • 4. 修改设备树文件
      • 5. 编译tf-A源码,生成对应的镜像文件
    • (四)烧录到TF卡中
      • 1. 拷贝u-boot.stm32和tf-a-stm32mp157a-fsmp1a-trusted.stm32镜像文件到sdtools目录下
      • 2. 将tf卡插到读卡器上,然后将读卡器插到电脑的USB口,将读卡器被ubuntu系统识别
      • 3. 查看TF卡是否被ubuntu系统识别
      • 4. 执行./sdtools.sh脚本文件,烧写trusted版本的镜像文件
      • 5. 将tf卡重新插到开发板中,设置开发板的启动方式为TF卡启动
      • 6. 重新上电后,可以正常进入u-boot

一、U-boot源码适配

(一)执行make stm32mp15_trusted_defconfig命令进行配置,生成.config文件

此命令会生成一个trusted版本的默认配置文件

(二)执行make menuconfig命令,对u-boot源码进行重新配置

1. 对u-boot源码进行配置,移除pmic驱动代码的编译

  1. 删除i24节点、cpu节点、port
    具体参见basic版本
  2. 更改配置文件
Device Drivers  --->Power  ---> [ ] Enable support for STMicroelectronics STPMIC1 PMIC|--> 去掉*

2. 修改u-boot源码使用的默认的设备树文件

Device Tree Control  ---> (stm32mp157a-fsmp1a) Default Device Tree for DT control |---> 回车进入编辑界面,修改设备树文件的名字

3. 修改u-boot的命令行的提示符

Command line interface  --->(FSMP1A>>> ) Shell prompt 

4. 移除开机3A电流检测

Command line interface  --->Device access commands  ---> [ ] adc - Access Analog to Digital Converters info and data Device Drivers  --->    [ ] Enable ADC drivers using Driver Model   

(三)执行make -j4 all重新编译u-boot源码

编译成功之后,在u-boot源码目录下生成u-boot.stm32镜像文件,

二、TF-A(ATF)移植

(一)概念

TF-A是ARM公司专门为ARM-v8编写的一套提供安全服务的开源软件,ST公司对TF-A源码进行适配,使其支持ARM-v7架构的Cortex-A7核,提供安全服务。
TF-A软件用来引导trusted版本的u-boot启动。

(二)分析TF-A源码

在这里插入图片描述

1. 目录下文件的作用

    ├── 0001-st-update-v2.2-r2.0.0.patch		---> 补丁文件├── 0002-st-update-v2.2-r2.1.0.patch		---> 补丁文件├── Makefile.sdk							---> 工程配置和编译├── README.HOW_TO.txt						---> 帮助文档├── series									---> 存储补丁文件的信息└── tf-a-stm32mp-2.2.r2-r0.tar.gz			---> TF-A源码压缩包

2. 分析README.HOW_TO.txt

1. 配置交叉编译器
CROSS_COMPILE=arm-ostl-linux-gnueabi-

在这里插入图片描述

2. 准备TF-a源码,对TF-A源码压缩包进行解压缩,并执行打补丁的命令
对压缩包进行解压缩
`$> tar xfz tf-a-stm32mp-2.2.r2-r0.tar.gz`
进入到TF-A源码目录下
`$> cd tf-a-stm32mp-2.2.r2`
对TF-A源码进行打补丁
`$> for p in `ls -1 ../*.patch`; do patch -p1 < $p; done `
  • 补充:ls -1 会列出目录下所有文件核目录的名字,且每个文件或目录占一行
    在这里插入图片描述
    ls -l 列出文件核文件夹的详细信息
    在这里插入图片描述
3. 编译TF-A源码

在这里插入图片描述

编译TF-A源码
$> make -f $PWD/../Makefile.sdk all指定配置编译TF-A源码
$ make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157c-ev1 TF_A_CONFIG=trusted ELF_DEBUG_ENABLE='1' all编译成功之后,TF-A源码编译生成的镜像文件在以下目录中
#> ../build/*/tf-a-*.stm32
4. 部署TF-A镜像文件到开发板中

dd if=<tf-a binary> of=/dev/<device partition> bs=1M conv=fdatasync

  1. dd命令:读取、转换并输出数据

  2. if=<tf-a binary>: if 是 input file 的缩写,这里指定了输入文件的路径。

  3. of=/dev/<device partition>: of 是 output file 的缩写,这里指定了输出文件的路径。dd 命令将会把输入文件的内容写入到这个设备分区中。

  4. bs=1M: bs 是 block size 的缩写,这里指定了每次读写操作的块大小为 1MB。dd 命令将会以 1MB 的块为单位来复制数据,这可以提高数据传输的效率。

  5. conv=fdatasync: conv 选项用于指定转换选项,fdatasync 是其中之一。
    fdatasync 会确保在写入操作完成后,数据会被同步到磁盘上,但是不会同步文件的元数据。这通常用于提高性能,因为它减少了需要同步到磁盘的数据量。

(三)对TF-A源码进行配置和编译

1. 修改Makefile.sdk文件,配置交叉编译器

在这里插入图片描述
修改为下面内容:
在这里插入图片描述

2. 准备TF-a源码,对TF-A源码压缩包进行解压缩,并执行打补丁的命令

对压缩包进行解压缩$> tar -vxf tf-a-stm32mp-2.2.r2-r0.tar.gz
进入到TF-A源码目录下$> cd tf-a-stm32mp-2.2.r2对TF-A源码进行打补丁$> for p in `ls -1 ../*.patch`; do patch -p1 < $p; done 

3. 根据DK1板子的设备树文件拷贝生成FSMP1A板子的设备树文件

  1. 使用ls fdts/stm32mp15dk 命令查看DK1板子的设备树文件
    在这里插入图片描述
  2. 根据DK1板子的设备树文件拷贝生成FSMP1A板子的设备树文件
cp fdts/stm32mp157a-dk1.dts   fdts/stm32mp157a-fsmp1a.dts   
cp fdts/stm32mp15xx-dkx.dtsi   fdts/stm32mp15xx-fsmp1x.dtsi
  1. 修改fdts/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 = "STMicroelectronics STM32MP157A-FSMP1A Discovery Board";18     compatible = "st,stm32mp157a-fsmp1a", "st,stm32mp157";

4. 修改设备树文件

  1. 修改fdts/stm32mp15xx-fsmp1x.dtsi文件,将i2c4, cpu0, cpu1节点删除
  2. 修改fdts/stm32mp15xx-fsmp1x.dtsi文件,添加固定电源的设备树节点信息

5. 编译tf-A源码,生成对应的镜像文件

make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157a-fsmp1a TF_A_CONFIG=trusted ELF_DEBUG_ENABLE='1' all

(四)烧录到TF卡中

1. 拷贝u-boot.stm32和tf-a-stm32mp157a-fsmp1a-trusted.stm32镜像文件到sdtools目录下

以自己的路径为准

cp u-boot-2021.07/u-boot.stm32 ~/sdtools
cp tf-a-stm32mp-2.2.r2/build/trusted/tf-a-stm32mp157a-fsmp1a-trusted.stm32 ~/sdtools

2. 将tf卡插到读卡器上,然后将读卡器插到电脑的USB口,将读卡器被ubuntu系统识别

3. 查看TF卡是否被ubuntu系统识别

4. 执行./sdtools.sh脚本文件,烧写trusted版本的镜像文件

5. 将tf卡重新插到开发板中,设置开发板的启动方式为TF卡启动

在这里插入图片描述

6. 重新上电后,可以正常进入u-boot

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/51539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++进阶学习】第十弹——哈希的原理与实现——链地址法的原理与讲解

开放地址法&#xff1a;【C进阶学习】第九弹——哈希的原理与实现——开放寻址法的讲解-CSDN博客 前言&#xff1a; 哈希的整体思想就是建立映射关系&#xff0c;前面的开放地址法的讲解中&#xff0c;也对哈希的原理做了详细的讲解&#xff0c;今天就来讲解一下实现哈希的另一…

Java NIO (一)

因工作需要我接触到了netty框架&#xff0c;这让我想起之前为夺高薪而在CSDN购买的Netty课程。如今看来&#xff0c;这套课程买的很值。这套课程中关于NIO的讲解&#xff0c;让我对Tomcat产生了浓厚的兴趣&#xff0c;于是我阅读了Tomcat中关于服务端和客户端之间连接部分的源码…

如何快速获取全网精准客流?揭秘不为人知的5大运营策略!

有同行所在的地方&#xff0c;就一定拥有咱们需要的客户。客户看的是结果&#xff0c;搜索的是问题&#xff0c;寻找的是答案。 如果没有付费流量&#xff0c;单纯靠搞免费流量&#xff0c;很多大厂的运营也会变得一文不值。一个牛逼的运营&#xff0c;不仅是会做付费流量&…

leetcode10 -- 正则表达式匹配

题目描述&#xff1a; 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s的&#xff0c;而不是部分字符串。 示例 1&#xff1…

PDF转Word后不能修改怎么办?是什么原因呢?

平时在生活中&#xff0c;很多朋友都会有将PDF转换成Word文档的需求&#xff0c;因为一般情况下PDF文件是不能直接编辑修改的&#xff0c;所以只能通过这种方式来解决问题。但是近期&#xff0c;有部分用户在后台反馈说PDF转Word后不能修改怎么办呢&#xff1f;其实这个问题也是…

第1-3章Excel数据分析基础

文章目录 第1章&#xff1a;使用统计函数做数据分析1-1常用统计函数应用1-2条件统计函数1-3多条件统计函数1-4条件统计函数中的通配符1-5将条件统计函数中的条件数组化1-6单条件文本合并-新增函数1-7多条件与模仿通配符的文本合并 第2章&#xff1a;数据分析之合并计算2-1合并计…

备忘录系统

目录 一、 系统简介 1.简介 2需求分析 3 编程环境与工具 二、 系统总体设计 1 系统的功能模块图。 2 各功能模块简介 3项目结构 4 三、 主要业务流程 &#xff08;1&#xff09;用户及管理员登录流程图 &#xff08;2&#xff09;信息添加流程 &#xff0…

攻防世界 re 新手模式 2

IgniteMe 32位无壳 一些简单信息&#xff0c;看关键函数 可以得到v7[i]的值 比较简单的逆向 #include<stdio.h> #include<string.h> int main() {char flag[40];char s[40];char str[]"GONDPHyGjPEKruv{{pj]XrF";char ch[] {0x0D, 0x13, 0x17, 0x11,…

8、ViKings

难度 低->中 目标 root 2个flag 进行主机发现 netdiscover -i eth0 -r 192.168.189.0/24 kali 192.168.189.58 靶机 192.168.189.158 进行信息收集 nmap -T4 -sV -p- -A 192.168.189.158 开启了80和22&#xff0c;先探索web服务&#xff0c;没有思路再考虑ssh爆破 直…

react css module 不生效问题记录

背景&#xff1a;自己使用webpackreactcssless配置的项目框架&#xff0c;在使用过程中发现css module引入不生效。 import React from react import styles from ./index.module.less console.log(styles)//输出 undefinedwebpack配置了css-loader,less-loader,webpack默认cs…

Executable Code Actions Elicit Better LLM Agents

Executable Code Actions Elicit Better LLM Agents Github: https://github.com/xingyaoww/code-act 一、动机 大语言模型展现出很强的推理能力。但是现如今大模型作为Agent的时候&#xff0c;在执行Action时依然还是通过text-based&#xff08;文本模态&#xff09;后者JSO…

全网独一份!AI大模型学习训练资源...

国内AI赛道又爆了&#xff01; 继科大讯飞、阿里、华为等巨头公司发布AI产品后&#xff0c; 很多中小企业也陆续进场&#xff01; 人才市场上AI大模型工程师“一将难求”&#xff01; 甚至开出80k*16的高薪&#xff0c;挖掘AI大模型人才&#xff01; 如今大厂老板们&#…

arduino程序-变量操作(基础知识)

arduino程序-变量操作&#xff08;基础知识&#xff09; 1-7 arduino程序-变量操作太极创客网站类型资料变量类型范围超过上限会从下限开始长整型变量作用域&#xff08;全局变量&#xff0c;局部变量&#xff09;全局变量局部变量最后作业 1-7 arduino程序-变量操作 大家好这…

Ubuntu、centos、openEuler安装docker

目录 1.在 Ubuntu 上安装 Docker 1. 1 更新软件包 1. 2 安装必要的依赖 1.3 添加 Docker 的 GPG 密钥 1.4 添加 Docker 仓库 1.5 更新软件包 1.6 安装 Docker 1.7 启动并启用 Docker 服务 1.8 验证安装 1.9 运行测试容器 1.10 非 root 用户运行 Docker 2.在 CentOS…

多节点网络流量对比分析在业务性能分析中的应用

在现代企业网络环境中&#xff0c;网络流量分析已成为确保业务连续性和优化性能的关键工具。特别是多节点网络流量对比分析&#xff0c;通过对比不同节点间的流量&#xff0c;能有效发现潜在问题&#xff0c;提高网络运维效率。本文将探讨多节点网络流量对比分析在业务性能分析…

【数据结构】哈希表二叉搜索树详解

&#x1f48e; 欢迎大家互三&#xff1a;2的n次方_ &#x1f48e;所属专栏&#xff1a;数据结构与算法学习 &#x1f341;1. 二叉搜索树 二叉搜索树也称为二叉查找树或二叉排序树&#xff0c;是一种特殊的二叉树结构&#xff0c;它的特点是&#xff1a; 1. 若左树不为空&am…

顺序表的代码实现

顺序表的代码实现 1.认识什么是顺序表1.1顺序表的优缺点 2.实现顺序表代码准备3.顺序表的代码实现3.1 顺序表结构体的定义3.2 顺序表的初始化3.3 顺序表的销毁3.4 顺序表的输出打印3.5顺序表的扩容3.6 顺序表的头部插入(头插)3.7 顺序表的头部删除(头删)3.8 顺序表的尾部插入(尾…

2种常用的取消word文档”打开密码“方法

在日常工作中&#xff0c;我们有时会遇到需要取消Word文档“打开密码”的情况。无论是因为忘记密码&#xff0c;还是出于文档共享的需要&#xff0c;掌握几种有效的取消密码方法都显得尤为重要。以下是2种常用的方法来取消Word文档的“打开密码”。 方法一&#xff1a;文件另存…

二叉树--堆(上卷)

二叉树–堆&#xff08;上卷&#xff09; 树 树的概念与结构 树是⼀种⾮线性的数据结构&#xff0c;它是由 n&#xff08;n>0&#xff09; 个有限结点组成⼀个具有层次关系的集合。把它叫做 树是因为它看起来像⼀棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;⽽…

智慧医院信息系统思维导图

智慧医院信息系统 "思维导图智慧医院信息系统, 用一张图解析智慧医疗信息系统 本文转载&#xff1a;有了这个智慧医院信息系统思维导图&#xff0c;没人不明医疗信息化