在openocd的target目錄下,目標芯片配置文件中有一行reset_config,用於配置復位操作
參考openocd的手冊,該配置可選參數為: none (默認), trst_only, srst_only and trst_and_srst.
http://openocd.org/doc/html/Reset-Configuration.html
首先了解一下srst和trst是什么,參見另一篇隨筆《jtag接口定義》
然后該配置與硬件設計有關
- 如果jtag與芯片的trst引腳未連接,則排除包含trst的選項
此情況包括:
- jtag或芯片沒有trst引腳。
- 芯片trst引腳存在,但是沒有連接到板子的jtag口上,或者io功能復用沒有配置為JTAG TRST
trst為jtag標准可選引腳,為了節省芯片io或者pcb版面面積或者接插件成本,可能不用此引腳。
- 如果jtag與板子的系統復位引腳未連接,則排除srst選項
- jtag沒有srst引腳。
- srst和trst不同,它通常連接的是核心板的復位電路,所以不要去芯片手冊的jtag部分去找這個引腳,
因為實際上它連的是芯片的reset引腳
其他srst可選參數包括:
- adapter_nsrst_assert_width: srst復位時,復位脈寬時間,單位毫秒
- adapter_nsrst_delay: srst復位后,延遲多少時間允許openocd再次操作jtag,單位毫秒
- srst_gates_jtag或srst_nogate: srst復位期間,是否關閉jtag clock輸出,默認為srst_gates_jtag關閉
- connect_deassert_srst(默認)或connect_assert_srst: 連接目標的時候是否執行srst復位。前置條件為配置了srst_nogate
- srst_open_drain(默認)或srst_push_pull: 根據srst線路驅動類型選擇開漏或者推挽模式
