《S32系列芯片——Boot详解》系列——S32系列芯片如何从外置flash进行Boot启动?
博主已开通同名公众号,通过文末或主页二维码关注博主,将为你推送最新、最细、最硬核的车载系统知识和嵌入式开发知识!公众号主页设有交流群作为同行江湖朋友们相互交流学习的驿站。
学习更多Boot相关内容,获取HSE基于IVT安全启动方案?
>>>>>>>>> 返回专栏总目录 《S32系列芯片——Boot详解》<<<<<<<<<
Tip📌:
鼠标悬停双虚线关键词/句,可获得更详细的描述;
建议按照专栏文章目录顺序依次阅读以便了解相关背景知识。
一、概述
BootROM支持从外置flash通过诸如QuadSPI接口或者基于μSDHC接口的SD/MMC/eMMC等设备接口执行Boot流程。具体从哪种外设flash启动由寄存器Boot_CFG1的bit位 [7:5] 的配置决定,如下表所示:
二、基于QuadSPI的boot
2.1 基于QuadSPI的boot方式概述
QuadSPI是一种高速串行外设接口(四线串行外设接口),可以实现微控制器与闪存的高速通讯。在启动过程中,首先,BootROM利用QuadSPI接口从外部闪存启动。这个过程分为两个阶段:
初始配置阶段: 在这个阶段,QuadSPI控制器被配置为低速模式(30MHz),以便识别连接的闪存类型。对于Quad闪存和Octal闪存,它使用1位单数据速率(SDR)模式;对于HyperFlash,则使用8位模式。
Tip📌:
QuadSPI控制器支持双数据速率(DDR)和单数据速率(SDR)两种高速操作模式。DDR模式在每个时钟周期内能够在上升沿和下降沿两次采样数据,而SDR只在每个时钟周期的一个边沿上采样,这样DDR能够提供更高的数据传输速率。
最终配置阶段: 在读取了闪存的重配置数据之后,根据这些数据重新配置QuadSPI控制器,实现更优的性能。
此外,QuadSPI控制器支持通过AHB(高级微控制器总线架构)接口或IP(外设接口)接口来读取数据。AHB接口是一种高性能的总线接口,用于高速数据传输。BootROM,则只支持通过AHB接口读取数据,而不支持通过IP接口。
当然,BootROM在启动过程中不支持对QuadSPI闪存进行任何写操作。这意味着在启动时,BootROM只能读取闪存中的数据,用于加载和执行系统必需的代码,BootROM无法修改闪存内容。这是一种安全措施,确保启动过程中闪存的内容不会被篡改,保障系统的引导安全和可靠性。
简单来说,BootROM利用QuadSPI接口从外部闪存启动时会先确定闪存类型,将QuadSPI控制器设置为低速模式,然后根据读取到的flash信息重新调整QuadSPI控制器的配置。
BootROM在这个过程中使用了一系列配置参数,这些参数需要使用方提前通过RCON寄存器或者fuses设置。以下是一些关键的配置参数,以及它们如何通过RCON寄存器或fuses设置:
Tip📌:
BootROM载入应用程序镜像的时候