Bootloaders are pretty ubiquitous in embedded systems today; just about every device with a microcontroller runs one. I'm writing one to learn about them and support specific protocols. This is a first working prototype of a bootloader, but it does explain how they work and what they do.