[嵌入式Linux]—STM32MP1启动流程

news2024/11/24 10:33:37

STM32MP1启动流程

1.启动模式

STM32MP1等SOC支持从多种设备中启动,如EMMC、SD、NAND、NOR、USB、UART等。其中USB、UART是作为烧录进行启动的。

STM32MP1内部ROM中存储有一段出厂代码来进行判断从哪种设备中启动,上电后这段代码会被执行,这段代码空间不开放给用户。

在这里插入图片描述

这段代码通过判断MP1中BOOT0~BOOT2这三个引脚的高低电平来判断在哪种设备启动,硬件原理图可参考如下。SOC也可以遍历各个启动设备,如果有则在该设备中启动,则可以省掉该部分电路。

在这里插入图片描述

MP1引脚电平对应启动设备如下:

在这里插入图片描述

MP1引脚可进行复用,BOOT引脚也可以进行复用。在出厂ROM中的代码已经设定好启动引脚,如果想修改启动引脚,则需要修改OTP,因此不建议复用BOOT引脚。

什么是OTP?

在嵌入式系统中,OTPOne-Time Programmable)是一种重要的存储技术。它通常用于存储固件、配置信息或密钥等数据,其主要特点是:

  1. 一次性可编程
  • 定义:OTP 存储器只能在制造后进行一次编程,数据一旦写入便无法更改或删除。这与可擦除可编程只读存储器(EEPROM)或闪存(Flash)不同,后者可以多次写入和擦除。
  1. 应用领域
  • 固件存储:在某些嵌入式设备中,OTP 被用来存储设备的固件或初始配置。这些数据在出厂时被写入,之后不会被修改。
  • 安全性:OTP 存储器常用于存储加密密钥、设备身份等敏感信息。由于其数据不可更改,增加了数据的安全性,降低了被篡改的风险。
  • 电子产品:许多消费电子、汽车电子和工业设备中广泛使用 OTP 存储器来实现安全认证和数据保护。
  1. 物理特性
  • 制造过程:OTP 存储器通常在半导体制造过程中被编程。它的设计允许在生产时写入数据,之后的任何操作都不会改变这些数据。
  • 成本效益:与其他可重复编程存储器相比,OTP 存储器的成本通常较低,因为它的结构更简单,不需要复杂的擦除和重写机制。
  1. 优势与劣势
  • 优势
    • 数据安全性高:一旦写入,数据不可篡改。
    • 成本低:相对于其他类型的存储器,其制造和使用成本通常更低。
  • 劣势
    • 数据不可更改:一旦数据写入,无法修改,限制了其灵活性。
    • 写入过程不可逆:写入失败会导致数据丢失,无法恢复。
  1. 与其他存储技术的比较
  • EEPROM 和 Flash 存储:这些存储器可以多次写入和擦除,适合需要频繁更新的数据存储。相对而言,OTP 更适合用于静态数据。

总结

OTP 存储器在嵌入式系统中扮演着重要角色,尤其是在需要高安全性和低成本的应用场景。尽管它的灵活性较差,但在许多情况下,无法更改的数据特性使其成为一个理想的选择。

2.启动流程

2.1 功能介绍

MP1启动后首先会执行保存在ROM中的一段代码来判断从哪种设备启动,除此之外,该代码还有其它功能:

  1. Secure boot :安全启动,即一般的启动模式。
  2. Engineering boot :可通过STLINK访问A7或M4内核。一般通过该方法调试M4内核。
  3. Secondary core boot :用于配置第二个内核启动。启动后,MP1双核A7实际上只有一个核Core0在运行ROM程序,另一个核Core1在执行死循环,只用Core1接收到Core0发送的信号后才回运行。如果不进行第二个核启动,则可认为是单核设备。
  4. RMA boot :全称为Return Merchandise Authorization Boot,是一种与设备保修和维护相关的启动机制,主要用于嵌入式系统和网络设备。这种机制允许设备在返回制造商或维修中心时以特定方式启动,以便进行故障排除、修复或恢复。
  5. 低功耗唤醒 。
  6. 提供安全相关服务 。

2.2 启动流程

内部ROM流程图如下所示:

在这里插入图片描述

主要流程如下:

  1. 是不是CPU0运行?
  2. 检查复位原因。
  3. 是否是因为Standby导致的退出?
  4. 是否为RMA启动?
  5. 是否为ENGI启动?
  6. 进行冷启动,在flash中载入系统并进行鉴权。

2.3 安全启动

FSBL: 全称为 First stage boot loader,也就是第一阶段启动文件。
SSBL: 全称为 Second stage boot loader,也就是第二阶段启动文件 。

在MP1选定外部启动设备宏,则进入安全启动流程,基本步骤如下:

  1. 在flash中载入FSBL镜像文件,对于MP1来说,一般为TF-A。
  2. 对FSBL加载的镜像进行鉴权(此时DDR未初始化没在MP1内部RAM中运行)。
  3. 如果鉴权成功,则运行FSBL中固件。

2.4 串行启动

当从USB或UART启动时会进入该模式,ROM中的代码会循环扫描可以启动的UART或USB OTG接口,当扫描到一个活动的端口后或MP1便选定该端口,忽略掉其它设备。

  • USB启动

ROM内部代码支持USB OTG启动。需注意ROM中的晶振频率已经设置,要是修改需要修改OTP。

  • UART启动

约定的串口模式为串口工作模式为: 1 位起始位、 8 位数据位、偶校验、 1 位停止位、波特率 115200。

启动的UART也已经约定好,需保持与ROM中一致。

3.Flash设备启动要求

Linux系统不像MCU,编译完成通过只有一个bin文件烧录即可。

Linux编译出来为一个镜像文件,还需要其它代码来进行辅助,传统Linux需要三部分:uboot、kernel、rootfs。

对于MP1来说,还需要TF-A、TEE、vendorfs等。

以上所有文件组成最终的系统镜像,将镜像烧录到Flash中,根据不同的文件类型,则放置到Flash中不同的位置。MP1官方建议的位置如下:

在这里插入图片描述

EMMC和NAND Flash的主要区别是什么?

NAND Flash需要外部控制器来控制其读写操作,而eMMC则采用内置控制器,可以更加方便地实现读写操作和数据管理。此外,eMMC还可以作为内置存储器使用,由于其内置控制器的作用,可以实现快速的读写操作。

4.头文件信息

ROM启动时会先读取FSBL代码,一般是TF-A或者uboot的SPL。但是编译生成的二进制不能直接用,需要加入一段头部信息,其中包含全部鉴权内容。具体格式如下:

在这里插入图片描述

5.启动过程

MP1启动Linux流程如下:

在这里插入图片描述

  • 系统启动为一个链式结构:ROM Code -> FSBL -> SSBL -> Linux kernel -> rootfs。FSBL及其后面每一个环节都对镜像进行鉴权,指导设备正确启动。
  • FSBL中初始化时钟树、外部RAM控制器(即DDR),在内部RAM中运行;SSBL中代码运行在DDR中,完成的功能更为丰富。

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

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

相关文章

使用java函数逆序一个单链表

代码功能 定义了一个ListNode类,用于表示单链表的节点,每个节点包含一个整数值和一个指向下一个节点的引用。 在ReverseLinkedList类的main方法中,创建了一个包含从1到10的整数的单链表。 定义了一个printList方法,用于打印链表的…

基于JavaWeb开发的java springmvc+mybatis酒水商城管理系统设计和实现

基于JavaWeb开发的java springmvcmybatis酒水商城管理系统设计和实现 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承…

【JAVA基础】集合类之HashSet的原理及应用

近期几期内容都是围绕该体系进行知识讲解,以便于同学们学习Java集合篇知识能够系统化而不零散。 本文将介绍HashSet的基本概念,功能特点,使用方法,以及优缺点分析和应用场景案例。 一、概念 HashSet是 Java 集合框架中的一个重…

Spring Boot实现License生成与校验详解

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 在软件开发领域,License(许可证)机制是保护软件版权、控制软件使用范围的重要手段。通过为软件生成唯一的License,开发者可以确保只有合法用户才能使用软件&…

右键菜单添加 Open Tabby here

如果安装了Tabby,为了提高效率在鼠标右键菜单中添加Open Tabby here,可以通过按 win R,并输入regedit 回车打开注册表编辑器 计算机\HKEY_CLASSES_ROOT\Directory\Background\shell 然后在Shell下面新建项,名称为Tabby&#xf…

企业架构理论TOGAF从理论到实践:引领企业数字化转型的实践指南

在现代企业面临的数字化转型浪潮中,如何从战略层面实现技术与业务的全面融合,成为了众多企业的核心挑战。TOGAF(The Open Group Architecture Framework)不仅为企业提供了强大的理论框架,还通过实践验证了其在推动企业…

力扣 中等 39.组合总和

文章目录 题目介绍解法 题目介绍 解法 是216组合总和III链接的扩展 class Solution {List<List<Integer>> res new ArrayList<>();List<Integer> path new ArrayList<>();public List<List<Integer>> combinationSum(int[] can…

Windows 下安装mamba_ssm 记录,包括causal-conv1d和mamba-ssm

Windows 下安装mamba_ssm 记录 1 重要参考文献2 具体安装步骤3 一些提醒事项4 安装causal-conv1d5 安装mamba-ssm6 结果展示 1 重要参考文献 Window 下Mamba 环境安装踩坑问题汇总及解决方法 2 具体安装步骤 重点看的是这篇 Window 下Mamba 环境安装踩坑问题汇总及解决方法 …

【Redis】持久化(下)-- AOF

文章目录 AOF概念如何使用AOFAOF工作流程命令写入演示文件同步策略 AOF的重写机制概念触发重写机制AOF重写流程 启动时数据恢复混合持久化总结 AOF 概念 AOF持久化:以独立日志的方式记录每次的写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的.AOF的主要作用是解决…

工行企业网银U盾展期后有两个证书问题的解决方法

工行企业网银U盾证书快到期后&#xff0c;可以自助展期&#xff0c;流程可以根据企业网银提示页面操作。操作后&#xff0c;可能存在两个新旧两个证书并存的情况&#xff0c;致使网银转账等操作失败&#xff0c;如图&#xff1a; 其原因是新证书生成后&#xff0c;旧证书没有删…

wsl配置图形显示环境 no $display environment variable

wsl运行fsl&#xff0c;安装好之后&#xff0c;可以使用bet&#xff0c;等命令行进行操作&#xff0c;但是不能使用fsl呼出窗口。 因为 wsl并不像原生linux具有destop桌面&#xff0c;它只有命令行。所以当运行fsl的时候会报错&#xff0c; application-specific initializat…

裁掉数千人、把工作外包给 AI!一年多后,这家巨头的 CEO恳求无人搭理

“对&#xff0c;裁掉几千名员工。” “好的&#xff0c;头儿。” “很好&#xff0c;那么这个人工智能可以做那些前雇员能做的一切事情&#xff1f;” “不&#xff0c;不全是。” “等等&#xff0c;什么&#xff1f;” “你刚刚裁掉的几百人都是硬件工程师&#xff0c;…

k8s的pod的管理和优化

资源管理介绍 在kubernetes中&#xff0c;所有的内容都抽象为资源&#xff0c;用户需要通过操作资源来管理kubernetes。 kubernetes的本质上就是一个集群系统&#xff0c;用户可以在集群中部署各种服务 所谓的部署服务&#xff0c;其实就是在kubernetes集群中运行一个个的容器…

Kubernetes--深入理解Pod资源管理

文章目录 kubectl --helpapi-resourcesapi-versionskubectl explain ... API资源资源规范PodServiceConfigMapSecret 显示资源删除资源详细描述RESTful API Pod资源管理Pod的核心概念Pod资源配置了解Pod运行状况Kubectl get pods xxxxkubectl describe pods xxxkubectl logs -f…

如何彻底掌握 JavaScript 23种设计模式

设计模式是解决特定问题的常用解决方案&#xff0c;它们可以帮助开发者编写更清晰、可维护、可扩展的代码。在 JavaScript 中&#xff0c;常见的设计模式可以分为三大类&#xff1a;创建型模式、结构型模式 和 行为型模式。本文将全面介绍 JavaScript 中常见的设计模式&#xf…

性能剖析利器-Conan|得物技术

作者 / 得物技术 - 仁慈的狮子 目录 一、背景 1. 局限性 2. 向前一步 二、原理剖析 1. 系统架构 2. 工作模式 3. reporter 三、稳定性验证 四、案例分析 五、写在最后 一、背景 线上问题的定位与优化是程序员进阶的必经之路&#xff0c;常见的问题定位手段有日志排查、分布式链…

脑机接口技术的未来与现状:Neuralink、机械手臂与视觉假体的突破

近年来&#xff0c;脑机接口&#xff08;BCI&#xff09;技术发展迅速&#xff0c;不仅限于科幻小说和电影&#xff0c;已经逐步进入现实应用。特别是马斯克的Neuralink公司推出的“盲视&#xff08;Blindsight&#xff09;”设备&#xff0c;最近获得了FDA的突破性设备认定&am…

IEC104规约的秘密之八----应用任务优先级

所谓应用任务优先级&#xff0c;就是同时出现不同的应用任务时&#xff0c;优先发哪个报文。这里有一个表格&#xff0c;可以做为参考&#xff0c;一般是在子站来实现&#xff0c;子站是数据提供方&#xff0c;需要对各种任务的优先级进行排序&#xff0c;以满足应用的实际需要…

为什么Linux系统下的程序无法在Windows下运行

两个系统的格式不同&#xff0c;格式就是协议&#xff0c;是在固定位置有意义的数据。Linux下可执行文件格式是elf&#xff0c;可使用readelf查看elf文件头 而Windows下的可执行程序是PE格式&#xff0c;是一种可执行文件。 还有一点是Linux下和Win下系统API不同&#xff0c;这…

【CSS】houdini自定义CSS属性实现渐变色旋转动画

现有一段代码&#xff0c;在不旋转整个元素的前提下&#xff0c;渐变背景无法应用动画 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…