《S32系列芯片——Boot详解》系列——Boot过程相关镜像详解:IVT、DCD、App Boot镜像到底是什么?
博主已开通同名公众号,通过文末或主页二维码关注博主,将为你推送最新、最细、最硬核的车载系统知识和嵌入式开发知识!公众号主页设有交流群作为同行江湖朋友们相互交流学习的驿站。
学习更多Boot相关内容,获取HSE基于IVT安全启动方案?
>>>>>>>>> 返回专栏总目录 《S32系列芯片——Boot详解》<<<<<<<<<
Tip📌:鼠标悬停双虚线关键词/句,可获得更详细的描述
一、概述
S32系列芯片的正常启动需要一份有效的程序镜像,主要包括以下部分:
- Image Vector Table (IVT):这是BootROM从启动设备读取的第一个镜像。IVT包含了启动过程中BootROM使用的必要数据,如各个镜像的入口点、指向设备配置数据(DCD)的指针和其他指针。
- Device Configuration Data (DCD):提供了对设备进行配置的数据。
- Self-Test DCD:用于执行自测。
- Application boot image:用于启动应用程序的镜像(BootLoader),通常芯片使用方会自行开发这个镜像,可以把它类比为linux中的uboot。
- Serial boot image:包含通过串行接口启动时需要的数据,实际上就是能跑在SRAM里面的App数据。
在详细认识每个镜像前,先简单了解主分区和备份区的概念:
在S32系列芯片中,镜像的存储结构设计采用了主分区(Primary Partition)和备份区(Backup Partition)的概念,旨在增强系统的可靠性和故障恢复能力。主分区包含当前运行的系统镜像,它是系统启动和运行时主要读取和执行的代码和数据区域。而备份区则存储了系统镜像的一个副本,用于在主分区损坏或更新失败时恢复系统。
这种设计允许系统在遇到软件故障或损坏时,自动或通过用户指令切换到备份区的镜像,从而快速恢复到一个已知良好的状态,减少系统的停机时间。此外,这也支持了更为安全和灵活的软件更新机制,因为更新可以首先在备份区进行,只有当新更新被验证无误后,才将其作为主要运行镜像。这大大降低了软件更新导致系统不稳定或不可用的风险。
二、 IVT镜像
IVT的位置在BootROM中是有固定要求的,BootROM启动后会直接从这个固定的特殊地址读取这个IVT镜像。对于不同类型的启动设备,IVT距离设备基地址的偏移如下所示:
BootROM在执行引导时,根据启动设备的不同(QuadSPI启动或μSDHC启动),对于指向设备配置数据(DCD)、自检DCD、应用程序镜像以及HSE_H固件镜像的指针有不同的对齐要求。对于QuadSPI启动,这些指针需要是8字节对齐的;而对于μSDHC启动,这些指针则需要是512字节块对齐的。
在S32系列芯片的启动过程中,IVT包含了重要的启动配置信息和指向各镜像代码入口指针。IVT镜像的结构如下所示:
地址 | 大小(字节) | 字段名称 | 备注 |
---|---|---|---|
0h | 4 | IVT header | 4字节镜像头标识,常称为镜像的Magic number |
4h | 4 | 保留未使用 | 保留未使用 |
8h | 4 | Self-Test DCD pointer(primary) | Self-Test DCD镜像的位置(主区) |
Ch | 4 | Self-Test DCD pointer (backup) | Self-Test DCD镜像的位置(备份区) |
10h | 4 | DCD pointer(primary) | DCD镜像位置(主分区) |
14h | 4 | DCD pointer (backup) | DCD镜像位置(备份区) |
18h | 4 | HSE_H firmware flash memory start pointer(primary) | HSE_H固件的位置(主分区) |
1Ch | 4 | HSE_H firmware flash memory start pointer (backup) | HSE_H固件的位置(备份区) |
20h | 4 | Application boot code flash memory start pointer(primary) | 应用程序bootloader的位置(主分区) |
24h | 4 | Application boot code flash memory start pointer (backup) | 应用程序bootloader的位置(备份区) |
28h | 4 | Boot configuration word | boot的配置信息 |
2Ch | 4 | Life cycle configuration word | LC配置信息 |
30h | 4 | 保留未使用 | 保留未使用 |
34h | 32 | Reserved for HSE_H firmware | 专门为HSE_H固件保留的字段 |
54h | 156 | 保留未使用 | 保留未使用 |
F0h | 16 |