IMXRT1060平台STRH指令引发未对齐内存访问故障求助
IMXRT1060中STRH指令触发未对齐访问故障的排查思路
已知场景:使用strh r7, [r0, #4]指令时触发未对齐访问故障,已确认Cortex-M7手册明确STRH等指令支持未对齐访问,且CCR寄存器的UNALIGN_TRP位已配置为0(禁用未对齐访问捕获)。
以下是核心排查方向:
目标内存区域的总线硬件限制
IMXRT1060的不同存储区域(外设寄存器、OCRAM、外部DRAM等)可能有独立的对齐要求,即使内核指令本身支持未对齐,总线矩阵或外设硬件可能强制要求对齐访问。需要确认r0 + 4指向的地址所属区域,查阅NXP官方手册中该区域的访问规则,比如部分外设寄存器仅允许按字/半字严格对齐访问。MPU(内存保护单元)配置冲突
若系统启用了MPU,对应内存区域的属性配置可能覆盖CCR的全局设置。检查MPU中对应地址范围的配置项,确认是否开启了强制对齐检查的属性——即使CCR的UNALIGN_TRP位关闭,MPU区域的严格对齐要求仍会触发故障。实际地址的对齐状态验证
对照附图中的寄存器值,确认r0的数值加上4后,最终地址是否为半字未对齐(即地址最低位为1)。虽然STRH支持未对齐访问,但如果目标内存区域本身不允许,仍会触发故障;若地址是对齐的,则需要排查其他硬件或配置问题。硬件勘误或内核实现差异
查阅NXP发布的IMXRT1060勘误文档,确认是否存在与未对齐访问相关的硬件bug。部分厂商的Cortex-M7内核实现可能在特定场景下有手册未提及的限制,这也是潜在的故障原因。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

