MSP-EXP430F5529LP
From MAGEEC
Contents
Platform details
Processor | MSP430F5529 |
Architecture | MSP430 |
Instruction sets | MSP430 |
Memory | 128kB Flash, 8kB RAM |
Hardware modifications
None necessary, attach probes to the 3V3 jumper.
Software setup
udev rules
$ cat /etc/udev/rules.d/62-msp-exp430f5529lp.rules ATTRS{idVendor}=="2047", ATTRS{idProduct}=="0013", MODE="0666", GROUP="plugdev"
GDB server
To build:
$ git clone git://git.code.sf.net/p/mspdebug/code mspdebug $ cd mspdebug $ make
To run:
$ ./mspdebug ezfet gdb
This starts a gdb server on port 2000, however doesn't seem to allow flashing of the device (although you can debug, and step through programs).
$ wget http://www-s.ti.com/sc/techzip/slac460.zip $ unzip slac460.zip $ cd MSPDebugStack_OS_Package $ wget http://mspdebug.sourceforge.net/misc/slac460f_unix.diff $ patch -p1 <slac460f_unix.diff
$ cd ThirdParty $ chmod +x install_thirdparty.sh $ ./install_thirdparty.sh
$ cd .. $ make $ sudo make install
This creates libmsp430.so, which allows the tilib driver of mspdebug to be used. This seems to be able to successfully flash the board.
$ ./mspdebug tilib gdb
Toolchain
$ apt-get install gcc-msp430 msp430mcu gdb-msp430
The C library can be installed from the package msp430-libc. However this is missing several functions. If trying to run BEEBS on the board then the required version of pow is missing from the library. The following steps patch the library:
$ git clone git://mspgcc.git.sourceforge.net/gitroot/mspgcc/msp430-libc $ cd msp430-libc $ git checkout release/20120224 $ [Put patch file listed below into msp430_libc_patch] $ patch -p1 < msp430_libc_patch $ ./configure $ cd src $ make $ sudo make PREFIX=/usr install
Patch file:
diff --git a/src/libm/ef_pow.c b/src/libm/ef_pow.c index 9a21339..03dc0ff 100644 --- a/src/libm/ef_pow.c +++ b/src/libm/ef_pow.c @@ -257,3 +257,16 @@ float powf(float x, float y) else SET_FLOAT_WORD(z,j); return s*z; } + +#ifdef _DOUBLE_IS_32BITS + +#ifdef __STDC__ + double pow(double x, double y) +#else + double pow(x, y) + double x, y; +#endif +{ + return (double) powf((float) x, (float) y); +} +#endif