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

news2024/9/8 23:40:37

文章目录

  • 一、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.coloradmin.cn/o/1957960.html

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

相关文章

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…

Java Web——第一天

Web开发课程安排 Web标准 Web标准也称为网页标准&#xff0c;由一系列的标准组成&#xff0c;大部分由W3C( World Wide Web Consortium&#xff0c;万维网联盟)负责制定 三个组成部分: HTML:负责网页的结构 (页面素和内容) CSS:负责网页的表现 (页面元素的外观、位置等页面…

Ubuntu 20.04.6 安装 Elasticsearch

1.准备 -- 系统更新 sudo apt update sudo apt upgrade -- 安装vim 文本编辑器 sudo apt install vim-- jdk 版本确认 java -versionjdk 安装可以参照&#xff1a;https://blog.csdn.net/CsethCRM/article/details/140768670 2.官方下载Elasticsearch 官方地址&#xff1a;h…

PPT图表制作

一、表格的底纹 插入→表格→绘制表格→表设计→选择单元格→底纹 二、把一张图片做成九宫格 1. 把一张图片画成九宫格&#xff08;处理过后还是一张图片&#xff0c;但是有框线&#xff09; 绘制33表格→插入图片→全选表格单元格→右键设置形状格式→填充→图片或纹理填充…

Teamcenter RAC开发,创建Item的两种方式

1、如果描述不必填&#xff0c;采用胖客户端的创建方式 newItem itemType.create(newItemId, "", targetTypeComp.getTypeName(), item_name, // "test1", null, null2、如果描述必填&#xff0c;则需要采用SOA的创…

汇川CodeSysPLC教程03-2-6 ModBus TCP

什么是ModBus TCP&#xff1f; ModBus TCP是一种基于TCP/IP协议的工业网络通信协议&#xff0c;常用于工业自动化和控制系统。它是ModBus协议的一个变种&#xff0c;ModBus协议最初由Modicon&#xff08;现在是施耐德电气的一部分&#xff09;在1979年开发。 以下是ModBus TC…

二分类、多分类、多标签分类的评价指标

前言 在机器学习和深度学习中&#xff0c;常见的分类任务可以分为&#xff1a;二分类&#xff08;Binary Classification); 多分类&#xff08;Multi-class Classification); 多标签分类&#xff08;Multi-label Classification); 序列分类 (Sequence Classification); 图分类…

SQL优化相关

文章目录 SQL优化1. 数据插入2. 主键优化页分裂页合并索引设计原则 3. order by 优化4. group by 优化5. limit优化6. count优化7. update 优化 SQL优化 1. 数据插入 当我们需要插入多条数据时候&#xff0c;建议使用批量插入&#xff0c;因为每次插入数据都会执行一条SQL&am…

使用YApi平台来管理接口

快速上手 进入YApi官网&#xff0c;进行注册登录https://yapi.pro/添加项目 3. 添加分类 4. 添加接口 5. 添加参数 添加返回数据 可以添加期望 验证 YAPI&#xff08;Yet Another Practice Interface&#xff09;是一个现代化的接口管理平台&#xff0c;由淘宝团队…

pip install albumentations安装下载遇19kB/s超级慢细水管解决办法

albumentations 是一个用于图像增强的 Python 库&#xff0c;它提供了丰富的图像变换功能&#xff0c;可以用于数据增强&#xff0c;从而提高深度学习模型的泛化能力。 直接安装命令&#xff1a; pip install albumentations但是如果半夜遇到这种19kB/s的下载速度 为头发着想&…

【通信模块】LoRa与LoRaWAN简介

LoRaWAN网络 技象科技相关文章总结&#xff0c;学习笔记&#xff0c;原文链接如下&#xff0c;转载请标明该出处&#xff1a; LORA&#xff1a; https://www.techphant.cn/tag/l-2 LORAWAN&#xff1a;https://www.techphant.cn/tag/l-3 其他&#xff1a;如LAN https://www…

网络通信---TCP协议1

今日内容 三次握手: 指建立tcp连接时&#xff0c;需要客户端和服务端总共发送三次报文确认连接。 四次挥手&#xff1a; 断开一个tcp连接&#xff0c;需要客户端和服务端发送四个报文以确认断开。 编程模型 TCP报文 客户端 服务端

第6篇文献研读生态廊道相关综述

该文发在生态与农村环境学报。该文章写了生态廊道概念的发展历程、生态廊道类型及功能、生态廊道划定的理论和方法、生态廊道的时间和国内大型生态廊道建设实践。 这篇文章可以让大家了解生态廊道的知识。

Rocketmq-5.3.0和对应dashboard的最新版本Docker镜像,本人亲自制作,部署十分方便,奉献给大家

一、Rocketmq 最新版本5.3.0&#xff0c;采用docker镜像安装方式 二、官方rocketmq镜像对内存等参数配置非常不灵活便利 为了快速、灵活部署rocketmq&#xff0c;以及能方便对其内存等参数进行设置&#xff0c;特意制作了关于它的docker镜像。 三、镜像获取 最新rocketmq-5.…

使用二进制来理解数据和二进制的计算

1 使用二进制来理解数据 和人类的思维习惯不同的是&#xff0c;计算机将把所有的东西数字化之后才会进行处理。那么计算机能理解的数字是什么样的呢&#xff1f;其实&#xff0c;在计算机内部&#xff0c;不管是什么信息都使用二进制来保存和处理的。 计算机为什么要用二进制…

芋道微服务全栈开发日记(商品sku数据归类为规格属性)

商品的每一条规格和属性在数据库里都是单一的一条数据&#xff0c;从数据库里查出来后&#xff0c;该怎么归类为对应的规格和属性值&#xff1f;如下图&#xff1a; 在商城模块&#xff0c;商品的单规格、多规格、单属性、多属性功能可以说是非常完整&#xff0c;如下图&#x…

搭建规范化的vue2项目

项目包含的库 Vue2VuexRouterEslintPrettier 环境 vue&#xff1a;2.6.14 eslint&#xff1a;7.32.0 prettier&#xff1a;2.4.1 eslint-plugin-prettier&#xff1a;4.0.0 eslint-plugin-vue&#xff1a;8.0.3 vue/cli&#xff1a;5.0.8 步骤 全局安装cli工具 npm in…

Vue3----扩展 element Plug card

扩展 element Plug card 增加全屏&#xff0c;折叠操作项 核心代码 <template><div class"cc-card-component"><el-card v-if"state.isShow" :class"state.class" :bodyStyle"bodyStyle" :shadow"props.shadow…

ic进阶|性能篇02:一文带你了解一种特殊的并行技术-展开!

本期文章让我们聊聊一种数字ic设计技术——展开&#xff0c;展开用于产生一个一次迭代就相当于原有结构的多次迭代的新电路结构。其相当于之前聊过的折叠技术的反向操作&#xff0c;折叠使用一个功能单元通过多次迭代来完成原有电路结构一次迭代的操作&#xff0c;相对于通过时…

访问控制列表(ACL)

文章目录 ACL原理与基本配置ACL分类ACL组成ACL规则的匹配与应用 ACL原理与基本配置 ACL(Access Control List&#xff0c;访问控制列表) 读取二层、三层、四层报文信息根据预先定义好的规则对报文进行过滤和分类实现网络访问控制、防止网络攻击和提高网络带宽利用率等目的提高…