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 9600 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#defineDescriptionStatus
0x00MONITORLocal Memory MonitorBeta
0x01SPISPI AdapterBeta
0x02I2CI2C AdapterPre-Alpha
0x10JTAGStandard JTAGBeta
0x11JTAG430MSP430 JTAGAlpha
0x30ChipconChipcon 8051 DebuggingPre-Alpha
0x31SIFCambridge SIF (EM2xx) Debugging
0x32AVRAtmel AVR
0x71GLITCHGlitching

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#defineDescription
0x00READRead data.
0x01WRITEWrite data.
0x02PEEKRead from address.
0x03POKEWrite to address.
0x10SETUPConfigure I/O pins.
0x20STARTStart a transaction.
0x21STOPStop a transaction.
0x30CALLCall Address
0x31EXECExecute Arbitrary Code Fragment
0x7ENOKNo Operation
0x7FOKNo Operation

Further Information

For further development information, contact the developer directly. His address is <travis at radiantmachines.com>