J-Link RTT for the Masses using Semihosting on ARM
8 months ago
- #semihosting
- #debugging
- #embedded
- J-Link RTT通过内存中的环形缓冲区实现基于SWD线路的非阻塞双向通信
- 半主机模式使调试探针充当内核处理系统调用,无需额外硬件即可实现日志记录功能
- 半主机功能需在调试探针中启用(如pyocd使用-S标志,openocd需特定命令)
- 半主机通过断点指令(bkpt 0xAB)通知调试器,若未连接调试器可能触发异常
- 需修改硬错误处理程序以忽略无调试器连接时的异常
- 半主机模式会中断CPU执行以通知调试器,存在性能影响
- 并非所有GUI调试器都能妥善处理半主机,某些需通过编译标志禁用该功能
- 使用weak属性或链接器标志可覆盖标准写入实现以支持半主机