Cowboy Boot Loader

cowboy-bl.jpg

Cowboy boot loader is a boot loader that supports loading firmware on enhanced PIC12/PIC16 microcontrollers via either a hardware or software UART.

The loader application has been written for POSIX implementations only.

For the UART interface any of a number of serial interfaces may be used which includes bluetooth devices such as the HC-05.

Devices

At this time 208 devices are thought to be supported and here is a list of devices which have been tested during the production of this boot loader.

pic12f1572
pic12f1822
pic12f1840
pic12lf1572
pic16f1454
pic16f1455
pic16f1459
pic16f1507
pic16f1516
pic16f15355
pic16f1578
pic16f1708
pic16f1764
pic16f1776
pic16f1788
pic16f1825
pic16f18313
pic16f18346
pic16f1847
pic16f18875
pic16f1936
pic16lf1559
pic16lf1566
pic16lf1716
pic16lf18313

The pic16f1507 only supports software UART.

Licence

Cowboy Boot Loader is licensed under the GPL version 3.

Credits and Thanks

Cowboy Boot Loader has been developed by Darron M Broad and is a port of Wellington boot loader developed by Darron M Broad with contributions from Gerhard Bertelsmann.

I am grateful to Chiculita Claudiu for Tiny PIC Bootloader as Cowboy Boot Loader uses a protocol derived from Tiny PIC bootloader.

Checkout

Cowboy boot loader is obtained using mercurial.

hg clone http://hg.kewl.org/pub/cowboy
cd cowboy

Configure

Configuring Cowboy 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

Program

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.

p14 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.

Upload

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.