I am using the UDOO Neo board which has an imx6sx. I was able to build and run an application from TCM using the startup code and linker script from CMSIS. Since my application is going to exceed the TCM space I want to use a different memory region.
According to the device tree there should be 8MB DDR reserved for the M4, starting at 0x84000000.
So I modified the linker script like this:
m_interrupts (RX) : ORIGIN = 0x84000000, LENGTH = 0x00000240
m_text (RX) : ORIGIN = 0x84000240, LENGTH = 0x00007DC0
m_data (RW) : ORIGIN = 0x20000000, LENGTH = 0x00008000
From my understanding, I should be able to boot the M4 in u-boot by doing the following:
fatload mmc 0:1 0x84000000 test_ddr.bin
Bootaux should take care of copying the stack and pc pointer values. For the TCM memory layout (m_interrupts starting at 0x00000000) this procedure works, so what am I missing for the DDR?