自己做的AT32F421最小系统,在OpenOCD下用FT2232H系列的Adapter烧录时总是报错:
- 使用 program 指令时报错
embedded:startup.tcl:1194: Error: ** Unable to reset target ** in procedure 'program' in procedure 'program_error' called at file "embedded:startup.tcl", line 1231 at file "embedded:startup.tcl", line 1194 SWD DPIDR 0x2ba01477
- 使用 flash write_image 时报错
>This is target at32f421xx algorithm >flash size: 0x10000 byte >flash sector num : 0x40 >flash sector size : 0x400 >flash bank size : 0x10000 >at32f421xx Write offset: 0x0 Write count: 0xaa4 SWD DPIDR 0x2ba01477 Error setting register xPSR SWD DPIDR 0x2ba01477 Error setting register pc SWD DPIDR 0x2ba01477 Error setting register r4 SWD DPIDR 0x2ba01477 Error setting register r3 SWD DPIDR 0x2ba01477 Error setting register r2 SWD DPIDR 0x2ba01477 Error setting register r1 SWD DPIDR 0x2ba01477 Error setting register r0 SWD DPIDR 0x2ba01477 timeout waiting for algorithm, a target reset is recommended flash write failed at address 0x8000000 error writing to flash at address 0x08000000 at offset 0x00000000 embedded:startup.tcl:1194: Error: in procedure 'program' in procedure 'program_error' called at file "embedded:startup.tcl", line 1231 at file "embedded:startup.tcl", line 1194 Polling target at32f421xx.cpu failed, trying to reexamine
遂开始逐个排查问题。
检查过程
-
检查原理图,PCB,硬件连接;
-
检查寄存器。
。。。
结论
可能是AT官方在github上开源的OpenOCD的branch代码本身问题。
AT官方的另一个OpenOCD的xpack发行版(截止当前的最新版是v2.0.2)则没有问题。但是这个版本阉割了一些功能(不能使用FT2232系列的Adapter,而这正是本人需要的。)
下面是运行openocd.exe的结果:
- OpenOCD master 发行版:
Open On-Chip Debugger 0.11.0 (2021-06-25) [https://github.com/sysprogs/openocd] Licensed under GNU GPL v2 libusb1 09e75e98b4d9ea7909e8837b7a3f00dda4589dc3 For bug reports, read http://openocd.org/doc/doxygen/bugs.html embedded:startup.tcl:26: Error: Can't find openocd.cfg in procedure 'script' at file "embedded:startup.tcl", line 26 Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Error: Debug Adapter has to be specified, see "adapter driver" command embedded:startup.tcl:26: Error: in procedure 'script' at file "embedded:startup.tcl", line 26
- 自己使用Mingw64编译的适配FT器件的AT官方openocd branch:
Open On-Chip Debugger 0.11.0+dev-00781-gbbdd75e08 (2022-08-21-22:47) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html embedded:startup.tcl:28: Error: Can't find openocd.cfg in procedure 'script' at file "embedded:startup.tcl", line 28 Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Error: Debug Adapter has to be specified, see "adapter driver" command embedded:startup.tcl:28: Error: in procedure 'script' at file "embedded:startup.tcl", line 28
- AT官方使用xpack编译的仅适配JLink和CMSIS Dap的openocd:
Open On-Chip Debugger 0.11.0+dev-snapshot (2022-05-19-16:31) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html embedded:startup.tcl:26: Error: Can't find openocd.cfg in procedure 'script' at file "embedded:startup.tcl", line 26 Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Error: Debug Adapter has to be specified, see "adapter driver" command embedded:startup.tcl:26: Error: in procedure 'script' at file "embedded:startup.tcl", line 26
解决办法
最终无奈,在不习惯用keil和iar的情况下只好弄了一只ATLink,用官方编译好的OpenOCD去调试了。具体见另一篇文章。