Catalog

USB training: Bootloader

Purpose of the USB Bootloader project

This project will guide you into the creation and development of a USB bootloader. It will be using the LibUSB driver and library to communicate with the PIC. This allows for very simple descriptors, and the use of an up to date, well documented and cross-platform API.
This project will teach the various aspects and tricks of programming the flash memory. Example applications will be provided. Each of them can serve as a base for future applications.

How great will it look? What will the Bootloader do?

The Bootloader will look good! Progress bars, status descriptions and intuitive UIs will are provided, along with the code explanations. It is a fully functional bootloader, that has encoding and CRC checking capacities, and is fully modular.
The great value of this bootloader is that the end user will never have an easily readable code in his hands, since the file that will be loaded into the device is encrypted until the very last moment. Along with the MCU code protection capabilities, it will protect your intellectual property quite well against most common attacks.
Even with this type of protection though, your application can still fully use the PIC interrupts, thanks to a completely rerouted easy to update interrupt MAP.

All in all, in your current applications, what is left to do is rename and declare interrupt routines adding a prefix and that is all, the other files are either generated or not application-dependent.

What do I need to know before I start?

For the USB Bootloader project, you will need a standard comprehension of Qt. I will not come back on what has been done with LibUSB either, so an understanding of the LibUSB tutorial is a plus. All that is left to do for me is explain the choices that have to be made to create a USB Bootloader, how to implement them and eventually how to use them. The bootloader itself will be entirely described, including the coding parts, so no knowledge on your side is needed for this part.