工具/软件:
主题:
在热引导期间、Cortex-A53 上的非法指令 (ESR_EL1=0x02000000) 位于 0x80001180 (ELR_EL1 =0x80001180 )-根本原因分析和缓解
存在许多风险 :
板:AM64B-AM64B/SK GP
SDK: mcu_plus_sdk_am64x_11_00_00_15
1.症状
- 最坏情况 :
热启动导致 DebugP_log() 挂起。 A53 在 SemaphoreP_pend () 中插入 while 循环。


如果 DebugP_LOG() 被注释掉、它会导致 ClockP_SLEEP() 挂起。 A53 在 Hwip_abortHandler () 中插入 while 循环。

ESR_EL1=0x02000000、 ELR_ELL1 =0x80001180
如果冷启动或 DebugP_LOG() 和 ClockP_SLEEP() 都 被注释、系统将正常运行。
- 受影响的核心 :
Cortex-A53系统。 R5F 内核正常运行 在相同的热启动序列期间。 - 重复步骤 :
- 冷启动→系统正常运行。
- 触发热启动(看门狗复位/IPC 命令)。
- A53 首先失败
HVC称为后复位
我向 deepseek(类似于 Chat-GPT 的 AI 工具)咨询了这个问题、下面是 AI 的回应。
2.问题( AI 的答案)
。 HVC 执行(管理程序调用)指令 在冷启动期间成功 但在期间抛出非法异常 预热启动 当:
- 磁芯卡住 EL1 (异常级别不正确)。
- 管理程序上下文 (例如,,)
HCR_EL2VTTBR_EL2未恢复。 - TI-SYSFW 服务 处于无效状态进行 HVC 处理。
3、根本原因分析 (AI 回复)
A.核心架构差异
| Cortex-A53 | Cortex-R5F |
|---|---|
支持 EL2 + HVC |
否 EL2/HVC 支持 |
| 灯复位: 保持 EL 状态 | 完全复位: 清除所有状态 |
B. AM64x 特有的行为
- A53 上的热启动 :
- 系统 部分复位 (外设已重新初始化,但内核寄存器 EL 状态 会保留 )。
- 复位后、A53 在
EL1→HVCEL2μ s 时恢复需要→μ s 非法执行状态 (ESR 0x02000000)。
- R5F 的工作原理 :
R5F 内核需要认证 完全复位 →从头开始引导→无 EL 状态冲突。
c. SYSFW 交互
- HVC 调用依赖 预初始化的 Hypervisor 服务 预热启动后变为无效。
- R5F 使用的模块 IPC (而非 HVC)与 SYSFW 进行通信、从而避免了这种依赖关系。
4.推荐的解决方案 (AI 回复)
选项 1:在热启动期间跳过 HVC(侵入性最低)
选项 2:在热启动期间强制进行 EL2 转换
向 TI 发送的密钥申请
- 阐明了预期的热启动行为 :
- 应采用 TI-SYSFW 自动重新初始化 HVC 服务 热复位后?
- 官方指南 :
- 是 选项 1(跳过 HVC) 是否已批准用于生产?
- 勘误文档 :
- 这是已知的器件问题吗?
- 是否有正式的修复方法?