Development Manual
Programming
The GoodFET is programmed by the MSP430's BootStrap Loader (BSL) which is adequately documented elsewhere. Using the GoodFET's fork of the TinyOS BSL client, an image may be programmed by
goodfet.bsl -e -p foo.hex
Serial Port
To minimize parts count, the DTR line, which is connected to the !RST pin of the MSP430, is not inverted by hardware. The DTR line--Data Terminal Ready--is usually high when a terminal application is connected, low when one is not. Unless this behavior is overridden, the GoodFET will run until a client connects, then idle in a reset until the client disconnects.
Standard Protocol
Most of the GoodFET applications will use this standard protocol, which has been composed so as to allow multiple applications to be compiled together.
The baud rate is 115200 8/N/1 by default, but this may be made faster by sending the appropriate command.
Transactions
The workstation may send {u8 app, u8 verb, u16 count}. If count is non-zero, then count bytes of data follow. The target will reply with {u8 app, u8 verb, u16 count} and data. N.B., count was u8 until October 5, 2009.
The GoodFET will announce that it is ready for a command by transmitting {0x00, 0x7F, 0x00, 0x00}, which is the "OK" message from the Monitor application.
Apps
The following table lists many application reservation codes.
Hex | #define | Description | Status |
---|---|---|---|
0x00 | MONITOR | Local Memory Monitor | Beta |
0x01 | SPI | SPI Adapter | Beta |
0x02 | I2C | I2C Adapter | Pre-Alpha |
0x10 | JTAG | Standard JTAG | Beta |
0x11 | JTAG430X2 | MSP430 JTAG | Alpha |
0x12 | EJTAG | MIPS EJTAG | Pre-Alpha |
0x13 | JTAGARM7TDMI | Intel XScale JTAG | Pre-Alpha |
0x14 | ADIv5 | ADIv5 | Pre-Alpha |
0x15 | JTAGXScale | Intel XScale JTAG | Pre-Alpha |
0x16 | JTAG430 | MSP430 JTAG (Classic Only) | Beta |
0x17 | JTAG430 | MSP430 SBW (Classic Only) | Pre-Alpha |
0x30 | Chipcon | Chipcon 8051 | Pre-Alpha |
0x31 | SIF | Cambridge SIF (EM2xx) Debugging | |
0x32 | AVR | Atmel AVR | |
0x33 | JTAGARM7TDMI | ARM7 TDMI | |
0x34 | PIC | PIC | |
0x40 | MaxUSB | MaxUSB | |
0x50 | NRF | Nordic RF SPI | |
0x51 | ChipconSPI | Chipcon SPI | |
0x52 | ChipconCC2500 | Chipcon CC2500 | |
0x53 | ATMEL_RADIO | Atmega128rfa1 Radio | |
0x71 | GLITCH | Glitching | |
0x72 | PLUGIN | Plugin | |
0x73 | SMARTCARD | Smartcards and SIM Cards |
Standard Verbs
The following verbs are standardized across all applications. An application need not support all (or any) of them, but it must not use these codes for anything else. All application-specific commands ought to have the most significant bit set; that is, they must be >=0x80.
Hex | #define | Description |
---|---|---|
0x00 | READ | Read data. |
0x01 | WRITE | Write data. |
0x02 | PEEK | Read from address. |
0x03 | POKE | Write to address. |
0x10 | SETUP | Configure I/O pins. |
0x20 | START | Start a transaction. |
0x21 | STOP | Stop a transaction. |
0x30 | CALL | Call Address |
0x31 | EXEC | Execute Arbitrary Code Fragment |
0x7E | NOK | No Operation |
0x7F | OK | No Operation |