Summary of Tiny PIC bootloader using PIC16F microcontroller
The Tiny Bootloader is an extremely compact bootloader for Microchip PIC microcontrollers, using less than 100 words of program space. It supports PIC16F, PIC18F, and dsPIC30 series that allow self-programming but not PIC24, dsPIC33, or PIC18xxJyy. The firmware can program flash, EEPROM, and configuration bytes, waiting 1 second after reset for PC communication before running the user app. The PC software auto-detects device and HEX files, supports retransmission, custom COM ports, and baud rates. Multiple PIC models are supported and tested for reliable firmware uploading.
Parts used in the Tiny Bootloader:
- Microchip PIC16F series microcontroller (e.g., PIC16F876A, PIC16F887)
- Microchip PIC18F series microcontroller (e.g., PIC18F252, PIC18F2550, PIC18F4580)
- Microchip dsPIC30 series microcontroller (e.g., dsPIC30F3011, dsPIC30F6014)
- PC or laptop running the Tiny PIC Bootloader software
- RS232 or USB communication interface (depending on PIC model)
- Programming hardware to connect PC with PIC microcontroller
Tiny Bootloader
This is a bootloader for the Microchip PIC microcontrollers.
- It is the smallest bootloader, taking less than 100 words of program space;
- Supports families of PIC devices: 16F, 18F, dsPIC30 (those devices that support self-programming)
- Does not support yet PIC24, dsPIC33, PIC18xxJyy
Features of the firmware
- Size of only 100 words; (all versions, for 16F,18F,dsPIC occupy less than 100 words);
- Can write flash, eeprom and configuration bytes(18F);
- On reset, waits 1 second (adjustable) for a message from the PC, if not received, launch user application;
- The .asm file can be easily modified and adapted for any frequency (or baudrate);
Features of the PC software
- Can upload programs into flash (in current version eeprom and cfg bytes can be modified only manually, depending on the device type);
- Works with PIC16F,PIC18F and dsPIC types; automatically detects HEX content and PIC model;
- Remembers last settings;
- In case of errors, performs retransmissions or tries to resynchronize with pic;
- The communication settings are editable so you can write any COM number or desired baud;
- If a filename is specified as a command line parameter, it will automatically try to write it;
Supported/Tested Devices
Device | Devices of the same type | Flash | ram | EE | ser | adc | osc | pin | ||
PIC 16F Family | ||||||||||
PIC16F876 | 877, 873, 874 | |||||||||
PIC16F876A | 877A, 873A, 874A | 8k | .3 | .2 | 1 | y | dD | |||
PIC16F887 | PIC16F886 | |||||||||
PIC16F88 | 87 | 4k | .3 | .2 | 1 | y | y | d | ||
PIC 18F Family | ||||||||||
PIC18F252 | 452, 242, 442; 2420, 2520, 4420, 4520 | 16k | 1.5k | .2 | 1a | y | dD | |||
PIC18F258 | 458, 248, 448; 2480, 2580, 4480, 4580 | 16k | 1.5k | .2 | 1a | y | dD | CAN | ||
PIC18F2620 | 4620, 2525, 4525 | 32k | 3.9k | 1k | 1e | y | y | dD | ||
PIC18F1320 | 1220, 2220, 2320 | 4k | .2 | .2 | 1e | y | y | d | ||
PIC18F8720 | 6520, 8520, 6620, 8620, 6720; 6621 | 64k | 3.8k | 1k | 2 | y | Q | ext.mem. | ||
PIC18F2550 | 4550, 2455, 4455 | 16k | 1.5k | .2 | 1e | y | Y | dD | usb | |
PIC18F4431 | 2331, 2431, 4331 | 8k | .7 | .2 | 1e | Y | dD | advPWM | ||
PIC18F4680 | 2585,2680,4585 | 32k | 3.3 | 1k | 1 | y | dD | ECAN | ||
PIC18F4580 | 2480,2580,4480 | 16k | 1.5 | .2 | 1 | y | dD | ECAN | ||
PIC18F4620 | 2525,2620,4525 | 32k | 3.9 | 1 | 1 | y | dD | |||
PIC18F4320 | 2220,2320,4220 | 4k | .5 | .2 | 1 | y | dD | |||
dsPIC Family | ||||||||||
Device | Devices of the same type | Flash | ram | EE | ser | adc | osc | pin | ||
dsPIC20F2010 | 4k | .5 | 1k | 1 | y | y | d | 6pwm | ||
dsPIC30F6014 | 6012, 6013, 6011, 6012A | 44k | 8k | 4k | 2 | yy | y | Q | 2CAN | |
dsPIC30F3013 | 3012, 2012, 2011 | 8k | 2k | 1k | (2) | yy | YY | d | ||
dsPIC30F4012 | 4011 | 16k | 2k | 1k | (2) | y | Y | dD | 6pwm, CAN | |
dsPIC30F3011 | 3010 | 8k | 1k | 1k | (2) | y | Y | dD | 6pwm | |
dsPIC30F6010 | 44k | 8k | 4k | 2 | y | y | Q | 8pwm, 2CAN | ||
blue – tested for longer periods blue – verified (or user source provided) navy – reported to work (may require modifications!) | Flash, RAM, EEprom: max. amount ser: a=addr.; e=enh.(brg/lin) adc: yy=12bit osc: internal+features pin: d<=dip28; D=dip40; Q>=tqfp |
For more detail: Tiny PIC bootloader using PIC16F microcontroller