S32G3系列芯片Boot过程涉及的寄存器有哪些?

学习更多Boot相关内容,获取HSE基于IVT安全启动方案?
>>>>>>>>> 返回专栏总目录 《S32G3系列芯片——Boot详解》<<<<<<<<<

Tip📌:
  1、鼠标悬停双虚线关键词/句,可获得更详细的描述
  2、该部分可以简单了解,知道有这些寄存器即可,细节上可以在实际应用的时候再查阅或者直接翻芯片手册查看

一、引言

  在执行期间,BootROM会访问相关寄存器来执行以下操作:

  • 检索配置详情:这些操作包括读取系统配置、硬件设备设置等,这些信息对于BootROM正确加载和执行启动代码至关重要。
  • 维护执行细节:包括跟踪执行状态、管理内存使用等,以确保启动过程顺利进行。

  Boot相关寄存器寄存器分为两类:

  • 只读寄存器:这些寄存器提供输入给BootROM。它们可能包含硬件的固定配置信息,如设备型号、版本号等,BootROM会读取这些信息来确定如何正确地初始化硬件和加载操作系统或应用程序。
  • 读/写寄存器:这些寄存器包含状态信息,对于BootROM的正确功能来说是必需的。例如,这些寄存器可能用于标记特定的初始化步骤是否已完成,或者存储由BootROM执行的任何错误代码。

二、Boot相关的只读寄存器

  Boot相关寄存器的基地址是4007_C900h,有如下两个32位只读寄存器:

在这里插入图片描述

2.1 Boot Configuration 1 (BOOT_GPR_BMR1)

  简单来说,这个寄存器是用来存储芯片启动配置的关键数据,这些数据可以通过硬件方式(如设置保险丝或通过GPIO端口读入的状态)在芯片启动时被确定并锁存。这些配置决定了芯片的启动行为,包括选择启动模式、设备配置等。

在这里插入图片描述

  结构比较简单,所有位都是用来存储配置数据的,这些配置数据可以来自于两种不同的来源:BOOT_CFG fuses 或者 RCON pads,选择哪一个取决于 FUSE_SEL fuse 的状态。

  提到的三个名词再通俗地解释下:

BOOT_CFG fuses:

  • 是在芯片内部的一次性可编程(OTP)存储区域,通常在制造过程中或者通过初次编程来设置。
  • “Fuses”这个术语来源于早期的编程技术,实际上是通过烧断“保险丝”来永久存储配置信息。现代的等效物是不可逆的编程位,一旦设置就不能更改。
  • 这些fuses定义了系统电源启动时的硬件配置,例如时钟设置、内存映射、和启动模式等。

RCON pads:

  • 是芯片上的一组引脚(pads),可以通过外部方式(例如跳线或者开关)来设置启动配置。
  • RCON pads允许在系统重启时临时改变配置,而不需要更改永久的BOOT_CFG fuses。

FUSE_SEL fuse:

  • 是一个专门的fuse,用于决定是使用BOOT_CFG fuses中的配置数据还是RCON pads上的配置数据来启动。
  • 如果FUSE_SEL fuse 被设置为使用BOOT_CFG fuses,则会忽略RCON pads上的设置;如果被设置为使用RCON pads,则相反,会基于RCON pads的配置来启动系统。

2.2 Boot Configuration 2 (BOOT_GPR_BMR2)

  前面我们提到启动模式的配置信息是通过RCON(Reset Control: 复位控制寄存器)引脚或基于FUSE_SEL保险丝状态来决定的,主要通过启动模式引脚(BOOTMOD1和BOOTMOD2)以及FUSE_SEL保险丝状态判定启动模式,这三项配置就存储于这个寄存器中。如下所示:

在这里插入图片描述

  各位域字段含义如下所示:

字段名称位域描述
保留31-26
BOOTMOD125启动模式引脚 1
BOOTMOD224启动模式引脚 2
保留23-5
FUSE_SEL4从保险丝选择启动
从保险丝中获取的FUSE_SEL值。该保险丝指示启动配置是从RCON引脚还是BOOT_CFG保险丝获取。
保留3-0

三、Boot相关的可读写寄存器

  有如下三个可读写的寄存器:

在这里插入图片描述

3.1 SRC POR Control (SRC_POR_CTRL_REG)

  BootROM使用该寄存器来实现HSE_H回滚机制。这个寄存器位于系统资源控制器(SRC)域内,具体的内存地址是0x4007c038。

  它的位域构成和各自的含义如下:

在这里插入图片描述

  HSE_FW_ROLLBACK_MARKER (位31-16):这部分用来存放HSE_H固件回滚标记。当HSE_H固件尝试启动但失败时,它会在这里写入一个特定的标记值,Boot ROM将只识别特定值(例如"BADAh")作为有效的回滚标记。如果Boot ROM检测到这个有效的标记值,它会启动备份镜像,而不是主镜像。

  HSE_FW_ROLLBACK_COUNT_B (位15-8):这部分记录了Boot ROM传递控制权到HSE_H固件的备份镜像的次数,但是HSE_H固件未能写入有效的HSE_FW_ROLLBACK_MARKER值。这基本上是监控备份镜像尝试启动并失败的次数的计数器。

  HSE_FW_ROLLBACK_COUNT_A (位7-0):这部分记录了Boot ROM传递控制权到HSE_H固件的主镜像的次数,但HSE_H固件未能写入有效的HSE_FW_ROLLBACK_MARKER值。这是监控主镜像尝试启动并失败的次数的计数器。

  不妨再通俗地啰嗦一遍:

  • Boot ROM使用这个寄存器来监控固件启动是否成功。
  • 如果启动失败,固件会在HSE_FW_ROLLBACK_MARKER字段中写入一个特定值,Boot ROM会检查这个值。
  • 如果Boot ROM发现了"BADAh"这个特定的有效值,它会理解为主固件启动失败,并尝试启动备份固件。
  • HSE_FW_ROLLBACK_COUNT_B 和 HSE_FW_ROLLBACK_COUNT_A 分别用来记录备份镜像和主镜像启动尝试失败的次数。

Tip📌:
  这个机制的目的是在主固件无法成功启动时,允许系统自动尝试启动备份固件,从而增加系统恢复的几率并提高可靠性。

3.2 GPR28 Register (SRC_GPR_TOP_REG_28)

  该寄存器包含由BootROM在当前启动周期中使用的镜像信息,表示使用的是主镜像还是备份镜像。这个寄存器位于SRC_GPR_TOP域中,具体的内存地址是0x4007c870。

  它的字段构成和各自的含义如下:

在这里插入图片描述

  31-24位:保留位,暂时没有使用。

  23-16位(APP_IMAGE_SELECT):用作APP_IMAGE_SELECT标记,BootROM根据启动的镜像类型在此写入特定值:

  • 如果启动的是主镜像,写入0xA5。
  • 如果启动的是备份镜像,写入0x5A。
  • 如果没有镜像被启动,该字段保持为0x0。

  15-8位(DCD_IMAGE_SELECT):作为DCD_IMAGE_SELECT标记,记录了设备配置数据(DCD)解析的情况:

  • 如果主镜像的DCD被成功解析,写入0xA5。
  • 如果备份镜像的DCD被成功解析,写入0x5A。
  • 如果DCD没有被执行,该字段保持为0x0。

  7-0位(SELF_TEST_IMAGE_SELECT):作为SELF_TEST_IMAGE_SELECT标记,记录了自检DCD镜像解析的情况:

  • 如果主自检DCD镜像被成功解析,写入0xA5。
  • 如果备份自检DCD镜像被成功解析,写入0x5A。
  • 如果自检DCD没有被解析,该字段保持为0x0。

Tip📌:
  使用主和备份固件镜像是一个常见的冗余策略,如果主固件因为更新失败或损坏而无法正常启动时,BootROM可以回退到备份固件,这样可以提高系统的可靠性。这种机制在车载系统、嵌入式设备和其他需要高可靠性的场合尤为重要。

3.3 GPR29 Register (SRC_GPR_TOP_REG_29)

  该寄存器用于在使用QuadSPI引导过程中维持“QuadSPI上电复位(POR)延时”的执行状态。

  这个寄存器也位于SRC_GPR_TOP域内,地址是0x4007c874。该寄存器的第31位~第1位都是保留未使用的,只用到了最低位0,即QuadSPI_POR_Delay_Status位:

  这个位的状态决定了BootROM是否会在后续的启动过程中执行QuadSPI的POR延时。如果这个位被清除(即设为0),则BootROM将在下一次启动时执行POR延时;如果这个位被设定(即为1),BootROM将跳过这个延时,直接继续后续的启动流程。

Tip📌:
  这个寄存器的目的是提供一种机制,让系统可以根据实际情况决定是否需要执行POR延时。这项功能可能是由于不同的硬件配置、闪存设备的特性或系统的性能需求而具体化的配置。

>>>>>>>>> 返回专栏总目录 《S32G3系列芯片——Boot详解》<<<<<<<<<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

车载系统攻城狮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值