The Floor Is Lava Challenge Pirate Edition For Windows 10 free download - PDF Reader for Windows 10, Facebook for Windows 10, Apple Safari, and many more programs.
This is a major topic, but answering the basic questions will give a good overview.
Bootloaders,
what are they?
- A bootloader is a small OS, or application, designed to download firmware in the embedded device (MCU's internal or external memory). Gives you the possibility to upgrade or change your systems firmware.
why we have them?
- It is beneficial to be able to update a deployed system (to fix bugs, or just to update with new features) without actually attaching a JTAG adapter to the PCB. Access to the pcb itself is in many cases not possible, and the connector might not be even on it, since the pins are used for something else.
when are they useful?
- As mentioned above, the bootloader is needed when you need to have the possibility to update your firmware without having access to the programming header on the PCB and without the need to re-enable the security settings to allow this.
where are they stored?
They reside in the ROM or in the FLASH memory of the MCU, usually write protected, so you can't destroy them (but don't force your luck too much).
when do I need one?
Whenever you want to have the possibility to upgrade your firmware via usb/serial/tcp-ip/wireless, and not the classical JTAG programming adapter.
How to implement one?
There are many open source bootloaders available, from compact ones intended for 8 bit platforms, to complex linux based systems. There is not a real need to start implementing one from scratch.
Bootloader flavors:
Wired connection - most known might be the Arduino bootloader, when you download a new binary (compiled sketch) via the USB, the download itself is done via the bootloader.
Wireless connection - They are very common, you might have heard the term update over the air, that feature is also based on a bootloader, just the data transfer is made wireless.
Secure bootloaders - these transfer the data in an encrypted form, so no tampering or spying on the content is possible. The implementation choices are quite variate, usually in the initial phase a mutual authentication takes place, this can be based on symmetric or asymmetric encryption. For extra security, the mutual authentication is made with asymmetric cryptography and symmetric session key is exchanged, which is then used for the bootloading data transfer (symmetric decryption is way faster).
Hope it helps.