设置断点
当Jlink连接到HCPU/LCPU的时候,通常系统已经初始化完成,如果需要调试初始化,例如冷启动或者standby睡眠唤醒, 需要将系统停留在尽早的地方。
建议用户可以修改系统初始化程序,
- HCPU
drivers/cmsis/sf32lb55x/Templates/arm/startup_bf0_hcpu.S - LCPU
drivers/cmsis/sf32lb55x/Templates/arm/startup_bf0_lcpu.S
在Reset_Handler中的第一条指令去掉注释 ';', 变为
B .
这样CPU启动,就会停留在第一条指令,当Jlink连接成功后,可以改变PC寄存器 (+2), 设置所需断点,从而调试初始化过程。
同样的方法也可以在其他的地方使用,使系统停留在某个事件发生的时刻,在所怀疑有问题的地方,如果是C文件,加入
_asm("B .");
可以使系统停留在这个指令,这个时候,再连接Jlink, 可以改变PC寄存器 (+2), 继续调试。
Note
不能使用while(1); 否则系统会优化,将while(1)之后的语句都无效了。