What I read about OTA says that you load half of the memory with the new code and then switch over.
Isn't it possible to install a small loader in the bottom section. When you want to upload new code, switch to the loader and then use the loader to reload the upper section.
All the loader needs is enough to recognize the load request and switch when done.
This would free up a lot more memory for bigger programs.
Is this feasible?