A simple example¶
msp430.asm.as reads source files (
*.S) and creates object
*.o4). Multiple object files are then linked together and a binary
is created that can be downloaded to the MCU.
; Test program for msp430.asm.as and msp430.asm.ld ; ; This one toggles the pin P1.1. This is like the LED flashing example that ; comes preprogrammed on some of the eval boards from TI. .text ; entry point after device reset RESET: mov #0x5a80, &0x120 ; disable WDT bis.b #1, &0x22 ; set pin to output ; loop toggling the pin and then doing a delay .L1: xor.b #1, &0x21 ; toggle pin mov #0xc350, R15 ; init delay loop .L2: dec R15 ; count down jnz .L2 ; jump while counter is not zero jmp .L1 ; loop the toggling part ; set the reset vector (and all the others) to the program start .section .vectors .word RESET, RESET, RESET, RESET, RESET, RESET, RESET, RESET .word RESET, RESET, RESET, RESET, RESET, RESET, RESET .word RESET ; reset vector
python -m msp430.asm.as led.S -o led.o4 python -m msp430.asm.ld --mcu MSP430G2211 led.o4 -o led.titext
There are several ways to get a program into a MSP430.
- Boot Strap Loader (BSL), Serial
Using a serial connection and some ROM code in the MSP430 it is possible to read and write memory, including Flash.
Not all devices support BSL (e.g. the smaller value line (G2) and F2 devices)
Command example (F1x, F2x, F4x):
python -m msp430.bsl.target -e led.titext
Command example (F5x, F6x):
python -m msp430.bsl5.uart -e led.titext
- Boot Strap Loader (BSL), USB HID
Some MSP430 have a built in USB controller and they also support downloading through USB.
python -m msp430.bsl5.hid -e led.titext
- JTAG, 4-wire
This interface gives access to the internals of the CPU so that it not only can be used to up and download memory, it is also possible to set breakpoints, single step and more debugging.
Some devices have shared GPIO pins, so that a TEST pin switches the function from normal IO pin to JTAG.
python -m msp430.jtag.target -e led.titext
- JTAG, spy-bi-wire
This is a variation of the JTAG interface that only requires two pins and does not occupy GPIO pins. The same signals as in a 4-wire connection are serialized and transmitted over these two lines. This means that the maximum speed of the spy-bi-wire interface is slower than the 4-wire interface.
Many new MSP430 support this interface (not F1, F4).
python -m msp430.jtag.target --spy-bi-wire -e led.titext
The python-msp430-tools also support downloading via remote-GDB-protocol. If a
GDB server is running (same machine or a different one),
can be used. GDB servers are msp430-gdbproxy or mspdebug
Notes for JTAG¶
- The MSP430.dll can be downloaded from TI.
With this installed, USB and parallel port adapters can be used with the
- Linux / Others
There is no (recent) MSP430.dll available.
USB JTAG adapters can be used with the tool mspdebug (also includes debug support).
Parallel port adapters can be used with MSP430mspgcc (no debug support).
Command example (Launchpad or ez430-rf2500 kits):
mspdebug rf2500 "prog led.titext" exit
Installing header files¶
The example above directly used the addresses of the peripheral modules - this
is not comfortable. It is easily possible to use the header files from TI as a C
cpp) is included, however the header files itself are not.
Downloading header files¶
A download and extraction script is located in the directory
msp430/asm/includes. When executed (
python fetch.py) it will download
msp430mcu archive from http://mspgcc.sf.net. Once downloaded, the files
are extracted to a subdirectory called
The include and include/upstream directories are part of the search path for cpp. Files in these directories are found automatically.
The file name that is downloaded is currently hard coded in the script. It may make sense to check the site online for newer files.
Using the msp430mcu package¶
On many GNU/Linux systems it is possible to install the package
though the systems package management.
The header files from the package are currently not found automatically.
The user has to provide the location with the
-I parameter of cpp.
A number of examples can be found in the
examples/asm directory of the