Ubuntu下配置OpenOCD+FT2232(2)

openocd-code: AUTHORS configure.ac jimtcl NEWS-0.6.0 src AUTHORS.ChangeLog contrib Makefile.am NEWS-0.7.0 tcl bootstrap COPYING NEWS NEWS-0.8.0 testing BUGS doc NEWS-0.2.0 NEWTAPS TODO ChangeLog Doxyfile.in NEWS-0.3.0 README tools common.mk guess-rev.sh NEWS-0.4.0 README.OSX uncrustify.cfg config_subdir.m4 HACKING NEWS-0.5.0 README.Windows

下载子模块,编译安装:

./bootstrap ./configure --enable-ftdi --prefix=/opt/openocd make sudo mkdir /opt/openocd sudo chmod a+w opt/openocd make install

【5】配置openocd
【5.1】接口部分,我这里的配置文件路径为 ~/.openocd/openjtag.cfg,内容如下:

#openocd 0.8中默认使用新的ftdi接口,如果希望使用旧的ft2232接口,需要在编译openocd时指定。 interface ftdi #通过描述来指定设备,应当和dmesg中的Product一致 #ftdi_device_desc "USB<=>JTAG&RS232" #通过PID VID指定调试器,比描述更准确些 ftdi_vid_pid 0x1457 0x5118 #如果有多个同样的调试器,还可以指定要使用的调试器序列号 #ftdi_serial #引脚定义,相当于旧版中的 ft2232_layout jtagkey ftdi_layout_init 0x0c08 0x0f1b ftdi_layout_signal nTRST -data 0x0100 -noe 0x0400 ftdi_layout_signal nSRST -data 0x0200 -noe 0x0800

此时可以尝试运行一下openocd,以检查连接和配置情况:

1.关闭设备电源,
2.链接设备、调试器、PC
3.��开设备电源(因为没有指定处理器,只能先打开设备以进行自动探测)
4.运行openocd:

openocd -f ~/.openocd/openjtag.cfg -c jtag_rclk 3000

该命令中,  -f 指定配置文件,可以如 -f a.cfg -f b.cfg指定多个配置文件;
       -c 执行一条命令,这里是处理器不支持RCLK时,调试器使用的时钟。
openocd的打印如下:

Open On-Chip Debugger 0.8.0 (2014-05-10-23:20) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html Info : only one transport option; autoselect 'jtag' RCLK - adaptive RCLK - adaptive Info : RCLK (adaptive clock speed) not supported - fallback to 3000 kHz Warn : There are no enabled taps. AUTO PROBING MIGHT NOT WORK!! Warn : AUTO auto0.tap - use "jtag newtap auto0 tap -expected-id 0x0792603f ..." Warn : AUTO auto0.tap - use "... -irlen 4" Warn : gdb services need one or more targets defined

这里自动探测出一个TAP(Test Access Ports,设备上的JTAG核心,一个芯片中可能有多个TAP)出来,expected-id与预计(如果openocd支持该处理器,可以翻阅配置文件,否则请翻看datasheet等)的相同,这证明JTAG接口是连接和配置正确的。
如果是类似这样的打印,请检查JTAG线序、openocd配置的接口定义、目标板电源等:

Error: JTAG scan chain interrogation failed: all zeroes Error: Check JTAG interface, timings, target power, etc. Error: Trying to use configured scan chain anyway... Error: IR capture error at bit 0, saw 0x00 not 0x...3 Warn : Bypassing JTAG setup events due to errors Warn : gdb services need one or more targets defined

  我之前遇到的情况是线序和ftdi_layout都不对……

【5.2】处理器部分。
openocd 0.8已经支持sam9g45,配置文件为 target/at91sam9g45.cfg,该文件引用了同目录下的at91sam9.cfg。整理后内容如下:

#尝试使用设备提供的调试时钟(RTCK引脚),失败则使用指定的频率(单位KHZ) adapter_khz 3
#复位配置 reset_config trst_and_srst separate trst_push_pull srst_open_drain adapter_nsrst_delay
300 jtag_ntrst_delay 200 #给即将添加的TAP配置起个名字 set _CHIPNAME at91sam9g45 #芯片TAP的识别ID,整个AT91SAM9系列都是用这个TAP ID set _CPUTAPID 0x0792603f #小端存储 set _ENDIAN little #以$_CHIPNAME为名,创建一个新的tap jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID #目标处理器定义 set _TARGETNAME $_CHIPNAME.cpu target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs # 处理器内建SRAM $_TARGETNAME configure -work-area-phys 0x00300000 -work-area-size 0x200000 -work-area-backup 1

尝试运行openocd:
1.关闭设备电源,
2.链接设备、调试器、PC
3.打开设备电源
4.运行openocd:

openocd -f ~/.openocd/openjtag.cfg -f target/at91sam9g45.cfg

target/at91sam9g45.cfg实际上在/usr/share/openocd/scripts/中,这里使用默认的搜索路径。

openocd的打印如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/16118.html