I consider firmware programs should be as small as possible. In the bootloader case all the hard work can be moved to PC software, allowing a wider range of options and easier upgrades to the software, while the firmware should implement only the basic functions, with no need for upgrades.
? | help |
ontop | keep the window on top of the others |
logdetails | lists detailed stuff happening inside (used only for debugging) |
clearallflash | clears all flash except the bootloader (actually it fills all flash with FFh) |
baud <newbaud> | good if another baud rate is desired. eg: baud 9600 |
writeeeprom <addr> <dat> | writes the byte <dat> at the address <addr> (numbers can be
either dec or hex) eg: writeeeprom 0 b6h - writes B6h in the first eeprom location |
writeconfig <adrLow> <dat> | only for 18F; writes the configuration byte <dat> at the
address 300000h+<addrLow> eg: writeconfig 3 FFh - activates WDT |
PIC16F | PIC18F |
---|---|
org 0 clrf STATUS clrf PCLATH goto Main |
org 0 goto Main |
All critics and suggestions are welcome at:
A bootloader is a program that stays in the microcontroller and communicates
with the PC (usually through the serial interface). The bootlader receives a
user program from the PC and writes it in the flash memory, then launches this
program in execution. Bootloaders can only be used with those microcontrollers
that can write their eeprom through software. The bootloader itself must be
written into the flash memory with an external burner. In order for the
bootloader to be launched after each reset, a "goto bootloader" instruction must
exist somewhere in the first 4 instructions; it is the job of the bootloader to
reallocate the first 4 instructions of the user program to another location and
execute them when the bootloader exits.
(Some of the) Available bootloaders (as reported by Google) in May, 2003:
Bootloader Name / Author | Supported models | Size(words) | Comments |
---|---|---|---|
From Microchip |
16F,18F | 1000 | uses Hyperterminal to upload hex files |
From MicrochipC |
16F,16F*A,18F | 256/2000 | +ok |
WLoader Wouter van Ooijen |
16f877 | 1000 | +does not use the UART, +the serial interface use only one I/O pin |
ZPL Wouter van Ooijen |
18F |
384 |
+unusual method using mclr: uses zero I/O pins ! |
KarlLunt |
16f87x | 512 | -activation on input pin -derived from Microchip boot877.asm (uses Hyperterminal) |
PICLOADER Rick Farmer |
PIC16F87x | 2000 | -program must start at 0x3; +password (uses Hyperterminal) |
bootload |
PIC16F877 | 800 | -written in C -command line DOS program |
theByteFactory |
16F877 | 1000 | -written in C (uses Hyperterminal) |
Jolt Martin Dubuc |
18F | 256 | -user code and interrupt vectors need to be relocated; Java GUI, +auto detect baud |
? HI-TECH Software |
16F87x | 256 | -written in C |
PIC downloader Petr Kolomaznik |
16F876 | 256 | -is rewritten and modified from HI-TECH +Windows interface |
Ivar Johnsrud |
18Fxx2/18Fxx8 | 360 | -bootloader based on HiTech's -downloader based on Petr Kolomaznik's |
B
Bootloader |
PIC16F87x, PIC16F87xA | 340 | -called only by user application -written in C +Linux uploader |
SGupta |
16f876 | 256 | |
I put mine here, for comparison: | |||
Tiny | 16F*A, 18F | 100 | +details above |