AnsweredAssumed Answered

iMX RT105x : Running the Application From SDRAM

Question asked by Murat Cakmak on Sep 6, 2019
Latest reply on Sep 11, 2019 by jeremyzhou

Hi, 

 

We have a bootloader running in XIP QSPI flash (0x60000000) and this bootloader copies the application image sits in QSPI to the external SDRAM (0x80000000). The SDRAM image is built for SDRAM using a linker script and seems ok (at least IntelHex file seems ok)

 

Bootloader initialises the SEMC for the SDRAM and runs a SDRAM test for the whole address range, so SDRAM should be ok.

 

But after jumping I am getting a PRECISERR Bus Fault.

 

 

My jump code is simple, 

 

SDRAM_OFFSET 0x80000000

 

/* Set Main Stack Pointer; WORD 0 */

__set_MSP(*(uint32_t*) SDRAM_OFFSET );

/* App start point; WORD 1 */

voidFP app = (voidFP)(*(uint32_t *)(SDRAM_OFFSET  + 4));


/* Jump to Application */
app();

 

After I jump, I immediately get a hard fault handled in Bootloader Hardfault Handler which say Bus Fault. I get PRECISERR bus fault and the fault address (SCB->BFAR) is the top of the stack; 0x20020000

I know i need to set the SDRAM image vector table before jump, but if I set I dont get anything because if I cannot jump to the application, I never access the fault handler located in SDRAM. 

 

I hope it is not about Data caching on SDRAM.

 

I have seen some SDRAM example from the SDK but they run the image from the internal SRAM(DTCM, 0x20002000) if I dont miss something here. 

 

Just is there any limitation for running images on external SDRAM using SEMC?

Outcomes