3、uboot启动概述

1、flash内存映射

大小名称描述
-userfs包括用户数据以及STM32实例应用
930MBrootfsLinux根文件系统,包括所有用户空间的程序(可执行文件, 软件库, …) 以及内核模块
16MBvendorfs存放第三方专有二进制文件
64MBbootfs启动logo、linux内核、linux内核设备树、extlinux.conf配置文件(可选) 、初始RAM文件系统。该文件系统可以被复制到外部DDR,在还没有挂装大的根文件系统供linux使用
2MBssbl存放第二级启动加载器Second Stage Boot Loader (SSBL)。这里是UBoot, 包括附在文件尾的设备树文件(dtb)
256KB~512KBfsbl存放第一级启动加载器First Stage Boot Loader。可以是ARM Trusted Firmware (TF-A) 或者U-Boot Secondary Program Loader (SPL)包括文件尾的设备树文件(dtb)。注意: 由于ROM代码的RAM要求, FSBL大小限制在247KB。

可选分区

大小名称描述
256KB~512KBteehOP-TEE header
256KB~512KBteedOP-TEE pageable code and data
256KB~512KBteexOP-TEE pager

2、启动流程

标准Linux启动过程

在这里插入图片描述

注:BootROM主要是指与系统启动相关的代码,而romcode是一个更广泛的术语,可以包括BootROM在内的任何存储在ROM中的代码

SPL处于FSBL之前

STM32MP157启动流程

在这里插入图片描述

STM32MP157非安全模式启动流程

在这里插入图片描述

STM32MP157安全模式启动流程

在这里插入图片描述

3、ROM Code

​ ROM Code是固件在STM32MP157内部的一段程序,是在复位后执行的第一段程序,复位后STM32MP157内部的两个A核执行相同的程序,由于ROM Code中进行了判断,所以ROM Code只在Core0上运行

ROM Code的特性主要包括:

  • Serial boot(从串行链路启动)
  • FLash memory boot(从多种存储器安全启动)
  • Engineering boot
  • Secondary core boot
  • RMA boot
  • Wake up from low power modes
  • Exported secure services
  • Secure Secrets Provisioning

ROM Code支持的启动流程图如下:

在这里插入图片描述

STM32MP157是判断是否在第一个核上运行、是否启动M核、是否RMA、是否ENGI,这些对我们来说都不太重要,默认它一路绿灯就好了,重点要关注红框中的冷启动部分

  • 选择启动介质
  • 从启动介质加载 FSBL 镜像
  • 校验 FSBL 镜像
  • 校验通过,则跳转到 FSBL 镜像入口执行

4、TF-A

在这里插入图片描述

ROM code 加载TF-A 可执行文件并跳转到BL2

BL2 准备BL32运行时环境

BL2 加载BL33程序

BL2 跳转到BL32

BL32 跳转到BL33

​ BL1是执行的第一个阶段,并被设计作为ROM代码;它在内部RAM中加载和执行。TF-A中的BL1在STM32MP1系统中没有被使用。因为STM32MP1在片内的ROM中有自己的专有ROM代码,所以可以删除这一部分,然后BL2是要执行的第一个TF-A二进制文件,BL2(受信任的引导固件)负责加载下一阶段的映像(安全和非安全)。为了实现此作用,BL2必须初始化所有必要的外围设备。

5、uboot

U-Boot是用于STM32 MPU平台的引导链的第二阶段引导加载程序(SSBL)。

它具有简单的命令行界面(CLI),允许用户通过串行端口控制台进行交互。

它提供脚本功能

加载linux内核并执行

初始化外部设备:例如:USB、eMMC、网卡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值