Linux第31步_了解STM32MP157的TF-A

news2024/11/23 15:27:05

了解STM32MP157的TF-A,为后期移植服务。

一、指令集

ARMV8提供了两种指令集:AAarch64和AArch32,根据字面意思就是64位和32位。

ARMV7提供的指令集是AArch32。

二、TF-A

指令集是AArch64的芯片,TF-A有:bl1、bl2、bl31、bl32 和 bl33这几个阶段。

bl1: Boot loader stage 1 (BL1).

bl2: Boot loader stage 2 (BL2)。

bl31: Boot loader stage 3-1 (BL31).

bl32: Boot loader stage 3-2 (BL32)。

bl32和 bl33是TF-A要启动第三方固件,比如 TEE OS和 uboot。

bl33: Boot loader stage 3-3 (BL33)。

TF-A启动流程:b11→b12→(b131/b132/b133)。

指令集是AArch32的芯片,TF-A有:bl1、bl2、bl32 和 bl33这几个阶段。

其中bl1、bl2和bl32属于TF-A的一部分,但是没有bl31

bl33一般是 uboot

打开TF-A源码目录,可以看到这5部分:

bl1一般是半导体厂商自己编写的内部“BootROM代码”。主要用来初始化NAND、EMMC、SD、USB或串口等。然后根据BOOT引脚的高低电平来判断当前所选择的启动设备,从对应的启动设备中加载b12镜像,并放到对应的内存中,最后跳转到 b12 镜像并运行。

bl2为安全启动固件,bl2会将剩余的三个启动阶段bl31、bl32和bl33对应的镜像文件加载到指定的内存中。

三、STM32MP1的TF-A

由于STM23MP1使用的指令集是AArch32,因此也没有bl31部分。

ST公司没有用TF-A提供的bl1,导致STM32MP1采用的是内部ROM代码,因此,bl2 和bl32(sp_min)是STM32MP1中TF-A的两个固件。又由于TF-A源码采用了设备树,所以STM32MP1中TF-A一共有四个部分:

STM32头部信息、设备树、bl2 和bl32

这四部分在编译的时候会被合并成一个二进制文件,这就是我们烧写到外部flash 中的TF-A镜像,即“tf-a-stm32mp157datk-trusted.stm32”。

注意:bl33镜像,就是uboot。

在STM32MP1中,TF-A的bl2部分主要功能:

首先是安全部分,STM32MP1的b12部分会初始化的外设如下:

①、BOOT、安全和OTP控制器,也就是ETZPC外设。

②、扩展的TrustZone 保护控制器,也就是BSEC外设。

③、TrustZone 针对 DDR 的地址空间保护控制器,也就是 TZC 外设。由于 bl2 需要从外部 flash 中加载下一阶段的镜像,因此还需要初始化一些外部 flash,比如:

①、SD 卡。

②、EMMC

③、NAND.

④、NOR.

最后,STM32MP1的b12部分还要初始化一些其他的外设,比如:

①、DDR内存。

②、时钟。

③、串口,用于调试以及使用 STM32CubeProgrammer 的时候通过串口下载系统。

④、USB,用 STM32CubeProgrammer 通过USB烧写系统的时候需要用到。bl2 还需要对镜像镜像进行验证和鉴权,鉴权是通过调用内部 ROM 代码的鉴权服务来完成。最后,bl2 会加载 bl32 和 bl33 的固件到指定的内存区域,并跳转到 bl32,bl32 接着运行。

四、STM32MP1的TF-A和Uboot的存储映射图

由于TF-A各部分存储映射不是固定的,所以在编译TF-A时,会因配置不同,导致其存储地址不同。例如:

上图中BL32的起始地址为0x2FFEDO00,但在其他地方,有可能是别的地址,这个是没关系的,我们需要重点它的存储映射形式。

五、其它

STM32MP1的bl1部分是也可以选择的。

在TF-A源码里“tf-a-stm32mp-2.2.r1/plat/st/stm32mp1/platform.mk”,

platform.mk文件定了“BL2 AT EL3”为 1,因此,在编译STM32MP1平台对应的TF-A的时候不会编译b11部分由内部“ROM代码”完成了TF-A中的 bl1部分的工作,主要就是将外部Flash中的 b12代码加载到内部RAM中并运行。 

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

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

相关文章

【Linux】进入一个目录需要什么权限-目录的权限

Linux目录权限 在Linux中,目录也是文件,是文件就有属性,就有权限 在Linux中,我们可以通过cd命令进入目录 那么我们要进入一个目录,需要有什么权限呢? 目录和普通文件一样,也是有权限的 测试证…

分布式Erlang/OTP(学习笔记)(一)

Erlang分布式基础 假设你在机器A和机器B上各跑着一个Simple Cache应用的实例。要是在机器A的缓存上插人一个键/值对之后,从机器B上也可以访问,那可就好了。显然,要达到这个目的,机器A必须以某种方式将相关信息告知给机器B。传递该…

Cinder组件作用

1、Cinder下发的流程 (1)Cinder-api接受上层发送的创建请求,然后把请求下发给Cinder-scheduler调度服务 (2)Cinder-scheduler调度服务,计算出哪个主机更适合创建,计算出来之后再把请求下发到Ci…

查询数据库表字段具有某些特征的表

目录 引言举例总结 引言 当我们把一个项目做完以后,客户要求我们把系统中所有的电话,证件号等进行加密处理时,我们难道要一个表一表去查看那些字段是电话和证件号码吗? 这种办法有点费劲,下面我们来探索如何找到想要的…

【大数据】Flink 测试利器:DataGen

Flink 测试利器:DataGen 1.什么是 FlinkSQL ?2.什么是 Connector ?3.DataGen Connector3.1 Demo3.2 支持的类型3.3 连接器属性 4.DataGen 使用案例4.1 场景一:生成一亿条数据到 Hive 表4.2 场景二:持续每秒生产 10 万条…

进程间通信之匿名管道通信

每一次的努力都是自我成长的一步,坚持不懈的付出会铺就通向成功的道路。文章目录 进程间通信的介绍进程间通信的发展进程间通信的分类进程间通讯的本质资源?这个资源谁提供的? 管道什么是管道匿名管道管道小总结现在我给大家看一下管道通信的…

SCDN高防如何保护你的服务器

随着互联网的发展,如今的网络世界,虽说给我们的衣食住行带来了非常大的便利,但同时它存在着各种各样的威胁。比如我们的网站,如果不做任何保护措施的话,就很容易被DDoS、CC等攻击堵塞网络、窃取目标系统的信息&#xf…

这种网页要小心!注意你的账号密码泄露!

目录 H5是泄露账号和数据的重要渠道 代码混淆是最佳的安全保护手段 基于AI的自适应代码混淆 我们经常见到各类H5海报,产品展示、活动促销、招聘启事等。H5不仅能够无缝地嵌入App、小程序,还可以作为一个拥有独立链接地址的页面,直接在PC端打开…

AIOps案例 | 携手擎创,中邮信科成功打造新一代IT智能运维平台,收益明显!

为推动邮政信息科技体制改革、提升信息科技自主供给能力,在原信息技术局、数据中心和软开中心基础上,中邮信息科技(北京)有限公司(简称“中邮信科公司”)经中国邮政集团有限公司于2019年5月被批准成立。 公司主要负责邮政各类信息…

[论文阅读]DeepFusion

DeepFusion Lidar-Camera Deep Fusion for Multi-Modal 3D Object Detection 用于多模态 3D 物体检测的激光雷达相机深度融合 论文网址:DeepFusion 论文代码:DeepFusion 摘要 激光雷达和摄像头是关键传感器,可为自动驾驶中的 3D 检测提供补…

通过OpenIddict设计一个授权服务器03-客户凭证流程

在本部分中,我们将把 OpenIddict 添加到项目中,并实施第一个授权流程:客户端凭证流。 添加 OpenIddict 软件包 首先,我们需要安装 OpenIddict NuGet 软件包 dotnet add package OpenIddict dotnet add package OpenIddict.AspN…

Android CarService源码分析

文章目录 一、CarService的基本架构1.1、Android Automative整体框架1.2、Framework CarService1.3、目录结构1.3.1、CarService1.3.2、Car APP 二、CarService的启动流程2.1、系统启动后在SystemServer进程中启动CarServiceHelperService2.2、CarService启动 三、CarService源…

浅聊雷池社区版(WAF)的tengine

雷池社区版是一个开源的免费Web应用防火墙(WAF),专为保护Web应用免受各种网络攻击而设计。基于强大的Tengine,雷池社区版提供了一系列先进的安全功能,适用于中小企业和个人用户。 Tengine的故事始于2011年,…

Android-三方框架的源码

ARouter Arouter的整体思路是moduelA通过中间人ARouter把路由信息的存到仓库WareHouse;moduleB发起路由时,再通过中间人ARouter从仓库WareHouse取出路由信息,这要就实现了没有依赖的两者之间的跳转与通信。其中涉及Activity的跳转、服务prov…

微信原生小程序上传与识别以及监听多个checkbox事件打开pdf

1.点击上传并识别 组件样式<van-field border"{{ false }}" placeholder"请输入银行卡卡号" model:value"{{bankNo}}" label"卡号"><van-icon bindtap"handleChooseImg" slot"right-icon" name"sca…

网工内推 | 运维工程师,最高10K*15薪,思科认证优先

01 乐歌股份 招聘岗位&#xff1a;服务器运维工程师 职责描述&#xff1a; 1、负责公司云上云下所有服务器的日常运维工作&#xff0c;包括应用部署、巡检、备份、日志、监控&#xff0c;故障处理&#xff0c;性能优化等&#xff0c;保障公司相关系统稳定运行。 2、为开发、测…

【linux】粘滞位.yum

粘滞位 1.为什么我们普通用户可以删掉别人的文件&#xff08;包括root&#xff09;?合理吗&#xff1f; 2.删除一个文件和目标文件有关系吗&#xff1f; 没关系&#xff0c;和所处的目录有关系。 1.我们先以root身份创建一个目录&#xff0c;接着在这个目录下创建一个文件 2…

LLM之幻觉(二):大语言模型LLM幻觉缓减技术综述

LLM幻觉缓减技术分为两大主流&#xff0c;梯度方法和非梯度方法。梯度方法是指对基本LLM进行微调&#xff1b;而非梯度方法主要是在推理时使用Prompt工程技术。LLM幻觉缓减技术&#xff0c;如下图所示&#xff1a; LLM幻觉缓减技术值得注意的是&#xff1a; 检索增强生成&…

【开发篇】五、文章内容审核接口的内存问题优化

文章目录 1、初始实现思路&#xff1a;Async注解新开一个线程去审核2、改进思路一&#xff1a;加LinkedBlockingQueue阻塞队列3、改进思路二&#xff1a;RabbitMQ4、总结 背景&#xff1a;文章微服务中有一个文章审核接口&#xff0c;接口内又调用阿里云的内容安全接口进行文字…

【运维】WSL1如何升级到WSL2

升级WSL1到WSL2&#xff1a;简便快捷版 在这篇博客中&#xff0c;我们将研究如何通过一种更简便的方式&#xff0c;将WSL1迅速升级到WSL2&#xff0c;避免官方文档的繁冗步骤。如果你觉得官方方法太过冗长&#xff0c;那么这里提供的步骤可能更适合你。 官网的办法是&#xf…