openocd Error: unable to open ftdi device: unable to fetch product description in procedure 'init'

mac2024-03-27  81

使用 JZ2440 遇到的openjtag问题

按照韦东山老师的教程安装,当执行一下命令时出现错误:

openocd -f /usr/local/share/openocd/interface/openjtag.cfg -f /usr/local/share/openocd/target/samsung_s3c2440.cfg

Open On-Chip Debugger 0.5.0-dev (2011-01-10-14:22) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html Info : only one transport option; autoselect ‘jtag’ fast memory access is enabled trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain Error: unable to open ftdi device: unable to fetch product description Command handler execution failed in procedure ‘init’

1、确定 openocd 配置了相关接口,如果不确定,可以使用本文资源,我之前用的 0.4.0(0.4.0有些问题,比如退出openocd 后也会占用资源,只能重新插拔jtag 调试器,后来换了0.10.0),资料中的0.6.0不能用,千万注意 2、确定设置了权限 sudo chmod +s /usr/local/bin/openocd 如果没有这个权限,使用 sudo 3、教程中的 minicom 之类的串口软件可以不安装,只用于串口使用,不影响调试 4、重新插拔调试器,确保连接正常,确保开发板上电,确保连线正常

当然还有其它可能影响调试功能的正常使用,需要根据环境而定

记录安装 openocd 0.10.0 过程: 安装环境: Linux version 4.4.0-21-generic (buildd@lgw01-21) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016

安装相应的库(网上资料这样说的): sudo apt-get install libftdi-dev libftdi1 libtool git-core asciidoc 事实上只要安装一个就行,即: sudo apt-get install libftdi1 其他都可以不安装(如果都安装的话太大了,浪费时间,浪费内存(几百M),测试后发现只要这个也能用)

安装库 sudo apt-get install libusb+±dev 安装 cmake 用于编译源代码

下载 openocd 代码(目前为 0.10.0) http://sourceforge.net/projects/openocd/ 解压 进入目录, 配置,用于打开 openjtag 支持,这个可以通过: ./configure --enable-maintainer-mode --enable-ft2232_libftdi --enable-maintainer-mode --enable-ftdi 如果需要看可配置选项,可以直接 ./configure --help 查看 如果结果如下:

OpenOCD configuration summary -------------------------------------------------- MPSSE mode of FTDI based devices yes (auto) ST-Link JTAG Programmer yes (auto) TI ICDI JTAG Programmer yes (auto) Keil ULINK JTAG Programmer yes (auto) Altera USB-Blaster II Compatible yes (auto) Versaloon-Link JTAG Programmer yes (auto) OSBDM (JTAG only) Programmer yes (auto) eStick/opendous JTAG Programmer yes (auto) Andes JTAG Programmer yes (auto) USBProg JTAG Programmer yes (auto) Raisonance RLink JTAG Programmer yes (auto) Olimex ARM-JTAG-EW Programmer yes (auto) CMSIS-DAP Compliant Debugger no Altera USB-Blaster Compatible yes (auto) ASIX Presto Adapter yes (auto) OpenJTAG Adapter yes (auto) SEGGER J-Link Programmer yes (auto)

其中 OpenJTAG Adapter yes (auto)表示自动支持OpenJTAG,如果执行命令 ./configure 后,该调试器自动支持,那么就不需要 --enable-ft2232_libftdi --enable-maintainer-mode --enable-ftdi 选项(测试发现 0.10.0版本不需要这个参数也是可行的,如果不能用再加上该参数再编译一次吧) 开始编译,执行 make 指令即可。 安装,执行 sudo make install 即可自动完成安装。

安装完成后,你可以在目录下看到一个文件 /usr/local/share/openocd/scripts/interface/ftdi/100ask-openjtag.cfg

这个文件应该是百问科技添加的一个适合自己调试器的配置文件(也就是说,0.10.0版本支持该openjtag调试器)

但是实际测试发现,这个文件是有问题的: Open On-Chip Debugger 0.10.0 Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : auto-selecting first available session transport “jtag”. To override use 'transport select '. trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain connect_deassert_srst Error: An adapter speed is not selected in the init script. Insert a call to adapter_khz or jtag_rclk to proceed.

按照上面的提示,需要改成如下内容(参考别人的配置文件):

interface ftdi ftdi_device_desc "USB<=>JTAG&RS232" ftdi_vid_pid 0x1457 0x5118 tag_rclk 6000 adapter_khz 6000 ftdi_layout_init 0x0f08 0x0f1b ftdi_layout_signal nSRST -data 0x0200 -noe 0x0800 ftdi_layout_signal nTRST -data 0x0100 -noe 0x0400

即增加 tag_rclk 6000 adapter_khz 6000 即可。

注意该过程是在安装过程完成后修改 /usr/local/share/openocd/scripts/interface/ftdi/100ask-openjtag.cfg 文件,该目录下的文件修改需要 sudo,如执行如下命令进行修改

sudo gedit /usr/local/share/openocd/scripts/interface/ftdi/100ask-openjtag.cfg &

注意韦东山资料中的规则文件 50-ftdi.rules 可以不需要,也能用(如果不能用,可以试试把这个文件加上,鱼鹰测试发现可以不需要的)

需要编译好的软件资料可直接在本主页中下载,或者关注公众号下载。 点击此处下载

只要执行 sudo make install 并使用 apt-get 命令下载 libftdi1 即可使用(配置文件已被修改过,并且编译过的,不需要安装其他相关软件了)。

当执行以下命令得到该结果时即说明成功连接。

sudo openocd -f /usr/local/share/openocd/scripts/interface/ftdi/100ask-openjtag.cfg -f /usr/local/share/openocd/scripts/target/samsung_s3c2440.cfg

Open On-Chip Debugger 0.10.0 Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : auto-selecting first available session transport “jtag”. To override use 'transport select '. RCLK - adaptive adapter speed: 6000 kHz trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain connect_deassert_srst Info : clock speed 6000 kHz Info : JTAG tap: s3c2440.cpu tap/device found: 0x0032409d (mfg: 0x04e (Samsung), part: 0x0324, ver: 0x0) Info : Embedded ICE version 2 Info : s3c2440.cpu: hardware has 2 breakpoint/watchpoint units

参考资料 http://www.360doc.com/content/13/1121/17/14713585_331074138.shtml https://sourceforge.net/p/openocd/mailman/message/32451613/ https://blog.51cto.com/famian/1951295?source=dra https://blog.csdn.net/techping/article/details/53159844 https://blog.csdn.net/weixin_34321753/article/details/93872849 https://www.eefocus.com/fhq1989312/blog/12-04/247353_1c4c2.html https://blog.csdn.net/hcx25909/article/details/7272831?utm_source=blogxgwz5

欢迎关注微信公众号:鱼鹰谈单片机

最新回复(0)