Bootloader-less Pro - Advanced AVR 3.0 Core - Part 1 - GCC Sections functions attribute
Boot header from AVR-c actually suck BBC, (Probably written by someone from Britain?) thus SPM and LPM code are rewritten. Bootloader mechanism found in the AVR is good only for the protection part of the feature. Self-program can be done without it with a little bit extra care. Beside on being able to update its own source code, the flash memory can be easily used as flash to store data, for instance a logger that requires a lot of memory can store its data to the flash memory.
Part 1 tested the idea of using GCC's extended functions attribute feature to partition the little tiny amount of flash memory into sections, and it works as expected. There are 2 other known ways to do similar thing, but this seems to be the best route. Why is this useful? This is less to do with the actual function, but to manually reserve some programming space. The partitioned space can be used as bootloader, flash memory, whatever and etc. The user defined function addressing location also makes it easy to write in C-language a SPM function inside the bootloader section, of which is required to reside in to increase the memory security of the system.