32G8K64型号SWD仿真异常,串口仿真正常
断点处观察值不对。
SWD:
串口:
异常现象2:
SWD仿真下载完,代码立即执行,没有等keil指令。
串口下载完,keil点仿真后才开始运行:
816 ercircle 发表于 2025-6-23 18:20
异常现象2:
SWD仿真下载完,代码立即执行,没有等keil指令。
串口下载完,keil点仿真后才开始运行:
两种仿真接口的处理方式确实不一样:
传统的串口和USB仿真都是monitor仿真,上电后CPU权限属于monitor程序
SWD是纯硬件仿真,CPU权限始终属于用户程序
用户代码下载完成后,如果是monitor仿真,在监控程序没有释放CPU权限前,用户程序无法自动运行起来
但SWD仿真模式在用户代码下载完成后,由于CPU权限始终属于用户程序,所以用户程序会立即开始运行,直到SWD接口发halt指令,SWD才会接管CPU
最明显的区别:下载代码完成后给芯片重新上电,对于串口仿真上电后一定是运行monitor程序而不会运行用户程序,但SWD仿真在重新上电后则会立即运行用户程序 SWD读写xram似乎存在地址对齐的问题
可以将 _at_ 0xf3改为0xf0试试看
SWD仿真时纯硬件仿真,对xram的读写也是直接在内部xram的数据总线和控制总线上发送信号,所以有地址对齐的限制
而串口和USB仿真属于monitor仿真,相当于是执行MOVX指令来访问xram,
此时的地址对齐的问题,在芯片设计时已经进行了处理,所以没问题 zhp 发表于 2025-7-1 18:17
SWD读写xram似乎存在地址对齐的问题
可以将 _at_ 0xf3改为0xf0试试看
问题1不行,但是在32G8K128上SWD用0x00f3地址也是正常的。
问题二,用32G8K128跑了下,确实SWD仿真下载完就会执行。
页:
[1]