[其他技术&应用] 在RA开发中,软件断点导致的CRC检查失败

[复制链接]
3|0
流鱼 发表于 2026-3-18 10:15 | 显示全部楼层 |阅读模式
一些用户在代码中使用软件断点时,调试时会遇到CRC不匹配的问题

对于这一问题,原因是在使用如那件断电时候,调试器会通过插入BKPT指令(Cortex-M 上的操作码 0xBE00)临时修改断点位置的内存。
尽管这一变化是暂时的,仅用于调试,但是任何包含该修改代码的CRC或校验都可能返回一项不到的结果;如果放入flash中,那么flash的内容就会被物理改变直到被擦除和重新编程为止。


为了避免这个问题:
1、优先选择硬件断点而不是软件短板断电,因为他们非侵入性而且不改变内存内容
2、注意软件断点,避免在该地区进行CRC检查
3、在CRC检查前手动清除断电(重新下载原始固件)


附加说明:
1、调试器在实现软件断点时的行为依赖于工具链。有些调试器可能表现不同
2、在没有调试器的情况下执行断点指令会导致硬故障异常,导致设备崩溃。如果断点留在闪存固件内部,可能会导致不稳定和故障(如果调试会话意外终止(例如因断电),断点可能会留在闪存内部


更多详细内容可以参考:
https://developer.arm.com/documentation/100235/0100/The-Cortex-M33-Instruction-Set/Miscellaneous-instructions/BKPT?lang=en(ARM Cortex-M33上的BKPT指令)
https://developer.arm.com/documentation/ddi0553/latest/(Armv8-M架构参考手册第13.4.4章节




您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

60

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部
0