MSPDebug
Docs/
Hacking/

Manual

mspdebug(1)                                                        mspdebug(1)



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  break-
       point).

       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  com-
       mands  are specified on the end of the command-line, then they are exe-
       cuted 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  ~/.mspde-
              bug). 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 recog-
              nised by MSPDebug as one of the given  type  during  initializa-
              tion.  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 dis-
              connecting.  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 initializa-
              tion. 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.

DRIVERS
       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 sim-
              ulation  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 cur-
              rent  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 sup-
              ported.

              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.

       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. Currently, this
              driver is only supported for Linux. A parallel port device  must
              be specified via the -d option.

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.

       = 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 con-
              tain 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).

       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 refer-
              enced in the given range of memory. If a particular function  is
              specified,  then  details  for  that  node of the graph are dis-
              played. 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  contin-
              ues  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 argu-
              ment "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  pat-
              tern 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-inter-
              actively, 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  overwrit-
              ten.  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 speci-
              fying 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 uncondi-
                     tional 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 desti-
                     nation  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 dou-
                     ble-operand instructions.

              dstreg register
                     Match instructions using the specified  register  in  the
                     destination  operand.   This option implies that no-argu-
                     ment 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  instruc-
                     tions.

              dstmode mode
                     Match instructions using the specified mode in the desti-
                     nation 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  mem-
              ory 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  expres-
              sions.  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  contin-
              ues  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.

              Unless used in the simulation mode, this  command  can  only  be
              used for programming flash memory.

       opt [name] [value]
              Query, set or list option variables. MSPDebug's behaviour can be
              configured using option variables, described below in  the  sec-
              tion 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 dis-
              plays 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  granu-
              larity  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 auto-
              matically 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 break-
              point, 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 overwrit-
              ten.

       set register value
              Alter the value of a register. Registers are specified  as  num-
              bers  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 simula-
              tor, 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 documenta-
              tion  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 sym-
              bols 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 mem-
              ory. 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  dif-
       ferent  set  of  constructor  arguments,  configuration  parameters and
       information which may be displayed. This section describes  the  opera-
       tion of the available device classes in detail.

       In  the  list  below, each device class is listed, followed by its con-
       structor arguments.

       gpio   Digital IO port simulator. This device simulates any of the dig-
              ital ports with or without interrupt capability. It has the fol-
              lowing 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 specify-
                     ing 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  num-
              ber 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  simu-
                     lated.

              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 config-
                     uration  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  con-
              structor).  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 informa-
              tion 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 may be either a symbol name, a hex value preceded with
       the specifier "0x", a decimal value preceded with the  specifier  "0d",
       or  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

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.

       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 prob-
              lems 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
       Copyright (C) 2009-2013 Daniel Beer <dlbeer@gmail.com>

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



Version 0.22                      18 Jul 2013                      mspdebug(1)