Wellington boot loader is a boot loader that supports loading firmware on PIC18 micro-controllers either via UART or the CAN bus.
The loader application has been written for POSIX implementations only, and for CAN bus, only with Linux SocketCAN.
For the UART interface any of a number of serial interfaces may be used which includes bluetooth devices such as the HC-05.
At this time 192 devices are thought to be supported and here is a list of devices which have been tested during the production of this boot loader.
pic18f13k50 pic18f25k22 pic18f25k50 pic18f26j50 pic18f26k20 pic18f26k40 |
pic18f26k80 pic18f4520 pic18f4550 pic18f4620 pic18f4685 |
The pic18f26k80 and pic18f4685 support both serial and CAN Bus.
Wellington Boot Loader is licensed under the GPL version 3.
Wellington Boot Loader is developed by Darron M Broad with contributions from Gerhard Bertelsmann.
I am grateful to Chiculita Claudiu for Tiny PIC Bootloader as Wellington Boot Loader uses a protocol derived from Tiny PIC bootloader.
Wellington boot loader is obtained using mercurial.
hg clone http://hg.kewl.org/pub/wellington cd wellington
Configuring Wellington is a simple case of copying a template file for the target device and editing it to suit the target application.
cd boot cp template.asm myproject.asm vi myproject.asm
Follow the guide given in the template to create the correct boot loader firmware for your target then build the boot loader. GPUtils must be installed to perform this operation.
make
Now you must program the boot loader onto the target device. This will depend on the programming tool you have available and in this example we use Pickle Microchip PIC ICSP.
p16 lvp program myproject.hex
Once the boot loader hex file is on the target it may be reset whereupon it will listen for a connection from `easy-loader' already installed on the host platform.
In this final step you now take the application for your target device and upload it to the boot loader which will store it in flash memory.
This process is documented on the Easy-loader page.