Bug#837989: openocd: can no longer use SheevaPlug JTAGKey FT2232D (regression)
On Sat, Nov 5, 2016 at 11:49 AM, Andreas Fritiofson < andreas.fritiof...@gmail.com> wrote: > > Well, I assume other people have successfully used that config file before > Specifically https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=751372#40
Bug#837989: openocd: can no longer use SheevaPlug JTAGKey FT2232D (regression)
On Thu, Oct 27, 2016 at 2:35 PM, Arnaud Patard wrote: > Hi, > I've modified the > /usr/share/openocd/scripts/interface/ftdi/sheevaplug.cfg file to use > ftdi_channel 0 and not 1. With that change, I was able to use openocd, > Well, I assume other people have successfully used that config file before, which suggests that there are incompatible versions of the sheevaplug out there with the same VID/PID. We can't just change ftdi_channel then without breaking it for someone else. Someone familiar with the hardware can do the research and maybe ask the manufacturer whether there are multiple versions.
Bug#837989: openocd: can no longer use SheevaPlug JTAGKey FT2232D (regression)
Hi, Wanted to try a new uboot on my guruplug server with openocd 0.9.0-1+b1 and my SheevaPlug JTAGKey FT2232D device. I got very similar bug. I've modified the /usr/share/openocd/scripts/interface/ftdi/sheevaplug.cfg file to use ftdi_channel 0 and not 1. With that change, I was able to use openocd, keep the serial console open and flash a new uboot. I guess it would be interesting that others people having the problem confirm it's working for them too. Arnaud
Bug#837989: openocd: can no longer use SheevaPlug JTAGKey FT2232D (regression)
On Sat, Sep 17, 2016 at 11:18:20PM +0300, Paul Fertser wrote: > Hm, can't see anything good about it... Ah, sorry, as I mentioned, behaviour is somewhat erratic even with openocd-0.5.0. This log is definitely good (I was able to upload U-Boot). Maybe the comparison between the two can be instructive in some way? Also, even in the "bad" case (when "JTAG scan chain interrogation failed: all zeroes"), openocd-0.5.0 will still let me issue a reset command which works (whereas openocd-0.9.0 won't even let me telnet). Sorry about all the confusion! -- David A. Madore ( http://www.madore.org/~david/ ) Open On-Chip Debugger 0.5.0 (2016-09-16-09:33) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html User : 11 0 command.c:557 command_print(): debug_level: 3 Debug: 12 0 configuration.c:45 add_script_search_dir(): adding /home/david/.openocd Debug: 13 0 configuration.c:45 add_script_search_dir(): adding /usr/share/openocd/site Debug: 14 0 configuration.c:45 add_script_search_dir(): adding /usr/share/openocd/scripts Debug: 15 0 configuration.c:87 find_file(): found /tmp/openocd-0.5.0/tcl/board/sheevaplug.cfg Debug: 16 0 configuration.c:87 find_file(): found /tmp/openocd-0.5.0/tcl/interface/sheevaplug.cfg Debug: 17 0 command.c:151 script_debug(): command - ocd_command ocd_command type ocd_interface ft2232 Debug: 18 1 command.c:151 script_debug(): command - interface ocd_interface ft2232 Debug: 20 1 command.c:364 register_command_handler(): registering 'ocd_ft2232_device_desc'... Debug: 21 1 command.c:364 register_command_handler(): registering 'ocd_ft2232_serial'... Debug: 22 1 command.c:364 register_command_handler(): registering 'ocd_ft2232_layout'... Debug: 23 1 command.c:364 register_command_handler(): registering 'ocd_ft2232_vid_pid'... Debug: 24 1 command.c:364 register_command_handler(): registering 'ocd_ft2232_latency'... Info : 25 1 transport.c:123 allow_transports(): only one transport option; autoselect 'jtag' Debug: 26 1 command.c:364 register_command_handler(): registering 'ocd_jtag_flush_queue_sleep'... Debug: 27 1 command.c:364 register_command_handler(): registering 'ocd_jtag_rclk'... Debug: 28 1 command.c:364 register_command_handler(): registering 'ocd_jtag_ntrst_delay'... Debug: 29 1 command.c:364 register_command_handler(): registering 'ocd_jtag_ntrst_assert_width'... Debug: 30 1 command.c:364 register_command_handler(): registering 'ocd_scan_chain'... Debug: 31 1 command.c:364 register_command_handler(): registering 'ocd_jtag_reset'... Debug: 32 1 command.c:364 register_command_handler(): registering 'ocd_runtest'... Debug: 33 1 command.c:364 register_command_handler(): registering 'ocd_irscan'... Debug: 34 1 command.c:364 register_command_handler(): registering 'ocd_verify_ircapture'... Debug: 35 1 command.c:364 register_command_handler(): registering 'ocd_verify_jtag'... Debug: 36 1 command.c:364 register_command_handler(): registering 'ocd_tms_sequence'... Debug: 37 1 command.c:364 register_command_handler(): registering 'ocd_wait_srst_deassert'... Debug: 38 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 39 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 40 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 41 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 42 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 43 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 44 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 45 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 46 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 47 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 48 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 49 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 50 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 51 1 command.c:364 register_command_handler(): registering 'ocd_svf'... Debug: 52 1 command.c:364 register_command_handler(): registering 'ocd_xsvf'... Debug: 53 1 command.c:151 script_debug(): command - ocd_command ocd_command type ocd_ft2232_layout sheevaplug Debug: 54 1 command.c:151 script_debug(): command - ft2232_layout ocd_ft2232_layout sheevaplug Debug: 56 1 command.c:151 script_debug(): command - ocd_command ocd_command type ocd_ft2232_vid_pid 0x9e88 0x9e8f Debug: 57 1 command.c:151 script_debug(): command - ft2232_vid_pid ocd_ft2232_vid_pid 0x9e88 0x9e8f Debug: 59 1 command.c:151 script_debug(): command - ocd_command ocd_command type ocd_ft2232_device_desc SheevaPlug JTAGKey FT2232D B Debug: 60 1 command.c:151 script_debug(): command - ft2232_device_desc ocd_ft2232_device_desc SheevaPlug JTAGKey FT2232D B Debug: 62 1 c
Bug#837989: openocd: can no longer use SheevaPlug JTAGKey FT2232D (regression)
On Fri, Sep 16, 2016 at 11:59:59PM +0200, David Madore wrote: > Open On-Chip Debugger 0.5.0 (2016-09-16-09:33) ... > Error: 217 472 core.c:945 jtag_examine_chain_check(): JTAG scan chain > interrogation failed: all zeroes > Error: 218 472 core.c:946 jtag_examine_chain_check(): Check JTAG interface, > timings, target power, etc. ... > Error: 230 476 feroceon.c:671 feroceon_examine(): unexpected Feroceon EICE > version signature Hm, can't see anything good about it... -- Be free, use free (http://www.gnu.org/philosophy/free-sw.html) software! mailto:fercer...@gmail.com
Bug#837989: openocd: can no longer use SheevaPlug JTAGKey FT2232D (regression)
On Fri, Sep 16, 2016 at 06:25:27PM +0300, Paul Fertser wrote: > In this case it would help to see -d3 output. Attached are the output of /tmp/openocd-0.5.0/src/openocd -s /tmp/openocd-0.5.0/tcl -f /tmp/openocd-0.5.0/tcl/board/sheevaplug.cfg -d3 ("openocd-good.log"), which is version 0.5.0-1 from Debian, and /tmp/openocd-0.9.0/src/openocd -s /tmp/openocd-0.9.0/tcl -f /tmp/openocd-0.9.0/tcl/board/sheevaplug.cfg -d3 ("openocd-bad.log"), which is version 0.9.0-1+b1 from Debian. I have to say, however, that success connecting to the DreamPlug even with openocd-0.5.0 is somewhat random (quite often I get "Error: JTAG scan chain interrogation failed: all zeroes"), and I couldn't quite decide whether the cause lies in the JTAGKey module, its JTAG connection with the DreamPlug, on the DreamPlug itself. For some reason, success is much better when the DreamPlug is in the U-Boot bootloader than when it is in the Linux kernel. It's also possible that running openocd-0.9.0 causes later attempts to use openocd-0.5.0 to fail. None of this is reliably reproducible, so I can't be too certain about anything. Maybe the hardware is flaky. Still, my success rate with openocd >=0.8.0 is exactly zero, while with <=0.7.0 it is fairly high. Happy hacking, -- David A. Madore ( http://www.madore.org/~david/ ) Open On-Chip Debugger 0.5.0 (2016-09-16-09:33) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html User : 11 1 command.c:557 command_print(): debug_level: 3 Debug: 12 1 configuration.c:45 add_script_search_dir(): adding /home/david/.openocd Debug: 13 1 configuration.c:45 add_script_search_dir(): adding /usr/share/openocd/site Debug: 14 1 configuration.c:45 add_script_search_dir(): adding /usr/share/openocd/scripts Debug: 15 1 configuration.c:87 find_file(): found /tmp/openocd-0.5.0/tcl/board/sheevaplug.cfg Debug: 16 1 configuration.c:87 find_file(): found /tmp/openocd-0.5.0/tcl/interface/sheevaplug.cfg Debug: 17 1 command.c:151 script_debug(): command - ocd_command ocd_command type ocd_interface ft2232 Debug: 18 1 command.c:151 script_debug(): command - interface ocd_interface ft2232 Debug: 20 1 command.c:364 register_command_handler(): registering 'ocd_ft2232_device_desc'... Debug: 21 1 command.c:364 register_command_handler(): registering 'ocd_ft2232_serial'... Debug: 22 1 command.c:364 register_command_handler(): registering 'ocd_ft2232_layout'... Debug: 23 1 command.c:364 register_command_handler(): registering 'ocd_ft2232_vid_pid'... Debug: 24 1 command.c:364 register_command_handler(): registering 'ocd_ft2232_latency'... Info : 25 1 transport.c:123 allow_transports(): only one transport option; autoselect 'jtag' Debug: 26 1 command.c:364 register_command_handler(): registering 'ocd_jtag_flush_queue_sleep'... Debug: 27 1 command.c:364 register_command_handler(): registering 'ocd_jtag_rclk'... Debug: 28 1 command.c:364 register_command_handler(): registering 'ocd_jtag_ntrst_delay'... Debug: 29 1 command.c:364 register_command_handler(): registering 'ocd_jtag_ntrst_assert_width'... Debug: 30 1 command.c:364 register_command_handler(): registering 'ocd_scan_chain'... Debug: 31 1 command.c:364 register_command_handler(): registering 'ocd_jtag_reset'... Debug: 32 1 command.c:364 register_command_handler(): registering 'ocd_runtest'... Debug: 33 1 command.c:364 register_command_handler(): registering 'ocd_irscan'... Debug: 34 1 command.c:364 register_command_handler(): registering 'ocd_verify_ircapture'... Debug: 35 1 command.c:364 register_command_handler(): registering 'ocd_verify_jtag'... Debug: 36 1 command.c:364 register_command_handler(): registering 'ocd_tms_sequence'... Debug: 37 1 command.c:364 register_command_handler(): registering 'ocd_wait_srst_deassert'... Debug: 38 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 39 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 40 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 41 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 42 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 43 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 44 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 45 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 46 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 47 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 48 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 49 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 50 1 command.c:364 register_command_handler(): registering 'ocd_jtag'... Debug: 51 1 command.c:364 register_command_handler(): registering 'ocd_svf'... Debug: 52 1 command.c:364 register_command_handler(): registeri
Bug#837989: openocd: can no longer use SheevaPlug JTAGKey FT2232D (regression)
On Fri, Sep 16, 2016 at 12:22:12PM +0200, David Madore wrote: > > The error you report seems to be fixed post-0.8.0, but before 0.9.0, > > in v0.8.0-142-geab9af1 . So it looks as if you're trying to use 0.9.0 > > with scripts from 0.8.0. > > Ah, indeed, PEBCK for that part, I forgot to pass a -s option when > using openocd from a compilation tree. But still, as noted above, > neither 0.8.0 nor 0.9.0 seem to be able to use the device, they just > get stuck. In this case it would help to see -d3 output. -- Be free, use free (http://www.gnu.org/philosophy/free-sw.html) software! mailto:fercer...@gmail.com
Bug#837989: openocd: can no longer use SheevaPlug JTAGKey FT2232D (regression)
On Fri, Sep 16, 2016 at 11:13:53AM +0300, Paul Fertser wrote: > On Fri, Sep 16, 2016 at 09:55:21AM +0200, David Madore wrote: > > A SheevaPlug JTAGKey FT2232D (USB identifiers 9e88:9e8f) being > > Please also provide lsusb -vvv data for this device. Bus 003 Device 002: ID 9e88:9e8f Device Descriptor: bLength18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x9e88 idProduct 0x9e8f bcdDevice5.00 iManufacturer 1 FTDI iProduct2 SheevaPlug JTAGKey FT2232D B iSerial 3 FTU85Z4Y bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 55 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xc0 Self Powered MaxPower0mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass255 Vendor Specific Subclass bInterfaceProtocol255 Vendor Specific Protocol iInterface 2 SheevaPlug JTAGKey FT2232D B Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes2 Transfer TypeBulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes2 Transfer TypeBulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass255 Vendor Specific Subclass bInterfaceProtocol255 Vendor Specific Protocol iInterface 2 SheevaPlug JTAGKey FT2232D B Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes2 Transfer TypeBulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes2 Transfer TypeBulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Device Status: 0x (Bus Powered) > > worked fine with it: > ... > > Error: JTAG scan chain interrogation failed: all zeroes > > No, this doesn't look fine to me. Indeed, the JTAG connector was badly connected at the other end. Here's what the output of openocd 0.5.0-1 looks like when it's correctly connected (to a GuruPlug): vega david ~ $ /tmp/openocd-0.5.0/src/openocd -s /tmp/openocd-0.5.0/tcl -f /tmp/openocd-0.5.0/tcl/board/sheevaplug.cfg Open On-Chip Debugger 0.5.0 (2016-09-16-09:33) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html Info : only one transport option; autoselect 'jtag' 2000 kHz trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain adapter_nsrst_delay: 200 jtag_ntrst_delay: 200 dcc downloads are enabled Warn : use 'feroceon.cpu' as target identifier, not '0' sheevaplug_load_uboot Info : clock speed 2000 kHz Info : JTAG tap: feroceon.cpu tap/device found: 0x20a023d3 (mfg: 0x1e9, part: 0x0a02, ver: 0x2) Info : Embedded ICE version 0 Info : feroceon.cpu: hardware has 1 breakpoint/watchpoint unit - and in case that's of any use, here's the additional stuff it says when I run "reset ; init ; sheevaplug_load_uboot" from the telnet interface: Info : accepting 'telnet' connection from Info : JTAG tap: feroceon.cpu tap/device found: 0x20a023d3 (mfg: 0x1e9, part: 0x0a02, ver: 0x2) target state: halted target halted in ARM state due to debug-request, current mode: Supervisor cpsr: 0x00d3 pc: 0x MMU: disabled, D-Cache: disabled, I-Cache: disabled 230196 bytes written at addre
Bug#837989: openocd: can no longer use SheevaPlug JTAGKey FT2232D (regression)
Hello, On Fri, Sep 16, 2016 at 09:55:21AM +0200, David Madore wrote: > A SheevaPlug JTAGKey FT2232D (USB identifiers 9e88:9e8f) being Please also provide lsusb -vvv data for this device. > worked fine with it: ... > Error: JTAG scan chain interrogation failed: all zeroes No, this doesn't look fine to me. > Open On-Chip Debugger 0.8.0 (2016-09-16-09:45) ... > Error: unable to open ftdi device with vid 9e88, pid 9e8f, description > 'SheevaPlug JTAGKey FT2232D' and serial '*' You might want to try to comment out ftdi_device_desc command from interface/ftdi/sheevaplug.cfg to workaround this issue. > The error message is almost identical with openocd 0.9.0: ... > Error: unable to open ftdi device with vid 9e88, pid 9e8f, > description 'SheevaPlug JTAGKey FT2232D' and serial '*' The error you report seems to be fixed post-0.8.0, but before 0.9.0, in v0.8.0-142-geab9af1 . So it looks as if you're trying to use 0.9.0 with scripts from 0.8.0. -- Be free, use free (http://www.gnu.org/philosophy/free-sw.html) software! mailto:fercer...@gmail.com
Bug#837989: openocd: can no longer use SheevaPlug JTAGKey FT2232D (regression)
Package: openocd Version: 0.8.0-4 (I am reporting this against openocd version 0.8.0-4 because that is what is found in Debian jessie, currently stable, but I also tried 0.9.0-1+b1, the version currently in sid.) A SheevaPlug JTAGKey FT2232D (USB identifiers 9e88:9e8f) being connected, version 0.5.0-1 (as found in Debian wheezy) of openocd worked fine with it: vega david ~ $ /tmp/openocd-0.5.0/src/openocd -f /tmp/openocd-0.5.0/tcl/board/sheevaplug.cfg Open On-Chip Debugger 0.5.0 (2016-09-16-09:33) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html Info : only one transport option; autoselect 'jtag' 2000 kHz trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain adapter_nsrst_delay: 200 jtag_ntrst_delay: 200 dcc downloads are enabled Warn : use 'feroceon.cpu' as target identifier, not '0' sheevaplug_load_uboot Info : clock speed 2000 kHz 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: feroceon.cpu: IR capture error; saw 0x00 not 0x01 Warn : Bypassing JTAG setup events due to errors Info : Embedded ICE version 0 Info : feroceon.cpu: hardware has 1 breakpoint/watchpoint unit Error: unexpected Feroceon EICE version signature ^C but openocd 0.8.0 fails as follows: vega david ~ $ /tmp/openocd-0.8.0/src/openocd -f /tmp/openocd-0.8.0/tcl/board/sheevaplug.cfg Open On-Chip Debugger 0.8.0 (2016-09-16-09:45) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html WARNING! This file was not tested with real interface, it is based on code in ft2232.c. Please report your experience with this file to openocd-devel mailing list, so it could be marked as working or fixed. Info : only one transport option; autoselect 'jtag' trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain connect_deassert_srst adapter_nsrst_delay: 200 jtag_ntrst_delay: 200 dcc downloads are enabled Warn : use 'feroceon.cpu' as target identifier, not '0' sheevaplug_load_uboot Error: no device found Error: unable to open ftdi device with vid 9e88, pid 9e8f, description 'SheevaPlug JTAGKey FT2232D' and serial '*' in procedure 'init' The error message is almost identical with openocd 0.9.0: vega david ~ $ /tmp/openocd-0.9.0/src/openocd -f /tmp/openocd-0.9.0/tcl/board/sheevaplug.cfg Open On-Chip Debugger 0.9.0 (2016-09-16-09:31) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html WARNING! This file was not tested with real interface, it is based on code in ft2232.c. Please report your experience with this file to openocd-devel mailing list, so it could be marked as working or fixed. 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 adapter_nsrst_delay: 200 jtag_ntrst_delay: 200 adapter speed: 2000 kHz dcc downloads are enabled Warn : use 'feroceon.cpu' as target identifier, not '0' sheevaplug_load_uboot Error: no device found Error: unable to open ftdi device with vid 9e88, pid 9e8f, description 'SheevaPlug JTAGKey FT2232D' and serial '*' I also tried to get openocd 0.9.0 working with the openocd 0.5.0 scripts, with a different error message, but with no more success: vega david ~ $ /tmp/openocd-0.9.0/src/openocd -f /tmp/openocd-0.5.0/tcl/board/sheevaplug.cfg Open On-Chip Debugger 0.9.0 (2016-09-16-09:31) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Error: The specified debug interface was not found (ft2232) The following debug interfaces are available: 1: parport 2: dummy 3: ftdi 4: usb_blaster 5: amt_jtagaccel 6: gw16012 7: usbprog 8: jlink 9: vsllink 10: rlink 11: ulink 12: arm-jtag-ew 13: buspirate 14: remote_bitbang 15: hla 16: osbdm 17: opendous 18: aice 19: cmsis-dap -- David A. Madore ( http://www.madore.org/~david/ )