2014-11-23 65 views
2

我今天從禁用的Arch Linux版本庫安裝了Openocd,現在正試圖將它與我的JTAG適配器ULINK-ME一起使用。我發現ULINK-ME使用CMSIS-DAP調試固件。 Openocd具有CMSIS-DAP驅動程序,因此應該能夠與我的適配器進行通信,但在我寫下以下命令後,出現錯誤。JTAG適配器ULINK-ME和openocd(在ArchLinux上)

我將ULINK-ME連接到集成微控制器LPC3141的電路板EA3141--與我爲其加載配置文件的LPC3131非常接近。

sudo openocd -f /usr/local/share/openocd/scripts/interface/cmsis-dap.cfg -f /usr/local/share/openocd/scripts/target/lpc3131.cfg -d3 

Open On-Chip Debugger 0.8.0-dev-00175-g8b7acca-dirty (2014-10-14-19:53) 
Licensed under GNU GPL v2 
For bug reports, read 
     http://openocd.sourceforge.net/doc/doxygen/bugs.html 
User : 13 1 command.c:549 command_print(): debug_level: 3 
Debug: 14 1 configuration.c:45 add_script_search_dir(): adding /root/.openocd 
Debug: 15 1 configuration.c:45 add_script_search_dir(): adding /usr/local/share/openocd/site 
Debug: 16 1 configuration.c:45 add_script_search_dir(): adding /usr/local/share/openocd/scripts 
Debug: 17 1 configuration.c:86 find_file(): found /usr/local/share/openocd/scripts/interface/cmsis-dap.cfg 
Debug: 18 1 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_interface cmsis-dap 
Debug: 19 2 command.c:145 script_debug(): command - interface ocd_interface cmsis-dap 
Debug: 21 2 command.c:369 register_command_handler(): registering 'ocd_cmsis-dap'... 
Debug: 22 2 command.c:369 register_command_handler(): registering 'ocd_cmsis_dap_vid_pid'... 
Debug: 23 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 24 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 25 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 26 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 27 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 28 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 29 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 30 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 31 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Info : 32 2 transport.c:118 allow_transports(): only one transport option; autoselect 'cmsis-dap' 
Debug: 33 2 adi_v5_cmsis_dap.c:246 cmsis_dap_select(): CMSIS-ADI: cmsis_dap_select 
Debug: 34 2 command.c:404 register_command(): command 'cmsis-dap' is already registered in '<global>' context 
Debug: 35 2 command.c:369 register_command_handler(): registering 'ocd_cmsis-dap'... 
Error: 36 7 cmsis_dap_usb.c:175 cmsis_dap_usb_open(): unable to open CMSIS-DAP device 
Error: 37 7 adi_v5_cmsis_dap.c:266 cmsis_dap_select(): unable to init CMSIS-DAP driver 
Error: 38 7 transport.c:83 transport_select(): Error selecting 'cmsis-dap' as transport 
Debug: 39 7 command.c:631 run_command(): Command failed with error code -4 
User : 40 7 command.c:669 command_run_line(): Runtime Error: /usr/local/share/openocd/scripts/interface/cmsis-dap.cfg:7: 
in procedure 'script' 
at file "embedded:startup.tcl", line 58 
in procedure 'interface' called at file "/usr/local/share/openocd/scripts/interface/cmsis-dap.cfg", line 7 

有誰知道我爲什麼會得到錯誤?


我同樣試圖以另一種方式啓動它,但它再次打印錯誤。這次有點不同。

sudo openocd -c "interface cmsis-dap" -f /usr/local/share/openocd/scripts/target/lpc3131.cfg -d3 

Open On-Chip Debugger 0.8.0-dev-00175-g8b7acca-dirty (2014-10-14-19:53) 
Licensed under GNU GPL v2 
For bug reports, read 
     http://openocd.sourceforge.net/doc/doxygen/bugs.html 
User : 13 2 command.c:549 command_print(): debug_level: 3 
Debug: 14 2 configuration.c:45 add_script_search_dir(): adding /root/.openocd 
Debug: 15 2 configuration.c:45 add_script_search_dir(): adding /usr/local/share/openocd/site 
Debug: 16 2 configuration.c:45 add_script_search_dir(): adding /usr/local/share/openocd/scripts 
Debug: 17 2 command.c:145 script_debug(): command - ocd_command ocd_command type ocd_interface cmsis-dap 
Debug: 18 2 command.c:145 script_debug(): command - interface ocd_interface cmsis-dap 
Debug: 20 2 command.c:369 register_command_handler(): registering 'ocd_cmsis-dap'... 
Debug: 21 2 command.c:369 register_command_handler(): registering 'ocd_cmsis_dap_vid_pid'... 
Debug: 22 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 23 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 24 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 25 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 26 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 27 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 28 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 29 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Debug: 30 2 command.c:369 register_command_handler(): registering 'ocd_jtag'... 
Info : 31 2 transport.c:118 allow_transports(): only one transport option; autoselect 'cmsis-dap' 
Debug: 32 2 adi_v5_cmsis_dap.c:246 cmsis_dap_select(): CMSIS-ADI: cmsis_dap_select 
Debug: 33 2 command.c:404 register_command(): command 'cmsis-dap' is already registered in '<global>' context 
Debug: 34 2 command.c:369 register_command_handler(): registering 'ocd_cmsis-dap'... 
Error: 35 7 cmsis_dap_usb.c:175 cmsis_dap_usb_open(): unable to open CMSIS-DAP device 
Error: 36 7 adi_v5_cmsis_dap.c:266 cmsis_dap_select(): unable to init CMSIS-DAP driver 
Error: 37 7 transport.c:83 transport_select(): Error selecting 'cmsis-dap' as transport 
Debug: 38 7 command.c:631 run_command(): Command failed with error code -4 
User : 39 7 command.c:669 command_run_line(): in procedure 'interface' 

UPDATE:

用於`須藤-v的lsusb命令的輸出ULINK-ME是:

Bus 005 Device 018: ID c251:2721 Keil Software, Inc. 
Device Descriptor: 
    bLength    18 
    bDescriptorType   1 
    bcdUSB    1.10 
    bDeviceClass   0 (Defined at Interface level) 
    bDeviceSubClass   0 
    bDeviceProtocol   0 
    bMaxPacketSize0  64 
    idVendor   0xc251 Keil Software, Inc. 
    idProduct   0x2721 
    bcdDevice   1.00 
    iManufacturer   4 Keil Software 
    iProduct    32 Keil ULINK-ME 
    iSerial     0 
    bNumConfigurations  1 
    Configuration Descriptor: 
    bLength     9 
    bDescriptorType   2 
    wTotalLength   41 
    bNumInterfaces   1 
    bConfigurationValue  1 
    iConfiguration   0 
    bmAttributes   0x80 
     (Bus Powered) 
    MaxPower    100mA 
    Interface Descriptor: 
     bLength     9 
     bDescriptorType   4 
     bInterfaceNumber  0 
     bAlternateSetting  0 
     bNumEndpoints   2 
     bInterfaceClass   3 Human Interface Device 
     bInterfaceSubClass  0 No Subclass 
     bInterfaceProtocol  0 None 
     iInterface    0 
     HID Device Descriptor: 
      bLength     9 
      bDescriptorType  33 
      bcdHID    1.00 
      bCountryCode   0 Not supported 
      bNumDescriptors   1 
      bDescriptorType  34 Report 
      wDescriptorLength  25 
     Report Descriptors: 
      ** UNAVAILABLE ** 
     Endpoint Descriptor: 
     bLength     7 
     bDescriptorType   5 
     bEndpointAddress  0x81 EP 1 IN 
     bmAttributes   3 
      Transfer Type   Interrupt 
      Synch Type    None 
      Usage Type    Data 
     wMaxPacketSize  0x0040 1x 64 bytes 
     bInterval    1 
     Endpoint Descriptor: 
     bLength     7 
     bDescriptorType   5 
     bEndpointAddress  0x01 EP 1 OUT 
     bmAttributes   3 
      Transfer Type   Interrupt 
      Synch Type    None 
      Usage Type    Data 
     wMaxPacketSize  0x0040 1x 64 bytes 
     bInterval    1 
Device Status:  0x0000 
    (Bus Powered) 

因爲沒有字符串 「CMSIS-DAP」其中我想這意味着我有一箇舊的ULINK-ME(2013年以前購買)適配器,它沒有CMSIS-DAP固件。我希望Keil提供一些將CMSIS-DAP閃爍到我的舊版ULINK-ME的方法。


SOLUTION:

我寫信給Keil和他們聲稱,ULINK-ME的固件可以更新,這是真的。他們向我指出這三個環節:

1. - check serial number

2. - upgrade if Keil uVision hasn't done this by itself in point 1.

3. - manipulate your ULINK-ME even further

我必須在Windows機器上安裝MDK-ARM V5,然後點擊一個很隱藏的圖標(魔術魔杖)在工具欄上。在調試中,我選擇了ULINK2/ME選項,它自己更新了我的固件。現在,我有我的ULINK-ME(老型號)一CMSIS-DAP,我可以用sudo lsusb -v證實了這一點:

Bus 005 Device 026: ID c251:2723 Keil Software, Inc. 
Device Descriptor: 
    bLength    18 
    bDescriptorType   1 
    bcdUSB    2.00 
    bDeviceClass   0 (Defined at Interface level) 
    bDeviceSubClass   0 
    bDeviceProtocol   0 
    bMaxPacketSize0  64 
    idVendor   0xc251 Keil Software, Inc. 
    idProduct   0x2723 
    bcdDevice   1.00 
    iManufacturer   1 Keil Software 
    iProduct    2 Keil ULINK-ME CMSIS-DAP 
    iSerial     3 M0489MAE 
    bNumConfigurations  1 
    Configuration Descriptor: 
    bLength     9 
    bDescriptorType   2 
    wTotalLength   41 
    bNumInterfaces   1 
    bConfigurationValue  1 
    iConfiguration   0 
    bmAttributes   0x80 
     (Bus Powered) 
    MaxPower    100mA 
    Interface Descriptor: 
     bLength     9 
     bDescriptorType   4 
     bInterfaceNumber  0 
     bAlternateSetting  0 
     bNumEndpoints   2 
     bInterfaceClass   3 Human Interface Device 
     bInterfaceSubClass  0 No Subclass 
     bInterfaceProtocol  0 None 
     iInterface    4 CMSIS-DAP 
     HID Device Descriptor: 
      bLength     9 
      bDescriptorType  33 
      bcdHID    1.00 
      bCountryCode   0 Not supported 
      bNumDescriptors   1 
      bDescriptorType  34 Report 
      wDescriptorLength  33 
     Report Descriptors: 
      ** UNAVAILABLE ** 
     Endpoint Descriptor: 
     bLength     7 
     bDescriptorType   5 
     bEndpointAddress  0x81 EP 1 IN 
     bmAttributes   3 
      Transfer Type   Interrupt 
      Synch Type    None 
      Usage Type    Data 
     wMaxPacketSize  0x0040 1x 64 bytes 
     bInterval    1 
     Endpoint Descriptor: 
     bLength     7 
     bDescriptorType   5 
     bEndpointAddress  0x01 EP 1 OUT 
     bmAttributes   3 
      Transfer Type   Interrupt 
      Synch Type    None 
      Usage Type    Data 
     wMaxPacketSize  0x0040 1x 64 bytes 
     bInterval    1 
Device Status:  0x0000 
    (Bus Powered) 

我試圖做到這一點使用酒,但它是不可能的。至少現在我不再需要Windows了。

回答

1

0.8.0-dev-00175-g8b7acca-dirty 這看起來不像官方的OpenOCD。你在哪裏得到它 ?

注意:您的版本應該說0.9.0,絕對不是'dirty'

您的OpenOCD版本可能與CMSIS-DAP有問題。 我強烈建議你從這裏克隆當前HEAD:

git clone git://git.code.sf.net/p/openocd/code openocd 

(記得做./bootstrap,你./configure ...前克隆之後),如果你在Windows下運行它Freddie Chopin's site

-Or下載。

sudo openocd 這裏也有問題。每次你想使用OpenOCD時,你都不應該'sudo'。

無論如何,你應該可以使用JTAG(LPC3141似乎太舊了,不支持SWD)。

+0

這是一個問題,因爲我必須使用Archlinux官方存儲庫安裝openocd。 Archlinux官方倉庫可能已經過時。 – 71GA 2014-11-23 10:51:20

+0

'官員'經常選擇一個版本,這有一個問題(出於某種原因)。如果您可以自己構建它,我很樂意爲您提供指導。但由於重建需要一些時間,所以您可能首先嚐試使用SWD;這應該是相當直接的。 – 2014-11-23 10:57:27

+0

這是沒有意義的,因爲我的JTAG適配器沒有CMSIS-DAP固件。 :)我給自己買了一個更好的JTAG適配器(J-link EDU)。 – 71GA 2014-11-23 11:02:34