OpenOCD安装与使用(JTAG调试) (3)

解决方案 4: 可以看出这里是使用了Linux已经移除的头文件<sys/sysctl.h>报错的,因此进入报错文件,做以下修改。

imaginemiracle@:openocd$ vim src/helper/options.c +38 //File src/helper/options.c +38 #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "configuration.h" #include "log.h" #include "command.h" #include <getopt.h> #include <limits.h> #include <stdlib.h> #if IS_DARWIN #include <libproc.h> #endif //===================Alter by me=================== #ifdef HAVE_SYS_SYSCTL_H //#include <sys/sysctl.h> #endif #if IS_WIN32 && !IS_CYGWIN #include <windows.h> #endif //=================== End Alter =================== static int help_flag, version_flag; 4、OpenOCD的使用 4.1、OpenOCD的配置

安装成功后则会在配置的安装目录里生成如下文件,这里的openocd就是需要用到的可执行程序将它拷贝到需要执行的目录,或者直接在当前目录使用也可以。([注]: 若未配置安装路径,默认安装到“./src目录”中)

imaginemiracle@:openocd$ cd install_IM/ imaginemiracle@:install_IM$ ls bin share imaginemiracle@:install_IM$ ls bin/ openocd imaginemiracle@:openocd$ cp install_IM/bin/openocd ./

使用openocd+JTAG需要用到两个配置文件,分别是JTAG的配置文件和目标平台的配置文件。一般JTAG厂商都会提供购买到的JTAG的openocd配置文件,这里就可以直接使用。

<1> JTAG设备配置文件

前文提到笔者所使用的JTAG型号为Olimex-ARM-USB-TINY-H,其配置文件如下:

# File olimex-arm-usb-tiny-h.cfg # # Olimex ARM-USB-TINY-H # # # interface ftdi #interface jlink ftdi_device_desc "Olimex OpenOCD JTAG ARM-USB-TINY-H" ftdi_vid_pid 0x15ba 0x002a ftdi_layout_init 0x0808 0x0a1b ftdi_layout_signal nSRST -oe 0x0200 ftdi_layout_signal nTRST -data 0x0100 -oe 0x0100 ftdi_layout_signal LED -data 0x0800

当电脑链接上JTAG后,还需要安装JTAG的驱动,若“lsusb”可以查看到JTAG设备,则说明驱动安装成功。

imaginemiracle@:openocd$ lsusb Bus 002 Device 002: ID 0424:5744 Microchip Technology, Inc. (formerly SMSC) Hub Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) Bus 001 Device 003: ID 0424:2744 Microchip Technology, Inc. (formerly SMSC) Hub Bus 001 Device 007: ID 413c:2113 Dell Computer Corp. Dell KB216 Wired Keyboard Bus 001 Device 006: ID 413c:301a Dell Computer Corp. Dell MS116 USB Optical Mouse Bus 001 Device 008: ID 15ba:002a Olimex Ltd. ARM-USB-TINY-H JTAG interface Bus 001 Device 002: ID 10c4:ea60 Silicon Labs CP210x UART Bridge Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

这里的ID后面的值分别为USB设备的VID和PID,这里的值应该与JTAG配置文件中的vid_pid相同才可。

<2> 目标平台配置文件

OpenOCD的配置文件使用的是tcl语言,这里的目标平台配置文件是笔者仿照其它配置文件修改的。

# File riscv64_IM.cfg proc init_targets {} { adapter_khz 1000 reset_config trst_and_srst set _CHIPNAME riscv jtag newtap $_CHIPNAME cpu -irlen 5 set _TARGETNAME $_CHIPNAME.cpu target create $_TARGETNAME riscv -endian little -chain-position $_TARGETNAME -coreid 0 # $_TARGETNAME configure -rtos riscv # $_TARGETNAME configure -work-area-phys 0x3ff0000 -work-area-size 0x10000 -work-area-backup 1 # $_TARGETNAME riscv expose_csrs 3008-3015,4033-4034 } proc sw_reset_halt {} { reset halt } 4.2、OpenOCD链接JTAG

有了JTAG和目标平台的两个配置文件后,就可以启动OpenOCD连接本地JTAG设备了,启动命令如下:

imaginemiracle@:riscv-openocd$ sudo ./src/openocd -s ./tcl -f ./tcl/interface/ftdi/olimex-arm-usb-tiny-h.cfg -f ./tcl/target/riscv64_IM.cfg [sudo] password for imaginemiracle: Open On-Chip Debugger 0.10.0+dev-01145-gb7bd3f8d4 (2021-01-12-17:54) Licensed under GNU GPL v2 For bug reports, read sw_reset_halt Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'. 0 Info : clock speed 1000 kHz Info : TAP riscv.cpu has invalid IDCODE (0xfffffffe) Info : datacount=2 progbufsize=16 Info : Disabling abstract command reads from CSRs. Info : Examined RISC-V core; found 4 harts Info : hart 0: XLEN=64, misa=0x800000000014112d Info : hart 1: currently disabled Info : hart 2: currently disabled Info : hart 3: currently disabled Info : Listening on port 3333 for gdb connections

连接到本地:

imaginemiracle@:riscv-openocd$ telnet localhost 4444 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Open On-Chip Debugger >

如上进入openocd的命令行则说明OpenOCD+JTAG的整个软件环境搭建完成。

4.3、OpenOCD的一些简单命令

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

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