OpenOCD srst trst和芯片srst,hrst之间的关系
场景
Eclipse->GDB->OpenOCD 二次开发
写上位机的小伙伴被要求提供芯片视角的软件复位和硬件复位
而OPENOCD软件上提供了各种rst,包括但不限于
- nsrst
- ntrst
- trst
- srst
以及配合各种halt,run,resume的组合命令
问题
到底哪一条对应软件复位?哪一条对应硬件复位呢?
答案
目前看来,默认的reset 使用硬件复位
只有software_reset_halt 使用了软件复位
分析
要抓到这个根据,有两个方法
- 比对芯片数据手册复位域,在软复位和硬件复位之间下指令修改寄存器值。下发指令测试确认寄存器是否被复位,则可以很快跟踪到哪条指令对应哪个复位
- 拆openocd源码,跟踪reset的具体实现,最终会映射到jtag基本指令上。