Here you can download all the
utilities related to the BOOTLOADER.
Although the concept might
seem a little mind-twisting at first, the basic principle of a bootloader is
simple.
When the microcontroller is
reset, it begins to execute the code in the protected block. If it does not
detect a predetermined hardware event within a certain time (a pull-up or
pull-down on a given point, a certain bit sequence from the USART that matches a
value in data EEPROM, etc.), it does a one-way jump to the main area of program
memory and begins to execute the normal application code.
If the event is detected,
however, it goes to its central bootloading routine. This involves receiving
data from a serial channel like the USART, verifying its integrity and writing
it to the appropriate memory space using the appropriate commands.
Once the routine is done, the
device is reset and can now execute the new application code. The only thing
that does not change is the bootloader itself, which resides in a write
protected memory space.
Bootloaders are best
implemented in the PIC18F family of devices, which offer all three of the
necessary features discussed above, as well as a wide selection of serial
communication options. They can also be implemented in PIC16F mid-range
controllers with self-programmable memory arrays; the best example is the
PIC16F87XA family, which implements a boot block at the top of program memory.