I'm currently attending a basic course in real-time embedded systems. Recently, we have been talking about embedded systems memory architecture. When doing some extra studying on memory maps, I came across the memory map for the Atmega328P-microcontroller. As can be seen from the image, the flash is divided into a boot section and an application section. [![enter image description here][1]][1] [1]: https://i.sstatic.net/NWBNO.png My question is, why is the boot section not starting from address 0? As I've understood it, the microcontroller application won't run without a bootloader. So why doesn't the bootloader occupy the lower addresses if everything else relies on it?