Hello,
AN112 provides three different methods for code loader designs.
However, we are considering having our Code Loader jump to the compiler's C_C51Startup function of our Main Application instead of its Main function. This would allow us to leverage the functionality that the compiler's startup code provides (clearing data; initialization of globals, statics; setting stack pointer; etc.).
Also, our Code Loader (and many others) never needs to run after it passes control to the Main Application. So we believe that we would not need to ensure that the data areas for the two applications do not overlap.
These two ideas seem to work well together. The C_C51Startup should ensure that the data area is initialized before the Main function of the Application runs even if it overlaps the data area of the Code Loader.
Are there any problems or drawbacks in the Code Loader jumping to the Application's C_C51Startup function and having the data areas of the Code Loader and Application overlap? It seems simpler and safer to us.
let the watchdog time out and get a REAL reset.
Many have been 'surprised' when they did a reset by software. e.g. this little pesky SFR is not in the reset state.
Erik
The "best" surprise is when interrupts are still enabled (because the SFR keeps their contents) and the initialization code plays with a couple of settings and gets an interrupt without a valid stack.