This is a loader for the Parallax Propeller
It supports loading over a serial link or a WiFi connection to a Parallax WiFi module on the Propeller Activity Board WX.
PropLoader v1.0-43 (2018-12-01 13:55:21 g7445ae2) usage: proploader [options] [<file>] options: -b <type> select target board and subtype (default is 'default:default') -c display numeric message codes -D var=value define a board configuration variable -e program eeprom (and halt, unless combined with -r) -f <file> write a file to the SD card -i <ip-addr> IP address of the Parallax Wi-Fi module -I <path> add a directory to the include path -n <name> set the name of a Parallax Wi-Fi module -p <port> serial port -P show all serial ports -r run program after downloading (useful with -e) -R reset the Propeller -s do a serial download -t enter terminal mode after the load is complete -T enter pst-compatible terminal mode after the load is complete -v enable verbose debugging output -W show all discovered wifi modules -? display a usage message and exit file: binary file to load (.elf or .binary) Target board type can be either a single identifier like 'propboe' in which case the subtype defaults to 'default' or it can be of the form <type>:<subtype> like 'c3:ram'. Module names should only include the characters A-Z, a-z, 0-9, or '-' and should not begin or end with a '-'. They must also be less than 32 characters long. Variables that can be set with -D are: Used by the loader: loader reset clkfreq clkmode fast-loader-clkfreq fastloader-clkmode baudrate loader-baud-rate fast-loader-baud-rate Used by the SD file writer: sdspi-do sdspi-clk sdspi-di sdspi-cs sdspi-clr sdspi-inc sdspi-start sdspi-width spdspi-addr sdspi-config1 sdspi-config2 Value expressions for -D can include: rcfast rcslow xinput xtal1 xtal2 xtal3 pll1x pll2x pll4x pll8x pll16x k m mhz true false an integer or two operands with a binary operator + - * / % & | or unary + or - or a parenthesized expression. Examples: loader=rom to use the ROM loader instead of the fast loader
The C++ code should be mostly generic. The platform-specific code is in the C files sock_posix.c and serial_posix.c. Those will have to be rewritten to work on a different platform or under a different framework like Qt. If necessary, those interfaces could also be C++. I left them as C for now because they matched my original code better.
The files sock.h and serial.h show the interfaces needed to support another platform. I can easily provide a Windows version of these files to cover running the loader under Linux, Mac, and Windows. The xxx_posix.c files support both Linux and the Mac.
In addition to a standard C++ toolset you also need to install OpenSpin and have it in your path.
To build the Windows version under Linux you will need the MinGW toolchain installed. Then type:
Output files are placed:
Macintosh: ../proploader-macosx-build/bin Linux: ../proploader-linux-build/bin Windows: ../proploader-msys-build/bin
To build the C test programs you also need PropGCC installed an in your path.