Browse Source

drivers/usb_blaster: Group adapter commands

Use a command group 'usb_blaster' with subcommands instead of individual
commands with 'usb_blaster_' prefix.

The old commands are still available for backward compatibility but
marked as deprecated.

Change-Id: I2ae3d96ba864c20d7db67c74677781a62bfc4eb5
Signed-off-by: Marc Schink <>
Tested-by: jenkins
Reviewed-by: Antonio Borneo <>
Marc Schink 1 year ago
committed by Antonio Borneo
3 changed files with 55 additions and 14 deletions
  1. +8
  2. +17
  3. +30

+ 8
- 8
doc/openocd.texi View File

@@ -2728,28 +2728,28 @@ USB JTAG/USB-Blaster compatibles over one of the userspace libraries
for FTDI chips. These interfaces have several commands, used to
configure the driver before initializing the JTAG scan chain:

@deffn {Config Command} {usb_blaster_device_desc} description
@deffn {Config Command} {usb_blaster device_desc} description
Provides the USB device description (the @emph{iProduct string})
of the FTDI FT245 device. If not
specified, the FTDI default value is used. This setting is only valid
if compiled with FTD2XX support.
@end deffn

@deffn {Config Command} {usb_blaster_vid_pid} vid pid
@deffn {Config Command} {usb_blaster vid_pid} vid pid
The vendor ID and product ID of the FTDI FT245 device. If not specified,
default values are used.
Currently, only one @var{vid}, @var{pid} pair may be given, e.g. for
Altera USB-Blaster (default):
usb_blaster_vid_pid 0x09FB 0x6001
usb_blaster vid_pid 0x09FB 0x6001
@end example
The following VID/PID is for Kolja Waschk's USB JTAG:
usb_blaster_vid_pid 0x16C0 0x06AD
usb_blaster vid_pid 0x16C0 0x06AD
@end example
@end deffn

@deffn {Command} {usb_blaster_pin} (@option{pin6}|@option{pin8}) (@option{0}|@option{1}|@option{s}|@option{t})
@deffn {Command} {usb_blaster pin} (@option{pin6}|@option{pin8}) (@option{0}|@option{1}|@option{s}|@option{t})
Sets the state or function of the unused GPIO pins on USB-Blasters
(pins 6 and 8 on the female JTAG header). These pins can be used as
SRST and/or TRST provided the appropriate connections are made on the
@@ -2757,18 +2757,18 @@ target board.

For example, to use pin 6 as SRST:
usb_blaster_pin pin6 s
usb_blaster pin pin6 s
reset_config srst_only
@end example
@end deffn

@deffn {Config Command} {usb_blaster_lowlevel_driver} (@option{ftdi}|@option{ublast2})
@deffn {Config Command} {usb_blaster lowlevel_driver} (@option{ftdi}|@option{ublast2})
Chooses the low level access method for the adapter. If not specified,
@option{ftdi} is selected unless it wasn't enabled during the
configure stage. USB-Blaster II needs @option{ublast2}.
@end deffn

@deffn {Config Command} {usb_blaster_firmware} @var{path}
@deffn {Config Command} {usb_blaster firmware} @var{path}
This command specifies @var{path} to access USB-Blaster II firmware
image. To be used with USB-Blaster II only.
@end deffn

+ 17
- 6
src/jtag/drivers/usb_blaster/usb_blaster.c View File

@@ -1030,16 +1030,16 @@ COMMAND_HANDLER(ublast_firmware_command)

static const struct command_registration ublast_command_handlers[] = {
static const struct command_registration ublast_subcommand_handlers[] = {
.name = "usb_blaster_device_desc",
.name = "device_desc",
.handler = ublast_handle_device_desc_command,
.help = "set the USB device description of the USB-Blaster",
.usage = "description-string",
.name = "usb_blaster_vid_pid",
.name = "vid_pid",
.handler = ublast_handle_vid_pid_command,
.help = "the vendor ID and product ID of the USB-Blaster and "
@@ -1048,21 +1048,21 @@ static const struct command_registration ublast_command_handlers[] = {
.usage = "vid pid vid_uninit pid_uninit",
.name = "usb_blaster_lowlevel_driver",
.name = "lowlevel_driver",
.handler = ublast_handle_lowlevel_drv_command,
.help = "set the lowlevel access for the USB Blaster (ftdi, ublast2)",
.usage = "(ftdi|ublast2)",
.name = "usb_blaster_pin",
.name = "pin",
.handler = ublast_handle_pin_command,
.mode = COMMAND_ANY,
.help = "show or set pin state for the unused GPIO pins",
.usage = "(pin6|pin8) (0|1|s|t)",
.name = "usb_blaster_firmware",
.name = "firmware",
.handler = &ublast_firmware_command,
.help = "configure the USB-Blaster II firmware location",
@@ -1071,6 +1071,17 @@ static const struct command_registration ublast_command_handlers[] = {

static const struct command_registration ublast_command_handlers[] = {
.name = "usb_blaster",
.mode = COMMAND_ANY,
.help = "perform usb_blaster management",
.chain = ublast_subcommand_handlers,
.usage = "",

static struct jtag_interface usb_blaster_interface = {
.supported = DEBUG_CAP_TMS_SEQ,
.execute_queue = ublast_execute_queue,

+ 30
- 0
src/jtag/startup.tcl View File

@@ -645,4 +645,34 @@ proc buspirate_port args {
eval buspirate port $args

lappend _telnet_autocomplete_skip usb_blaster_device_desc
proc usb_blaster_device_desc args {
echo "DEPRECATED! use 'usb_blaster device_desc' not 'usb_blaster_device_desc'"
eval usb_blaster device_desc $args

lappend _telnet_autocomplete_skip usb_blaster_vid_pid
proc usb_blaster_vid_pid args {
echo "DEPRECATED! use 'usb_blaster vid_pid' not 'usb_blaster_vid_pid'"
eval usb_blaster vid_pid $args

lappend _telnet_autocomplete_skip usb_blaster_lowlevel_driver
proc usb_blaster_lowlevel_driver args {
echo "DEPRECATED! use 'usb_blaster lowlevel_driver' not 'usb_blaster_lowlevel_driver'"
eval usb_blaster lowlevel_driver $args

lappend _telnet_autocomplete_skip usb_blaster_pin
proc usb_blaster_pin args {
echo "DEPRECATED! use 'usb_blaster pin' not 'usb_blaster_pin'"
eval usb_blaster pin $args

lappend _telnet_autocomplete_skip usb_blaster_firmware
proc usb_blaster_firmware args {
echo "DEPRECATED! use 'usb_blaster firmware' not 'usb_blaster_firmware'"
eval usb_blaster firmware $args