I was wondering what does a boot-loader do, there is one USB Bootloader for the PIC micro-controller and I was wondering as to what its purpose is. How is it different from creating some HID device from the PIC for example? Surely there is no OS running on the PIC than whats the whole point of this "bootloader"?
1 Answer
The bootloader lets you reprogram the PIC from the USB port, taking advantage of the ability of the controller to write into its own program memory. Usually, it checks to see if some criteria is met, like some bit being set high, before entering the programming mode. It will shift your program into higher memory space to accommodate the boot loading protocol at the normal start vector.
This is the way to go if you see a need for something like an end-user updating the firmware on your device without special programming hardware.
Serial port boot loaders are a bit easier to learn, as you don't have to deal with the USB stack.
-
\$\begingroup\$ On the other hand, there's a standard USB protocol for firmware updates (DFU). Too bad most bootloaders ignore it (for instance TI use HID) or get it subtly different (Atmel). \$\endgroup\$ Commented Mar 26, 2013 at 7:09
-
\$\begingroup\$ Can you point us to a stack for this firmware update standard on the PIC? That would be a great resource. \$\endgroup\$ Commented Mar 26, 2013 at 10:40
-
\$\begingroup\$ usb.org/developers/devclass_docs/usbdfu10.pdf -- found the USB class for DFU. \$\endgroup\$ Commented Mar 26, 2013 at 12:19