1. Cortex-A55处理器错误概述
在嵌入式系统开发中,处理器错误(Erratum)是每个开发者都需要面对的挑战。作为ARMv8-A架构中的高效能中端处理器,Cortex-A55广泛应用于移动设备、物联网终端和嵌入式系统中。但在实际应用中,其硬件实现存在一些特定条件下的已知问题,可能影响系统功能或性能表现。
这些错误主要涉及三大关键模块:
- ETM(Embedded Trace Macrocell,嵌入式跟踪宏单元):负责处理器指令和数据的实时跟踪
- PMU(Performance Monitoring Unit,性能监控单元):用于系统性能分析和优化
- MMU(Memory Management Unit,内存管理单元):处理虚拟内存地址转换
重要提示:这些错误通常只在特定条件下触发,且大部分已在后续修订版本(r0p1及更高)中修复。了解这些边界条件对系统稳定性至关重要。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. ETM跟踪模块的典型错误分析
2.1 ETM事件包丢失问题(Erratum 754938)
当ETM即将进入空闲状态时,存在一个单周期的时间窗口可能导致事件包丢失。具体表现为:
- 事件信号能正常发送给CTI(Cross Trigger Interface)
- 但ATB(Advanced Trace Bus)触发信号和事件包可能无法生成
触发条件分析:
- ETM因以下任一原因即将进入空闲:
- TRCPRGCTLR.EN被设为0(ETM被禁用)
- TRCOSLAR.OSLK被设为1(ETM被锁定)
- 处理器执行WFI/WFE指令进入睡眠模式
- DBGEN/NIDEN信号改变导致跟踪被禁止
- ETM资源已配置为生成事件
- 在ETM能生成事件的最后一个周期,因PMU事件或CTI触发产生了事件
实际影响评估:
- 调试时可能难以将CTI行为与跟踪流关联
- 仅当尝试精确匹配CTI信号和跟踪数据时才会显现
解决方案:
- 升级至r0p1或更高版本
- 如必须使用r0p0,需在关键调试阶段避免ETM频繁启停
2.2 ETM过早断言AFREADY(Erratum 754939)
当ATB接口的AFVALID信号被断言时,ETM应输出所有缓冲的跟踪数据,并在最后一个数据输
