《S32G3系列芯片——Boot详解》持续更新中...

一、前言

  随着车辆智能化水平的不断提升,S32G3系列芯片,作为NXP旗下面向汽车和工业市场的高性能处理器,已经成为许多工程师和开发者的首选。无论是处理实时控制任务、数据处理任务还是为复杂网络提供安全通信,S32G3系列芯片都展现出了卓越的性能。但是,强大的性能仅是基础,在这个高度依赖于数据和网络连接的时代,安全性成为了系统设计中不可或缺的一环。正是在这种背景下,Boot过程的安全性显得尤为重要!

  Boot过程是系统启动的初期阶段,是发生在系统加电后,操作系统启动之前的一段关键时期。在这一阶段,芯片需要执行一系列复杂的操作,包括自检、安全策略的校验和加载操作系统至内存中。一个安全且可靠的Boot过程能够确保加载到系统中的软件没有被篡改,是经过认证的,同时保护系统免受早期阶段的攻击。因此,正确理解并实现一个安全的Boot流程对于确保整个车载系统的安全至关重要!

  在本专栏中,我们将深入探讨S32G3系列芯片的Boot过程,从基本的引导流程及相关的众多基础概念入手,详细分析其安全启动机制,以及如何通过硬件安全引擎(HSE)实现高效的验证和加密服务。推荐按照目录顺序阅读该专栏,通篇学习后再回来重新阅读该篇章,这样一些之前看不懂的地方也许会豁然开朗,也将对S32G3系列芯片的Boot背后的安全机制有更进一步的了解

二、启动时序概述(Boot Sequence)

——S32G3系列芯片系统上电后,遵循怎样的启动顺序?如何确保设备能正确地加载并执行芯片使用者编写的固件/应用程序?

  大家应该都听说过芯片出厂一般会固化一段代码在ROM中,这份代码是只读的,它承担着载入用户编写的固件软件的重要作用,这正是本专栏将详细介绍的Boot功能。S32G3系列芯片在硬件复位完成后,唯一可用的处理器核心位于HSE_H子系统,称为HSE_H core(HSE主要跟安全功能相关,又俗称安全核,这里的后缀_H可以看作是对产品或者性能的区分,类比iPhone 15、15Pro、15Pro Max)。这里提到的两个基本概念解释如下:

  • HSE_H core: 在硬件重置后,HSE_H core开始从包含BootROM固件的HSE_H ROM模块执行固件。
  • BootROM固件: 负责管理启动序列,直到它将控制权传递给其他代码。传递的具体方式取决于启动的类型——在非安全启动中,固件将控制权传递给在HSE_H子系统之外的处理器核心上(也称应用核)运行的客户软件;在安全启动中,固件将控制权传递给在HSE_H核心上运行的HSE_H固件,HSE_H固件对客户软件做完校验后才会把控制权转交给这个通过校验的客户软件。即启动过程中,BootROM固件根据启动类型(安全或非安全)来决定如何将控制权转移给系统中的下一个软件阶段

三、启动特性(Boot Features)

  BootROM固件支持如下启动特性:

  • 从外部闪存启动
  • 支持安全与非安全启动模式
  • 选择客户应用程序的启动核心
  • 串行下载功能
  • 执行设备配置数据(DCD)
  • 配置和启动客户提供的自检数据
  • 推进芯片生命周期状态(LifeCycle)
  • 调试挑战/响应认证
  • 从待机/低功耗模式启动
  • 从备份程序镜像启动

  这里只是简单罗列,先不必深究每种特性的具体含义,读完本专栏将对他们有进一步的理解。

四、启动模式(Boot Mode)

  在复位时,BootROM代码配置HSE_H core的启动模式,包括内存类型、速度等,基于BootROM的启动特性S32G3支持的两种启动模式如下:

  • 串行启动模式: 通过UART或CAN等接口,通常用于开发和工厂线的编程。可以通过熔断DIS_SER_BOOT保险丝来禁用此模式。
  • 从外部闪存启动: 通过QuadSPI Flash、SD卡或MMC等,通常用于产品级设备。

  启动模式的配置信息是通过RCON(Reset Control: 复位控制寄存器)引脚或基于FUSE_SEL保险丝状态来决定的,通过以下三项输入判定启动模式:

  • 启动模式引脚(BOOTMOD1和BOOTMOD2)
  • FUSE_SEL保险丝(抑制RCON的使用,强制基于保险丝的启动)
  • LC(Lifecycle)状态(阻止某些仅对特定生命周期状态有效的启动模式)

具体如下表所示:

在这里插入图片描述

Tip📌:关于其中的lifecycle state可以先不关注,将在本专栏后面的篇章中详细阐述。

——关于串行启动模式(Serial Boot mode)

  串行启动模式允许将应用程序代码下载到SRAM中,对于新生产的芯片或无法正确启动的芯片来说,这是一个非常重要的过程。串行启动模式(Serial Boot mode)的两个主要用途如下所示:

  • 下线编程(End-of-line programming):在生产线上的新芯片中,Flash是空白的,所有的保险丝也都是未熔断状态。为了使芯片可用,必须对Flash进行编程,并根据所需配置熔断保险丝。串行启动模式允许将初始的客户应用程序和数据下载到未编程的设备中,这通常是生产流程的最后一步。

  • 恢复变砖/无法正常启动的芯片(Non-responsive modules):由于软件编程错误、闪存故障或生产过程中的PCB(印刷电路板)故障等原因,有些模块可能无法启动,表现为芯片无响应。串行启动模式提供了一种机制,可以向SRAM下载可执行的恢复软件。例如,下载的可执行文件可能会重新编程闪存或执行诊断代码以确定故障原因。(板子变砖情况下的极限恢复手段,十分重要

Tips📌:

  • 如果通过熔断DIS_SER_BOOT保险丝(BOOT_CFG2[3])禁用了串行启动,将无法实现这种启动模式。
  • 串行启动模式是一个关键功能,它不仅支持初次编程,还提供了一种用于设备故障恢复的途径。

——如何判定启动模式

  BootROM具体使用哪种启动方式在上面的表格中已经简单梳理,主要通过两种机制:保险丝(Fuses)和复位控制寄存器(Reset Control, RCON)。具体使用哪种机制以及该机制下Boot ROM的启动配置信息从哪里获取如下所示:

在这里插入图片描述

  可见,BOOT_CFG2[4]作为FUSE_SEL配置(上图最右侧部分)决定了是使用基于保险丝状态的机制还是使用RCON的机制获取配置信息

  • 当FUSE_SEL为1时,使用从基于Fuses状态的配置信息启动的方式,这种方式是实际产品中配置启动过程的主要方式,BootROM 固件软件将从三个保险丝配置字(BOOT_CFG1、2、3)获取启动配置数据,配置完成后,可以通过启用BOOT_CFG的保险丝锁定来阻止配置数据进一步的更改。
  • 当FUSE_SEL为0时,使用从RCON获取配置信息启动的方式,该方式通常用于应用开发过程中,因为在应用开发过程中,可能需要多次更改启动配置,而RCON模式允许在开发期间更改启动配置,且不需要熔断保险丝。此外,BootROM支持从并行RCON和串行RCON获取启动配置信息。

——串行RCON和并行RCON?

  串行RCON通过I2C与外部串行EEPROM通信来获取32位的复位配置数据,而并行RCON直接使用高达32个通用输入/输出(I/O)引脚的信息作为配置数据给到BootROM。通过RCON[8]的值决定启用哪种RCON模式:

  • RCON[8] = 1 指示一个I2C EEPROM连接到RCON[7:8],需要从EEPROM读取32位配置数据。
  • RCON[8] = 0 指示使用所有32个并行RCON引脚用于启动配置。

  在开发结束后,推荐强制芯片始终从保险丝启动,通过以下步骤操作:

  1. 用正确的值熔断BOOT_CFGn保险丝。
  2. 熔断FUSE_SEL保险丝来永久禁用从RCON启动。
  3. 在复位期间将BOOTMOD引脚拉到所需状态。

五、《S32G3系列芯片——Boot详解》系列文章总目录

  看完以上一些基础概念,也许会对相关内容有个感性的认识,但很多内容甚至词汇也许让人摸不着头脑,没关系,按照下面的篇章逐步阅读后,也许有不一样的收获。

序号文章标题(点击即可跳转
1Boot过程的相关镜像详解:IVT、DCD、App Boot镜像到底是什么?
2S32G3系列芯片Boot过程涉及的寄存器有哪些?
3S32G3系列芯片Boot流程详解!★★★(待更新... ...)
4Serial Boot功能详解!★★★(待更新... ...)
5S32G3系列芯片如何从外置flash进行Boot启动?(待更新... ...)
6S32G3系列芯片使用HSE使能安全启动(HSE基于IVT的安全启动使能方案)!! ★★★★★ !!(待更新... ...)

  总之,S32G芯片的启动过程为设备的安全性和灵活性提供了坚实的基础。通过BootROM固件,芯片能够以安全或非安全模式启动,支持从多种外部介质加载程序,并提供灵活的启动配置选项。启动模式的选择可以通过引脚、保险丝以及生命周期状态的组合控制,满足从开发到生产不同阶段的需求。这一切确保了系统在各种应用场景下都能以预定的方式高效启动。

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车载系统攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值