89 lines
3.5 KiB
Markdown
89 lines
3.5 KiB
Markdown
|
# MSP430 Example
|
||
|
|
||
|
This example was designed to be used with the MSP430F5359/MSP430F5659 but can be ported to any similar MSP platform. It will take ~50KB of ROM space and a 8KB of statically allocated RAM (nearly half for constants).
|
||
|
|
||
|
The example runs at 8MHz and executes a benchmark of ECC key generations, shared secrets and 1KB ChaCha20/Poly1305 encryption.
|
||
|
|
||
|
At 8MHz the ECC steps will take 13-15 seconds each and 1000 iterations of ChaCha20/Poly1305 will take about 45 seconds.
|
||
|
|
||
|
## Hardware Setup
|
||
|
|
||
|
A basic development board / ISP combination will work fine, such as the MSP-TS430PZ100 series with the MSP-FET430 series programmer.
|
||
|
|
||
|
The example will output text via UART 1, on the MSP430 which is port 8 bits 2&3 (pins 60/61) on the MSP430F5359. The UART will run at 57600 baud.
|
||
|
|
||
|
In addition every second port 1 bit 1 will be toggled on/off (typically an LED would be here).
|
||
|
|
||
|
## IDE setup
|
||
|
|
||
|
When setting up the IDE, copy the wolfSSL source code to your project's directory and add all the .c and .h files from `wolfcrypt/src` to your project.
|
||
|
|
||
|
Use the `main.c` provided here and copy the `user_settings.h` file to the `wolfssl/wolfcrypt` subdirectory of wolfSSL.
|
||
|
|
||
|
You will need to set at least 700 bytes of stack, no heap is required. You will also need to change the "Library Configuration" to "Full DLIB" so the `printf()` functions work correctly.
|
||
|
|
||
|
Make sure to add the definition `WOLFSSL_USER_SETTINGS` to the preprocessor settings in your project to that `user_settings.h` is loaded in. You will also need to add the wolfSSL root directory to the "Additional include directories".
|
||
|
|
||
|
From here you can set any optimizer settings you need.
|
||
|
|
||
|
## MSP430 GCC Makefile
|
||
|
|
||
|
Also included is a `Makefile` for TI's GCC, when compiling with GCC the code size will be larger and the application will be ~2x slower.
|
||
|
|
||
|
To use this Makefile you will need [TI's MSP430 GCC](https://www.ti.com/tool/MSP430-GCC-OPENSOURCE) installed as well as `mspdebug` with the `libmsp430.so` accessible to it. You will need to edit the `Makefile` to set the `TI_COMPILER_PATH` to where you have installed this.
|
||
|
|
||
|
Once everything is in place you can run `make` to build it and `make install` to flash the MSP430 with it.
|
||
|
|
||
|
**Note**: this will not work with the much older version of MSP430 GCC that comes in Linux distribution repositories.
|
||
|
|
||
|
## Example Output
|
||
|
|
||
|
This is an example output for the demo application when compiled with IAR.
|
||
|
|
||
|
```
|
||
|
START!
|
||
|
Rand generated: 2317
|
||
|
Rand generated: -31901
|
||
|
Rand generated: 13538
|
||
|
Rand generated: -24035
|
||
|
Rand generated: 18849
|
||
|
Rand generated: -1593
|
||
|
Rand generated: 29653
|
||
|
Rand generated: -8148
|
||
|
Rand generated: -27438
|
||
|
Rand generated: 618
|
||
|
Rand generated: -17119
|
||
|
Rand generated: 4668
|
||
|
Rand generated: -26289
|
||
|
Rand generated: 28126
|
||
|
Rand generated: -15749
|
||
|
Rand generated: 22041
|
||
|
Rand generated: 8710
|
||
|
Rand generated: -22039
|
||
|
Rand generated: 1781
|
||
|
Rand generated: -32168
|
||
|
Rand generated: 6187
|
||
|
Rand generated: -7650
|
||
|
Rand generated: 30268
|
||
|
Rand generated: -13585
|
||
|
Rand generated: 24388
|
||
|
Rand generated: 8520
|
||
|
RNG init
|
||
|
Alice init
|
||
|
Bob init
|
||
|
.............Alice keygen 13 seconds
|
||
|
..............Bob keygen 14 seconds
|
||
|
.............Bob secret 13 seconds
|
||
|
..............Alice secret 14 seconds
|
||
|
Successfully generated a common secret
|
||
|
Alices' Secret: 85f3c7f599620c768e6dbb77dc2f8f764254cc1821aeb0a30503632dbc9bdb54
|
||
|
Bobs' Secret: 85f3c7f599620c768e6dbb77dc2f8f764254cc1821aeb0a30503632dbc9bdb54
|
||
|
ChaCha20/Poly1305 Encryption Start, 1000 iterations, 1024 bytes
|
||
|
............................................
|
||
|
End 44 seconds
|
||
|
ChaCha20/Poly1305 Decryption Start, 1000 iterations
|
||
|
............................................
|
||
|
End 44 seconds
|
||
|
end
|
||
|
```
|