On an MPC5777C is it possible to configure the MMU and the Flash memory system such that the Flash can be partitioned into 2 application parts where each can contain an image of the same program. And that either one can be executed when required. For example, if we had 2 partitions, each 2MB: P1 starts at 0x0094_0000 and P2 at 0x00B4_0000 and the program is linked to execute from 0x0094_0000. The idea is to support a SW load function where the SW program can be stored in either buffer. When executing code from P1 the new code/program can be loaded into P2 and then invoked. When executing from P2 the new code/program can be loaded into P1 and then invoked.
Or is it possible to create a SW executable that only uses relative branch/jumps/calls for instruction accesses and absolute addressing for other memory accesses (stack, external RAM, SRAM, memory-mapped IO) - therefore it can be executed from any location in the Flash.