您的位置:首页 > 运维架构

OpenOCD介绍以及上手

2015-12-03 15:06 239 查看
Versaloon支持AVR和AVR32的方式是模仿JTAGICE mkII,所以使用上相对简单很多,只是使用官方的开发环境即可。但Versaloon对ARM的支持是通过OpenOCD来实现,OpenOCD目前在国内还是非常少使用的(可能中国人不喜欢开源的东西吧),所以介绍一些OpenOCD的使用还是非常有必要的。

【介绍】

OpenOCD是一个开源的JTAG上位机程序,主页在http://openocd.berlios.de/web/,论坛在http://forum.sparkfun.com/viewforum.php?f=18。目前支持多种芯片,可以简单查看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。

【示例】

比如使用STM32的OpenOCD支持的时候,可以键入命令openocd -f openocd_stm32.cfg,界面如下:



然后可以使用telnet到4444端口(telnet localhost 4444),之后可以键入各种操作命令:



当然,也可以使用gdb或者IAR EWARM5.11以后支持的GDB Server的方式连接上OpenOCD来实现编程和调试的功能。



http://group.ednchina.com/GROUP_MES_14262_1065_12674.HTM
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: