This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM6442:AM64x A53 在热启动期间出现非法指令异常

Guru**** 2460850 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1552209/am6442-am64x-a53-illegal-instruction-exception-during-warm-boot

器件型号:AM6442


工具/软件:

主题:
在热引导期间、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 内核正常运行  在相同的热启动序列期间。
  • 重复步骤
    1. 冷启动→系统正常运行。
    2. 触发热启动(看门狗复位/IPC 命令)。
    3. A53 首先失败  HVC 称为后复位

我向 deepseek(类似于 Chat-GPT 的 AI 工具)咨询了这个问题、下面是 AI 的回应。

2.问题( AI 的答案)  

 HVC 执行(管理程序调用)指令  在冷启动期间成功  但在期间抛出非法异常  预热启动  当:

  • 磁芯卡住  EL1  (异常级别不正确)。
  • 管理程序上下文  (例如,,) HCR_EL2 VTTBR_EL2未恢复。
  • TI-SYSFW 服务  处于无效状态进行 HVC 处理。

3、根本原因分析 (AI 回复)  

A.核心架构差异

Cortex-A53 Cortex-R5F
支持 EL2 +  HVC  EL2/HVC 支持
灯复位:  保持 EL 状态 完全复位:  清除所有状态

B. AM64x 特有的行为

  • A53 上的热启动
    • 系统  部分复位  (外设已重新初始化,但内核寄存器 EL 状态  会保留 )。
    • 复位后、A53 在 EL1  HVC  EL2 μ s 时恢复需要→μ s  非法执行状态  (ESR 0x02000000)。
  • R5F 的工作原理
    R5F 内核需要认证  完全复位  →从头开始引导→无 EL 状态冲突。

c. SYSFW 交互

  • HVC 调用依赖  预初始化的 Hypervisor 服务  预热启动后变为无效。
  • R5F 使用的模块  IPC  (而非 HVC)与 SYSFW 进行通信、从而避免了这种依赖关系。

4.推荐的解决方案 (AI 回复)  

选项 1:在热启动期间跳过 HVC(侵入性最低)

选项 2:在热启动期间强制进行 EL2 转换

向 TI 发送的密钥申请

  1. 阐明了预期的热启动行为
    • 应采用 TI-SYSFW  自动重新初始化 HVC 服务  热复位后?
  2. 官方指南
    •  选项 1(跳过 HVC)  是否已批准用于生产?
  3. 勘误文档
    • 这是已知的器件问题吗?
    • 是否有正式的修复方法?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    客户希望重新加载.out 以使用 CCS 进行调试、每次不需要下电上电。

    客户反馈、根据本文中的步骤解决该问题:断开 JTAG 连接->(菜单)系统复位->连接 — 下载.out 以进行调试。  

    可以在没有 POR 的情况下在此序列中继续调试。

     AM625:Re 加载并运行 GPIO 中断示例.out 

    如有其他问题、请在下面进行更新。