You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARM Errata 838869是否适用于Cortex-M7?矛盾资料求证

Cortex-M7是否受ARM勘误838869影响?NXP SDK中DSB屏障的作用是什么?

背景矛盾信息

用户整理了三处相互矛盾的信息:

  • ARM官方Cortex-M7勘误文档SDEN-1068427(v11.0)未列出勘误ID 838869。
  • ST的STM32H7勘误表(ES0445 Rev 5)将838869归类为仅影响Cortex-M4。
  • NXP MCUXpresso SDK中存在如下代码定义:
/*! @name ISR exit barrier
* @{
*
* ARM errata 838869, affects Cortex-M4, Cortex-M4F Store immediate overlapping
* exception return operation might vector to incorrect interrupt.
* For Cortex-M7, if core speed much faster than peripheral register write speed,
* the peripheral interrupt flags may be still set after exiting ISR, this results to
* the same error similar with errata 83869.
*/
#if (defined __CORTEX_M) && ((__CORTEX_M == 4U) || (__CORTEX_M == 7U))
#define SDK_ISR_EXIT_BARRIER __DSB()
#else
#define SDK_ISR_EXIT_BARRIER
#endif

解答

1. 官方勘误对Cortex-M7与838869的界定

目前没有ARM或主流芯片厂商的官方勘误确认Cortex-M7受838869影响:

  • ARM官方的Cortex-M7勘误文档完全未提及该ID,说明838869是Cortex-M4专属的硬件设计缺陷,与M7核心无关。
  • ST作为主流MCU厂商,其STM32H7(搭载Cortex-M7)的勘误表明确标注838869仅影响Cortex-M4,进一步验证了这一点。

2. NXP SDK中DSB屏障的作用

NXP在SDK中为Cortex-M7加入__DSB()是应对外设写入延迟的预防性措施,而非修复838869勘误:

  • 从代码注释可知,Cortex-M7的问题根源是核心运行速度远快于外设寄存器的写入速度:当ISR中清除外设中断标志后,核心可能在寄存器写入操作完成前就执行中断返回,此时外设中断标志仍处于置位状态,会引发类似838869的错误(错误触发下一次中断)。
  • __DSB()(数据同步屏障)指令的作用是确保所有未完成的内存访问操作(包括外设寄存器写入)完成后,再执行后续的中断返回操作,从而避免这种时序问题导致的异常。

内容的提问来源于stack exchange,提问作者mastupristi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 04:12:33