在现代汽车电子和工业控制系统中,微控制器的启动过程至关重要。AURIX TC397 作为英飞凌推出的高性能多核微控制器,其启动机制设计精巧,确保了系统的安全性、可靠性和灵活性。本文将深入解析 AURIX TC397 的启动过程,从 BMHD 结构到 UCB 配置,为开发者提供全面的技术参考。
备注:基于英飞凌的illd的demo,团队学习内容分享,如有错误欢迎大家批评指正。也欢迎大家一起交流学习:support@softor.com.cn
AURIX TC397 的启动过程是一个精心设计的多阶段流程,确保芯片从复位状态安全过渡到应用程序执行状态。
┌─────────────────┐
│ 硬件复位 │
└────────┬────────┘
▼
┌─────────────────┐
│ UCB 读取与验证 │
└────────┬────────┘
▼
┌─────────────────┐
│ BMHD 验证 │
└────────┬────────┘
▼
┌─────────────────┐
│ PMS 初始化 │
└────────┬────────┘
▼
┌─────────────────┐
│ PLL 初始化 │
└────────┬────────┘
▼
┌─────────────────┐
│ 内存初始化 │
└────────┬────────┘
▼
┌─────────────────┐
│ 核心启动 │
└────────┬────────┘
▼
┌─────────────────┐
│ 应用程序执行 │
└─────────────────┘
UCB(User Configuration Block)是 AURIX TC397 芯片中的用户配置块,相当于芯片的”配置中心”,存储了启动所需的各种配置信息。
UCB 位于 Data Flash 区域,从地址 0xAF400000 开始,分为 14 个扇区:
|
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UCB 包含多个配置区域,每个区域都有原始版本(ORIG)和副本版本(COPY):
BMHD(Boot Mode and Hardware Description)是启动配置的核心结构,定义了芯片的启动模式和硬件配置:
typedef struct
{
unsigned short bmi; /**< \brief 0x000: Boot Mode Index (BMI)*/
unsigned short bmhdid; /**< \brief 0x002: Boot Mode Header ID (CODE) = B359H*/
unsigned int stad; /**< \brief 0x004: User Code start address*/
unsigned int crc; /**< \brief 0x008: Check Result for the BMI Header (offset 000H - 007H)*/
unsigned int crcInv; /**< \brief 0x00C: Inverted Check Result for the BMI Header (offset 000H - 007H)*/
unsigned int reserved0[60]; /**< \brief 0x010: Reserved area (60 words) till the offset 0x100*/
unsigned int pw[8]; /**< \brief 0x100: Password protection (8 words) till the offset 0x120 */
unsigned int reserved1[52]; /**< \brief 0x120: Reserved area (52 words) till the offset 0x1F0*/
unsigned int confirmation; /**< \brief 0x1F0: 32-bit CODE, (always same)*/
} Ifx_Ssw_Bmhd;
|
|
|
|
|
|
|
|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
在 Ifx_Cfg_SswBmhd.c 文件中,定义了多个 BMHD 实例,提供冗余备份:
在 Ifx_Cfg_Ssw.h 文件中,可以配置以下启动选项:
|
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AURIX TC397 拥有 6 个 TriCore 核心,启动过程中可以配置哪些核心需要启用:
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Power Management System (PMS) 初始化是启动过程中的重要步骤,用于配置芯片的电源管理系统:
#define IFX_CFG_SSW_CALLOUT_PMS_INIT() \
{ \
Ifx_Ssw_jumpToFunctionWithLink(&Ifx_Ssw_Pms_Init); \
IFX_CFG_SSW_CALLOUT_PMS_CHECK(); \
}
示例:在汽车发动机控制单元中,PMS 初始化确保各个模块在正确的电压下工作,避免电压不稳定导致的系统故障。
Phase-Locked Loop (PLL) 初始化用于配置系统时钟:
#define IFX_CFG_SSW_CALLOUT_PLL_INIT() \
{
if (IfxScuCcu_init(&IfxScuCcu_defaultClockConfig) == 1) \
{
__debug();
}
}
示例:在工业控制系统中,PLL 初始化确保系统时钟稳定,保证实时控制任务的精确执行。
各个 TriCore 核心的启动函数定义如下:
void __Core1_start(void);
void __Core2_start(void);
void __Core3_start(void);
void __Core4_start(void);
void __Core5_start(void);
示例:在多核心应用中,Core0 可以负责系统管理,Core1 负责实时控制,Core2 负责通信,充分利用多核优势。
AURIX TC397 使用 IEEE 802.3 标准定义的 CRC-32 多项式进行计算。需要注意的是,虽然 TriCore CPU 本身是小端序的,但 CRC 计算要求使用大端序排列数据。
计算步骤:
bmhdid(2字节) + bmi(2字节) + stad(4字节)示例:修改用户代码起始地址
AURIX 提供了内置的 CRC 计算函数:
IFX_INLINE uint32 IfxCpu_calculateCrc32(uint32 *startaddress, uint8 length)
{
uint32 returnvalue = 0; /* set seed value to 0 */
for (;length > 0; length--)
{
/* calculate the CRC over all data */
__asm__ ("CRC32B.W %0,%0,%1" : "+d" (returnvalue) : "d" (*startaddress));
startaddress++;
}
return returnvalue;
}
要修改 UCB 中的启动项等内容,需要按照以下步骤进行:
DMU_SF_CONTROL.LCKHSMUCB 寄存器示例:修改启动模式为从 RAM 启动
应用需求:快速启动、高可靠性、实时控制
启动配置:
优化策略:
应用需求:稳定性、可预测性、安全认证
启动配置:
优化策略:
应用需求:安全性、实时性、低功耗
启动配置:
优化策略:
AURIX TC397 芯片的启动机制是一个精心设计的系统,通过 UCB 和 BMHD 等结构实现了灵活、可靠的启动配置。了解和掌握这些机制,对于开发高质量的 AURIX 应用至关重要。
通过本文的解析,我们可以看到:
掌握这些知识,开发者可以根据具体应用场景,优化 AURIX TC397 的启动过程,实现更高效、更可靠的系统设计。
作者:tianpengbo / 田朋博。大家如果在项目中遇到相关技术问题,欢迎联系我交流。
support@softor.com.cn
tianpengbo@softor.com.cn
作者:tianpengbo / 田朋博。大家如果在项目中遇到相关技术问题,欢迎联系我交流。
support@softor.com.cn
tianpengbo@softor.com.cn