OpenOCD - 开源的JTAG上位机程序


未知
未知

软件简介

OpenOCD是一个开源的JTAG上位机程序,目前支持多种芯片,可以简单查看src/target/target.c中的target_types的定义就可以了解支持哪些处理器了:
target_type_t *target_types[] =
{
&arm7tdmi_target,
&arm9tdmi_target,
&arm920t_target,
&arm720t_target,
&arm966e_target,
&arm926ejs_target,
&feroceon_target,
&xscale_target,
&cortexm3_target,
&arm11_target,
&mips_m4k_target,
NULL,
};
并且支持的芯片还在不断增加中。
支持的编程工具,主要是并口的JTAG工具和基于FT2232的JTAG工具。当然,由于源代码都是公开的,并且可以自己编译,所以增加自己定义的工具的驱动也是相当容易的。

【编译安装】
自己编译安装OpenOCD可以参考DIY
Versaloon
中的DIY
OpenOCD部分。
一定要注意doc/openocd.pdf文档(需要编译生成),里面有各个配置和命令的详细说明。

【配置】
OpenOCD需要针对不同的JTAG工具和不同的目标芯片,配置一个配置文档。
一般而言,配置文档分为4个部分
1.分别是定义各个接口的Port(比如telnet_port,gdb_port,tcl_port)
2.JTAG工具的定义
3.目标的定义
4.脚本的定义
接口Port的定义一般如下(非特殊情况,无需修改,定义了一些端口号)
telnet_port 4444
gdb_port 3333
tcl_port 6666
JTAG工具的定义,一般在工具的主页里会提供,而且针对不同的目前芯片,这个定义不需要修改。
目前芯片的定义,是用来告诉OpenOCD,你的JTAG链是如何连接的(以什么顺序,链接了那些目标芯片)。OpenOCD支持的芯片的定义,基本在src/target/target目录中都可以找到对应的配置文件。
脚本的定义,对于最新版本的OpenOCD尤为重要(最新的OpenOCD去掉了一些配置,而使用脚本的方式来实现)。脚本主要实现了如何操作目标芯片,不同的目标芯片的操作方式会有区别。
OpenOCD的配置基本可以使用现成的一些配置,一般在使用的JTAG工具的主页上可以找到。

【使用】
OpenOCD的启动可以直接调用openocd.exe程序,改程序会自动寻找openocd.cfg默认配置。当然,可以使用-
f参数来指定使用的配置文件,比如:
openocd -f openocd_stm32.cfg
如果配合Makefile来实现编译完成后自动下载固件的功能的话,可以使用OpenOCD配置文件的脚本配置部分,以脚本的方式来实现自动的固件下载。
如果需要使用GDB或者手动操作目标设备的话,在配置文件的脚本部分中,只需要初始化目标芯片的脚本即可。然后可以通过telnet或者gdb或者tcl来连接上OpenOCD。