1. A memory architecture comprising: a non-volatile, application memory block having first application code for application functions capable of being called by a first application; a non-volatile, launcher memory block having second application code for application functions capable of being called by a second application, the second application code being launcher code that is operable to initialize the first application code; a non-volatile, shared memory block having shared code for shared functions; and fixed memory locations dedicated within the shared memory block to store shared function pointers; and volatile memory storing callback pointers, at least one associated with each one of the shared functions, wherein the callback pointers point to callback function code stored within the non-volatile, application memory block having first application code when the first application is executing and to callback function code stored within the non-volatile, launcher memory block having second application code when the second application is executing.