View Full Version : Serial Bootloader Object

Chad George
01-09-2008, 05:45 AM
A standard 3 wire serial bootloader has been discussed before, but to my knowledge hasn't actually been implemented.
Until now...

I'm releasing a *very* alpha version of a High Speed (1.5Mbit/sec) Bootloader Object and an associated python file that can send a .binary or .eeprom file to the propeller over a serial port.

I'm not 100% convinced that everything works right yet so I'd like to get feedback on your experiences and comments. Particularly there seems to be something wrong with restarting the SPIN interpreter after loading to RAM, although I'm pretty sure that the load to EEPROM works correctly.

Here is an overview of the objects capabilities:

The object allows all of the following operations to be completely controlled from the external serial connection:
- Write to RAM
- Read from RAM
- Synchronized read from RAM (using locks)
- Copy from RAM to EEPROM
- Copy from EEPROM to RAM
- Write to EEPROM
- Read from EEPROM
- Write to circular buffer (optional wait on overflow)
- Read from circular buffer (optional wait on underflow)
- Block copy between 2 RAM locations

Additionally the following control functions can be initiated externally:
- Stop all other running cogs
- Reload spin interpreter
- Reset propeller

A simple driver for a logic analyzer is also provided
- Monitor any 8 continuous pins at 6.5uSec / sample
- Monitor all 32 pins at any interval greater than 30uSec /sample
- Sampling can wait for edge or level triggers
- Sampling and Triggers can be cancelled externally

The only external tool I have written so far implements a bootloader although most of the other functionality is available for use.
The logic analyzer code hasn't been tested yet. It was included to make sure everything fit as the whole object is pretty close to the limit.

The latest version of the Serial Bootloader and other tools will always be available here.