Hello Group!
After having a nice craft drink I figured it out. It's kind of a chicken and egg thing :smileysilly:
The key items to focus here is that we were trying to use **external** ram for the RTOS heap. Thus **external** ram is a 512K chunk of memory that needs to be configured by the CPU before it can be used.
in startup.c __thumb_startup(void) has the basic initialization to copy our data from ROM to ram. It also has some simple hardware and stack configuration. Looks kind of like this:
void __thumb_startup(void) {
// Pseudo code:
Stack setup
Setup registers
Setup *some* hardware
Call user initialization (__init_user())
Call the C start function (_start())
}
What I had to do is to initialize some of the CPU mux registers in the startup.c file to get the **external** ram functioning. I cheated by copying some of the PE code to the startup.c __init_user() function. The code looked safe enough to copy there for simple register initialization - stuff like MUX's, SIM, and MPU registers. Disadvantage here is we need to be sensitive to PE changes in the future.
BlackNight - You have any comments?
Thanks group for all your help!
Monte---