plucky (1) mspdebug.1.gz

Provided by: mspdebug_0.25-1_amd64 bug

NAME

       MSPDebug - debugging tool for MSP430 MCUs

SYNOPSIS

       mspdebug [options] driver [command ...]

DESCRIPTION

       MSPDebug  is  a  command-line  tool  designed for debugging and programming the MSP430 family of MCUs. It
       supports the eZ430-F2013, eZ430-RF2500, Launchpad, Chronos, FET430UIF, GoodFET,  Olimex  MSP430-JTAG-TINY
       and MSP430-JTAG-ISO programming tools, as well as a simulation mode.

       When  started  with appropriate options, MSPDebug will attempt to connect to the debugging tool specified
       and identify the device under test. Once connected, the user is presented with a command prompt which can
       be  used  to  reflash the device memory, inspect memory and registers, set registers, and control the CPU
       (single step, run and run to breakpoint).

       It supports a variety of file formats, described in the section BINARY FORMATS below. It can also be used
       as a remote stub for gdb(1).

       On  startup,  MSPDebug  will look for a file called .mspdebug first in the current directory, and then in
       the user's home directory. If either file exists, commands will be  read  and  executed  from  this  file
       before executing any other commands or starting the interactive reader.

       Alternatively, a configuration file can be explicitly specified with the -C option.

COMMAND-LINE OPTIONS

       Command-line  options  accepted  by MSPDebug are described below. If commands are specified on the end of
       the command-line, then they are executed after connecting to the device, and the  interactive  prompt  is
       not  started. Please be aware that commands consisting of multiple words need to be enclosed in quotation
       marks, otherwise they are treated as single commands. Thus the common prog command would be used as "prog
       main.elf".  See the section labelled COMMANDS for more information.

       -q     Start in quiet mode. See the "quiet" option described below.

       -v voltage
              Set  the  programming  voltage.  The  voltage  should be specified as an integer in millivolts. It
              defaults to 3000 (3.0 V).

       -j     Use JTAG instead of Spy-Bi-Wire to communicate with the MSP430.  This  option  doesn't  work  with
              eZ430 or eZ430-RF2500 devices, which support Spy-Bi-Wire only.

       -d device
              Specify that the driver should connect via a tty device rather than USB.  The supported connection
              methods vary depending on the driver. See the section DRIVERS below for details.

       -U bus:device
              Specify a particular USB device to connect to. Without  this  option,  the  first  device  of  the
              appropriate type is opened.

       -s serial
              Specify  a  particular  USB  device  serial  number  to connect to. Use this option to distinguish
              between multiple devices of the same type.

       -n     Do not process the startup file (~/.mspdebug).

       -C file
              Specify an alternative configuration file (default is ~/.mspdebug). If -n is specified as well, no
              file will be read.

       --long-password
              When  using  the  flash-bsl  driver,  send  a 32-byte BSL password instead of the standard 16-byte
              password.

       --help Display a brief help message and exit.

       --fet-list
              Display a list of chips supported by the FET driver (the driver used for UIF,  RF2500  and  Olimex
              devices).

       --fet-force-id string
              When using a FET device, force the connected chip to be recognised by MSPDebug as one of the given
              type during initialization. This overrides the device ID returned by the  FET.  The  given  string
              should be a chip name in long form, for example "MSP430F2274".

       --fet-skip-close
              When using a FET device, skip the JTAG close procedure when disconnecting.  With some boards, this
              removes the need to replug the debugger after use.

       --usb-list
              List available USB devices and exit.

       --force-reset
              When using a FET device, always send a reset during initialization. By default, an  initialization
              without reset will be tried first.

       --allow-fw-update
              When  using  a V3 FET device via the TI library, allow the library to perform a firmware update if
              the FET firmware is incompatible with the library.

       --require-fw-update image.txt
              When using a V3 FET device, or certain Olimex devices, force a firmware  update  using  the  given
              firmware image. The firmware format depends on the driver.

       --version
              Show program version and copyright information.

       --embedded
              Start  mspdebug  as  an embedded subprocess. See the documentation accompanying the source release
              for more information on embedded mode.

       --bsl-entry-sequence seq
              Specify a BSL entry sequence. Each character specifies a modem control line transition (R: RTS on,
              r:  RTS  off,  D: DTR on, d: DTR off). A comma indicates a delay. The entry and exit sequences are
              separated by a colon. The default value is dR,r,R,r,R,D:dR,DR, for the flash-bsl driver.

DRIVERS

       For drivers supporting both USB and tty access, USB is the default, unless specified  otherwise  (see  -d
       above).

       On  Linux,  if USB access is used, the kernel driver (if any) is detached from the tty device. If further
       access to the tty device is needed, unloading and re-loading of the driver (e.g. cdc-acm.ko) is required.

       A driver name must be specified on the command line for MSPDebug to connect to. Valid  driver  names  are
       listed here.

       rf2500 Connect to an eZ430-RF2500, Launchpad or Chronos device. Only USB connection is supported.

       olimex Connect to an Olimex MSP430-JTAG-TINY device. Both USB and tty access are supported.

       olimex-v1
              Connect  to  an  Olimex  MSP430-JTAG-TINY (V1) device. Both USB and tty access are supported. This
              driver must be used instead of olimex if connecting to a V1 device via a tty interface.

       olimex-iso
              Connect to an Olimex MSP430-JTAG-ISO device. Both USB and tty access are supported.

       olimex-iso-mk2
              Connect to an Olimex MSP430-JTAG-ISO-MK2 device. Both USB and tty access are supported.

       sim    Do not connect to any hardware device, but instead start in  simulation  mode.  A  64k  buffer  is
              allocated to simulate the device memory.

              During  simulation,  addresses  below 0x0200 are assumed to be IO memory.  Programmed IO writes to
              and from IO memory are handled by the IO simulator, which can be configured  and  controlled  with
              the simio command, described below.

              This mode is intended for testing of changes to MSPDebug, and for aiding the disassembly of MSP430
              binaries (as all binary and symbol table formats are still usable in this mode).

       uif    Connect to an eZ430-F2013 or a FET430UIF device. The device argument should be the filename of the
              appropriate  tty  device.  The  TI  serial converter chips on these devices are supported by newer
              versions of the Linux kernel, and should appear as /dev/ttyXX when attached.

              USB connection is supported for this driver. The USB interface chip in these devices is a  TI3410,
              which  requires  a  firmware  download  on  startup.  MSPDebug  will  search  for  a  file  called
              ti_3410.fw.ihex in the configured library directory and the current directory. You can specify  an
              alternate location for the file via the MSPDEBUG_TI3410_FW environment variable.

       uif-bsl
              Connect  to  the  bootloader  on  a  FET430UIF device. These devices contain MSP430F1612 chips. By
              sending a special command sequence, you can obtain access to the bootloader and inspect memory  on
              the MSP430F1612 in the programming device itself.

              Currently,  only  memory read/write and erase are supported. CPU control via the bootloader is not
              possible.

       flash-bsl
              Connect to the built-in bootloader in MSP430 devices with flash bootloader  memory.  Devices  with
              ROM bootloaders require another driver. Currently, this driver must mass-erase the device in order
              to gain access. Read, write, and erase operations are supported.

              USB connection is not supported for this driver. Connection is via  serial  port,  and  bootloader
              entry  is accomplished via the RTS and DTR lines.  Connect RTS to the device's TEST pin and DTR to
              the device's RST pin.  Use  an  appropriate  serial  level-shifter  to  make  the  connection,  if
              necessary.   If connecting to a device with non-multiplexed JTAG pins, connect RTS to the device's
              TCK pin via an inverter.

       gdbc   GDB client mode. Connect to a server which implements the  GDB  remote  protocol  and  provide  an
              interface  to it. To use this driver, specify the remote address in hostname:port format using the
              -d option.

       tilib  Use the Texas Instruments MSP430.DLL to access  the  device.  The  library  file  (MSP430.DLL  for
              Windows, libmsp430.so for Unix-like systems) must be present in the dynamic loader search path.

              USB  connection  is not supported for this driver. This driver supports watchpoints. Note that the
              -d option for this driver passes its argument straight through to the library's  MSP430_Initialize
              function.  Any  special  argument  supported  by  that function is therefore accessible via the -d
              option.

              Automatic device discovery works only on Linux and Windows. On other systems, the appropriate  ACM
              serial node must be explicitly specified.

       goodfet
              Connect to a GoodFET device. JTAG mode must be used, and only tty access is supported. This device
              can be used for memory access (read, erase and program), but CPU control is limited. The  CPU  may
              be halted, run and reset, but register access and breakpoints aren't supported.

       pif    Connect  to  a  parallel-port  JTAG  controller.  JTAG  mode  must be used, and only tty access is
              supported. Currently, this driver is only  supported  on  Linux,  FreeBSD  and  DragonFly  BSD.  A
              parallel  port device (ppdev on Linux, ppi on FreeBSD and DragonFly BSD) must be specified via the
              -d option.

       gpio   Connect to system gpios. JTAG mode must be used, and only tty access is supported. Currently, this
              driver is only supported on Linux, FreeBSD and DragonFly BSD. The gpios to used must defined using
              a string like "tdi=7 tdo=8 tms=9 tck=4 rst=10 tst=11" via the -d option. (dont forget the quotes)

       load-bsl
              Connect to a USB bootloader. The stub bootloader will be used to load a fuller-featured bootloader
              into RAM for execution.

       ezfet  This  driver is for Texas Instruments' eZ-FET devices. It supports USB and tty access. It does not
              support breakpoint control.

       rom-bsl
              This driver is for the old-style (ROM) bootstrap loader. It supports tty  access  only.  Entry  is
              attempted via the RTS/DTR signals. The default sequence is DR,r,R,r,d,R:DR,r, but you can override
              this with the --bsl-entry-sequence option.

              WARNING: this driver unlocks the BSL by performing a  mass  erase.   There  are  reports  of  this
              operation causing an erase of info A in some devices. Use at your own risk.

       bus-pirate
              Raw JTAG using Bus Pirate devices.

COMMANDS

       MSPDebug can accept commands either through an interactive prompt, or non-interactively when specified on
       the command line. The supported commands are listed below.

       Commands take arguments separated by spaces. Any  text  string  enclosed  in  double-quotation  marks  is
       considered  to  be  a  single argument, even if it contains space characters. Within a quoted string, the
       usual C-style backslash substitutions can be used.

       Commands can be specified by giving the first few characters of  the  command  name,  provided  that  the
       prefix  is unambiguous. Some commands support automatic repeat. For these commands, pressing enter at the
       reader prompt without typing anything will cause repeat execution.

       ! [command [args ...]]
              Invoke an interactive operating system shell. If any arguments are specified,  the  first  one  is
              taken as a command to execute, with the rest of the arguments as the arguments to the command.

              This command is not yet available on non-POSIX systems.

       = expression
              Evaluate an address expression and show both its value, and the result when the value is looked up
              in reverse in the current symbol table. This result is of the form symbol+offset, where symbol  is
              the name of the nearest symbol not past the address in question.

              See the section marked ADDRESS EXPRESSIONS for more information on the syntax of expressions.

       alias  Show a list of defined command aliases.

       alias name
              Remove a previously defined command alias.

       alias name command
              Define  a  command  alias. The text command will be substituted for name when looking up commands.
              The given command text may contain a command plus arguments, if the  entire  text  is  wrapped  in
              quotes when defining the alias. To avoid alias substitution when interpreting commands, prefix the
              command with \ (a backslash character).

       blow_jtag_fuse
              Blow the device's JTAG fuse.

              WARNING: this is an irreversible operation!

       break  Show a list of active breakpoints. Breakpoints can be added and  removed  with  the  setbreak  and
              delbreak commands. Each breakpoint is numbered with an integer index starting at 0.

       cgraph address length [address]
              Construct the call graph of all functions contained or referenced in the given range of memory. If
              a particular function is specified, then details  for  that  node  of  the  graph  are  displayed.
              Otherwise, a summary of all nodes is displayed.

              Information  from  the  symbol  table  is  used  for hinting at the possible locations of function
              starts. Any symbol which does not contain a "."  is considered a possible function start.

              Callers and callee names are shown prefixed by a "*" where the  transition  is  a  tail-call  type
              transition.

       delbreak [index]
              Delete  one  or  all  breakpoints.  If  an  index  is  given,  the selected breakpoint is deleted.
              Otherwise, all breakpoints are cleared.

       dis address [length]
              Dissassemble a section of memory. Both arguments may be  address  expressions.  If  no  length  is
              specified, a section of the default length (64 bytes) is disassembled and shown.

              If  symbols  are  available, then all addresses used as operands are translated into symbol+offset
              form.

              This command supports repeat execution. If repeated, it continues to disassemble another block  of
              memory following that last printed.

       erase [all|segment|segrange] [address] [size] [segrange]
              Erase  the device under test. With no arguments, all code memory is erased (but not information or
              boot memory). With the argument "all", a mass erase is performed (the results may  depend  on  the
              state of the LOCKA bit in the flash memory controller).

              Specify  "segment"  and a memory address to erase an individual flash segment. Specify "segrange",
              an address, size and segment size to erase an arbitrary set of contiguous segments.

       exit   Exit from MSPDebug.

       fill address length b0 [b1 b2 ...]
              Fill the memory region of size length  starting  at  address  with  the  pattern  of  bytes  given
              (specified  in  hexadecimal).  The  pattern  will  be  repeated  without  padding as many times as
              necessary without exceeding the bounds of the specified region.

       gdb [port]
              Start a GDB remote stub, optionally specifying a TCP port to listen on.  If no port is given,  the
              default port is controlled by the option gdb_default_port.

              MSPDebug  will  wait  for  a  connection on this port, and then act as a GDB remote stub until GDB
              disconnects.

              GDB's "monitor" command can be used to issue MSPDebug commands via  the  GDB  interface.  Supplied
              commands are executed non-interactively, and the output is sent back to be displayed in GDB.

       help [command]
              Show  a  brief listing of available commands. If an argument is specified, show the syntax for the
              given command. The help text shown when no argument is given is also shown  when  MSPDebug  starts
              up.

       hexout address length filename
              Read  the specified section of the device memory and save it to an Intel HEX file. The address and
              length arguments may both be address expressions.

              If the specified file already exists, then it will be overwritten. If you need to dump memory from
              several  disjoint  memory  regions, you can do this by saving each section to a separate file. The
              resulting files can then be concatenated together to form a single valid HEX file.

       isearch address length [options ...]
              Search over the given range for an instruction which matches the specified  search  criteria.  The
              search may be narrowed by specifying one or more of the following terms:

              opcode opcode
                     Match  the specified opcode. Byte/word specifiers are not recognised, as they are specified
                     with other options.

              byte   Match only byte operations.

              word   Match only word operations.

              aword  Match only address-word (20-bit) operations.

              jump   Match only jump instructions (conditional and unconditional  jumps,  but  not  instructions
                     such as BR which load the program counter explicitly).

              single Match only single-operand instructions.

              double Match only double-operand instructions.

              noarg  Match only instructions with no arguments.

              src address
                     Match  instructions  with the specified value in the source operand. The value may be given
                     as an address expression. Specifying this option implies matching  of  only  double-operand
                     instructions.

              dst address
                     Match instructions with the specified value in the destination operand. This option implies
                     that no-argument instructions are not matched.

              srcreg register
                     Match instructions using the specified register in the source operand. This option  implies
                     matching of only double-operand instructions.

              dstreg register
                     Match  instructions  using  the specified register in the destination operand.  This option
                     implies that no-argument instructions are not matched.

              srcmode mode
                     Match instructions using the specified mode in the source operand. See below for a list  of
                     modes recognised. This option implies matching of only double-operand instructions.

              dstmode mode
                     Match  instructions  using  the  specified mode in the destination operand. See below for a
                     list of modes. This option implies that no-argument instructions are not matched.

              For single-operand instructions, the operand is considered to be the destination operand.

              The seven addressing modes used by the MSP430 are represented by single characters, and are listed
              here:

              R      Register mode.

              I      Indexed mode.

              S      Symbolic mode.

              &      Absolute mode.

              @      Register-indirect mode.

              +      Register-indirect mode with auto-increment.

              #      Immediate mode.

       load filename
              Program  the  device  under test using the binary file supplied. This command is like prog, but it
              does not load symbols or erase the device before programming.

              The CPU is reset and halted before and after programming.

       load_raw filename address
              Write the data contained in a raw binary file to the given memory address.

              The CPU is reset and halted before and after programming.

       md address [length]
              Read the specified section of device memory and display it  as  a  canonical-style  hexdump.  Both
              arguments  may  be address expressions. If no length is specified, a section of the default length
              (64 bytes) is shown.

              The output is split into three columns. The first column shows the starting address for the  line.
              The  second  column  lists  the  hexadecimal values of the bytes. The final column shows the ASCII
              characters corresponding to printable bytes, and . for non-printing characters.

              This command supports repeat execution. If repeated, it continues to print another block of memory
              following that last printed.

       mw address bytes ...
              Write  a  sequence  of  bytes  at  the  given  memory address. The address given may be an address
              expression. Bytes values are two-digit hexadecimal numbers separated by spaces.

       opt [name] [value]
              Query, set or  list  option  variables.  MSPDebug's  behaviour  can  be  configured  using  option
              variables, described below in the section OPTIONS.

              Option  variables may be of three types: boolean, numeric or text. Numeric values may be specified
              as address expressions.

              With no arguments, this command displays all available option variables.  With just an option name
              as its argument, it displays the current value of that option.

       power info
              Show  basic  power  statistics  gathered  over  the  last few sessions. This includes total charge
              consumption, run time and average current.

       power clear
              Clear all recorded power statistics.

       power all [granularity]
              Show sample data gathered over  all  sessions.  An  optional  granularity  can  be  specified,  in
              microseconds.  For each time slice, relative session time, charge consumption, current consumption
              and approximate code location are shown.

       power session N [granularity]
              Same as power all, except that data is shown only for the Nth session.

       power export-csv N filename
              Export raw sample data for the Nth session to the given file in CSV format.  For  each  line,  the
              columns  are,  in  order:  relative time in microseconds, current consumption in microamps, memory
              address.

       power profile
              If a symbol table is loaded, compile and correlate all gathered  power  data  against  the  symbol
              table.  A  single  table  is  then  shown  listing, per function, charge consumption, run time and
              average current. The functions are listed  in  order  of  charge  consumption  (biggest  consumers
              first).

       prog filename
              Erase  and reprogram the device under test using the binary file supplied. The file format will be
              auto-detected and may be any of the supported file formats.

              In the case of a file containing symbols, symbols will be automatically loaded from the file  into
              the symbol table (discarding any existing symbols), if they are present.

              The CPU is reset and halted before and after programming.

       read filename
              Read  commands from the given file, line by line and process each one.  Any lines whose first non-
              space character is # are ignored. If an error occurs while processing a command, the rest  of  the
              file is not processed.

       regs   Show the current value of all CPU registers in the device under test.

       reset  Reset (and halt) the CPU of the device under test.

       run    Start  running  the CPU. The interactive command prompt is blocked when the CPU is started and the
              prompt will not appear again until the CPU halts. The CPU will halt if it encounters a breakpoint,
              or if Ctrl-C is pressed by the user.

              After  the  CPU halts, the current register values are shown as well as a disassembly of the first
              few instructions at the address selected by the program counter.

       save_raw address length filename
              Save a region of memory to a raw binary file. The address and length arguments may both be address
              expressions.

              If the specified file already exists, then it will be overwritten.

       set register value
              Alter  the  value of a register. Registers are specified as numbers from 0 through 15. Any leading
              non-numeric characters are ignored (so a register may be specified as, for  example,  "R12").  The
              value argument is an address expression.

       setbreak address [index]
              Add  a  new breakpoint. The breakpoint location is an address expression. An optional index may be
              specified, indicating that this new breakpoint should overwrite an existing slot. If no  index  is
              specified, then the breakpoint will be stored in the next unused slot.

       setwatch address [index]
              Add  a new watchpoint. The watchpoint location is an address expression, and an optional index may
              be specified. Watchpoints are considered to be a type  of  breakpoint  and  can  be  inspected  or
              removed using the break and delbreak commands. Note that not all drivers support watchpoints.

       setwatch_r address [index]
              Add a watchpoint which is triggered only on read access.

       setwatch_w address [index]
              Add a watchpoint which is triggered only on write access.

       simio add class name [args ...]
              Add  a  new peripheral to the IO simulator. The class parameter may be any of the peripheral types
              named in the output of the simio classes command. The name parameter is a unique name assigned  by
              the user to this peripheral instance, and is used with other commands to refer to this instance of
              the peripheral.

              Some peripheral classes take arguments upon creation. These are documented in the  output  to  the
              simio help command.

       simio classes
              List  the names of the different types of peripherals which may be added to the simulator. You can
              use the simio help command to obtain more information about each peripheral type.

       simio config name param [args ...]
              Configure or perform some action on a peripheral instance. The param argument is specific  to  the
              peripheral  type.  A  list of valid configuration commands can be obtained by using the simio help
              command.

       simio del name
              Remove a previously added peripheral instance. The  name  argument  should  be  the  name  of  the
              peripheral that was assigned with the simio add command.

       simio devices
              List  all  peripheral  instances  currently  attached to the simulator, along with their types and
              interrupt status. You can obtain more detailed information for each instance with the  simio  info
              command.

       simio help class
              Obtain  more  information  about a peripheral class. The documentation given will list constructor
              arguments and configuration parameters for the device type.

       simio info name
              Display detailed status information for a particular peripheral. The type of information displayed
              is specific to each type of peripheral.

       step [count]
              Step  the  CPU  through  one  or  more  instructions.  After stepping, the new register values are
              displayed, as well as a disassembly of the instructions at the address  selected  by  the  program
              counter.

              An  optional count can be specified to step multiple times. If no argument is given, the CPU steps
              once. This command supports repeat execution.

       sym clear
              Clear the symbol table, deleting all symbols.

       sym set name value
              Set or alter the value of a symbol. The value given may be an address expression.

       sym del name
              Delete the given symbol from the symbol table.

       sym import filename
              Load symbols from the specified file and add them to the symbol table.  The file  format  will  be
              auto-detected and may be either ELF32 or a BSD-style symbol listing (like the output from nm(1)).

              Symbols  can  be combined from many sources, as the syms command adds to the existing symbol table
              without discarding existing symbols.

       sym import+ filename
              This command is similar to sym import, except that the symbol table is not cleared first. By using
              this command, symbols from multiple sources can be combined.

       sym export filename
              Save  all symbols currently defined to the given file. The symbols are saved as a BSD-style symbol
              table. Note that symbol types are not stored by MSPDebug, and all symbols are saved as type t.

       sym find [regex]
              Search for symbols. If a regular expression is given, then all symbols matching the expression are
              printed. If no expression is specified, then the entire symbol table is listed.

       sym rename regex string
              Rename  symbols  by searching for those matching the given regular expression and substituting the
              given string for the matched portion. The symbols renamed are displayed, as well as a total  count
              of all symbols renamed.

       verify filename
              Compare  the contents of the given binary file to the chip memory. If any differences are found, a
              message is printed for the first mismatched byte.

       verify_raw filename address
              Compare the contents of a raw binary file to the device  memory  at  the  given  address.  If  any
              differences are found, a message is printed for the first mismatched byte.

BINARY FORMATS

       The following binary/symbol formats are supported by MSPDebug:

              ELF32
              COFF
              Intel HEX (program only)
              BSD symbol table (symbols only)
              TI Text (program only)
              SREC (program only)

IO SIMULATOR

       The  IO  simulator  subsystem  consists of a database of device classes, and a list of instances of those
       classes. Each device class has a different set of constructor  arguments,  configuration  parameters  and
       information  which may be displayed. This section describes the operation of the available device classes
       in detail.

       In the list below, each device class is listed, followed by its constructor arguments.

       gpio   Digital IO port simulator. This device  simulates  any  of  the  digital  ports  with  or  without
              interrupt capability. It has the following configuration parameters:

              base address
                     Set  the  base address for this port. Note that for ports without interrupt capability, the
                     resistor enable port has a special address which is computable from the base address.

              irq vector
                     Enable interrupt functionality for this port by specifying an interrupt vector number.

              noirq  Disable interrupt functionality for this port.

              verbose
                     Print a state change message every time the port output changes.

              quiet  Don't print anything when the port state changes (the default).

              set pin value
                     Set the input pin state for the given pin on this port. The  pin  parameter  should  be  an
                     index between 0 and 7. The value should be either zero (for a low state) or non-zero (for a
                     high state).

       hwmult This peripheral simulates  the  hardware  multiplier.  It  has  no  constructor  or  configuration
              parameters, and does not provide any extended information.

       timer [size]
              This  peripheral simulators Timer_A modules, and can be used to simulate Timer_B modules, provided
              that the extended features aren't required.

              The constructor takes a size argument specifying the number of capture/compare registers  in  this
              peripheral instance. The number of such registers may not be less than 2, or greater than 7.

              The IO addresses and IRQs used are configurable. The default IO addresses used are those specified
              for Timer_A in the MSP430 hardware documentation.

              base address
                     Alter the base IO address. By default, this is 0x0160. By setting this to 0x0180, a Timer_B
                     module may be simulated.

              irq0 number
                     Set  the  TACCR0  interrupt  vector  number.  By default, this is interrupt vector 9.  This
                     interrupt is self-clearing, and higher priority than the TACCR1/TAIFG vector.

              irq1 number
                     Set the TACCR1/TAIFG interrupt vector. By default, this is interrupt vector 8.

              iv address
                     Alter the address of the interrupt vector register. By default, this is 0x012E.  By setting
                     this to 0x011E, a Timer_B module may be simulated.

              set channel value
                     When  Timer_A  is  used  in capture mode, the CCI bit in each capture register reflects the
                     state of the corresponding input pin, and can't be altered in software. This  configuration
                     command  can  be  used  to  simulate  changes  in  input  pin  state,  and will trigger the
                     corresponding interrupts if the peripheral is so configured.

       tracer [history-size]
              The tracer peripheral is a debugging device. It can be used  to  investigate  and  record  the  IO
              activity of a running program, to benchmark execution time, and to simulate interrupts.

              The  information  displayed  by  the tracer gives a running count of clock cycles from each of the
              system clocks, and an instruction count. A list of the N most recent IO events is  also  displayed
              (this  is  configurable  via  the  history-size  argument  of  the  constructor). Each IO event is
              timestamped by the number of MCLK cycles that have elapsed since the last reset  of  the  device's
              counter.

              The IO events that it records consist of programmed IO reads and writes, interrupt acceptance, and
              system resets. As well as keeping the IO events in a rotating buffer, the tracer can be configured
              to display the events as they occur.

              Note  that  since  clock  cycles don't advance while the CPU isn't running, this peripheral can be
              used to calculate execution times for blocks of code. This can be achieved by setting a breakpoint
              at the end of the code block, setting the program counter to the start of the code block, clearing
              the tracer and running the code. After the breakpoint is reached, the information displayed by the
              tracer will contain a count of MCLK cycles elapsed during the last run.

              The configuration parameters for this device class are:

              verbose
                     Start displaying IO events as they occur, as well as recording them in the rotating buffer.

              quiet  Stop displaying IO events as they occur, and just record them in the buffer.

              trigger irq
                     Signal  an  interrupt request to the CPU. This request will remain raised until accepted by
                     the CPU or cleared by the user.

              untrigger
                     Clear a signalled interrupt request.

              clear  Reset the clock cycle and instruction counts to 0, and clear the IO event history.

       wdt    This peripheral simulates the Watchdog Timer+, which can be used in software either as a  watchdog
              or as an interval timer. It has no constructor arguments.

              The  simulated state of the NMI/RST# pin can be controlled through a configuration parameter. Note
              that if this pin state is held low with the pin mode selected as a reset (the  default),  the  CPU
              will not run.

              The  extended  information  for  this  peripheral  shows all register states, including the hidden
              counter register. Configuration parameters are:

              nmi state
                     Set the NMI/RST# pin state. The argument should be zero to indicate a low state or non-zero
                     for a high state.

              irq irq
                     Select the interrupt vector for interval timer mode. The default is to use interrupt vector
                     10.

ADDRESS EXPRESSIONS

       Any command which accepts a memory address, length or register value as  an  argument  may  be  given  an
       address expression. An address expression consists of an algebraic combination of values.

       An address value can be one of the following:
              A symbol name
              A CPU register name preceded with "@"
              A hex value preceded with the specifier "0x"
              A decimal value preceded with the specifier "0d"
              A  number  in  the  default  input  radix  (without  a  specifier). See the option iradix for more
              information.

       The operators recognised are the usual algebraic operators: +, -, *, /, %, ( and ).  Operator  precedence
       is the same as in C-like languages, and the - operator may be used as a unary negation operator.

       The following are all valid examples of address expressions:

       2+2
       table_start + (elem_size + elem_pad)*4
       main+0x3f
       __bss_end-__bss_start
       @sp

OPTIONS

       MSPDebug's behaviour can be configured via the following variables:

       color (boolean)
              If true, MSPDebug will colorize debugging output.

       fet_block_size (numeric)
              Change  the  size  of the buffer used to transfer memory to and from the FET. Increasing the value
              from the default of 64 will improve transfer speed, but may cause problems with some chips.

       enable_bsl_access (boolean)
              If set, some drivers will allow erase/program access to flash BSL memory.  If  in  doubt,  do  not
              enable this.

       enable_locked_flash_access (boolean)
              If  set,  some  drivers will allow erase/program access to the info A segment. If in doubt, do not
              enable this. Currently, the tilib and uif drivers are affected by this option.

       enable_fuse_blow
              If set, some drivers will allow the JTAG security fuse to be blown.

              WARNING: this is an irreversible operation!

              If in doubt, do not enable this option.

       gdb_default_port (numeric)
              This option controls the default TCP port for the GDB server, if no argument is given to the "gdb"
              command.

       gdb_loop (boolean)
              Automatically  restart  the  GDB  server  after disconnection. If this option is set, then the GDB
              server keeps running until an error occurs, or the user interrupts with Ctrl+C.

       gdbc_xfer_size (numeric)
              Maximum size of memory transfers for the GDB client. Increasing this value will result  in  faster
              transfers, but may cause problems with some servers.

       iradix (numeric)
              Default  input  radix  for  address  expressions. For address values with no radix specifier, this
              value gives the input radix, which is 10 (decimal) by default.

       quiet (boolean)
              If set, MSPDebug will supress most of its debug-related output. This option defaults to false, but
              can be set true on start-up using the -q command-line option.

ENVIRONMENT

       MSPDEBUG_TI3410_FW
              Specifies  the location of TI3410 firmware, for raw USB access to FET430UIF or eZ430 devices. This
              variable should contain the path to an Intel HEX file containing suitable firmware for the TI3410.

FILES

       ~/.mspdebug
              File containing commands to be executed on startup.

       ti_3410.fw.ihex
              Firmware image for the TI3410 USB interface chip. This file is only required for raw USB access to
              FET430UIF or eZ430 devices.

SEE ALSO

       nm(1), gdb(1), objcopy(1)

BUGS

       If  you  find  any  bugs,  you should report them to the author at dlbeer@gmail.com. It would help if you
       could include a transcript of an MSPDebug session illustrating the  program,  as  well  as  any  relevant
       binaries or other files.

       Copyright (C) 2009-2013 Daniel Beer <dlbeer@gmail.com>

       MSPDebug  is  free  software, distributed under the terms of the GNU General Public license (version 2 or
       later). See the file COPYING included with the source code for more details.