This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS570LS3137: TMS570LS3137: How to loading APP program in external MRAM of Emif interface

Part Number: TMS570LS3137


Tool/software:

When using the TMS570LS3137 chip, the Bootloader is burned in the BANK0 area, and the application (App) is updated to the Mram area of ​​the Emif interface. It is necessary to jump from the Bootloader to the Mram address to start the App. It is found that the APP cannot start normally. 

1. Does TMS570LS3137 support jumping from the internal FLASH to the MRAM address outside the emif and executing the APP?

2. How to configure the bootloader to jump to the Mram address and run the app?

3. Please check if there is any problem with the following configuration, thanks.

<1> Bootloader jump app instruction:

        #define   APP_START_ADDRESS   0x60000000

        g_ulTransferAddress = (uint32_t)APP_START_ADDRESS;

         ((void (*)(void))g_ulTransferAddress)();

<2>

===============

bootloader cmd :

===============

--retain="*(.intvecs)"

/* USER CODE BEGIN (1) */
/* USER CODE END */

/*----------------------------------------------------------------------------*/
/* Memory Map */

MEMORY
{
VECTORS (X) : origin=0x00000000 length=0x00000020
KERNEL (RX) : origin=0x00000020 length=0x00008000
FLASH0 (RX) : origin=0x00008020 length=0x00177FE0
STACKS (RW) : origin=0x08000000 length=0x00002a00
KRAM (RW) : origin=0x08002a00 length=0x00000800
RAM (RW) : origin=(0x08002a00+0x00000800) length=(0x0003d600 - 0x00000800)


}

SECTIONS

{
.intvecs : {} > VECTORS
/* FreeRTOS Kernel in protected region of Flash */
.kernelTEXT : {} > KERNEL
.cinit : {} > KERNEL
.pinit : {} > KERNEL
/* Rest of code to user mode flash region */
.text : {} > FLASH0
.const : {} > FLASH0
/* FreeRTOS Kernel data in protected region of RAM */
.kernelBSS : {} > KRAM
.kernelHEAP : {} > RAM
.bss : {} > RAM
.data : {} > RAM
.sysmem : {} > RAM
FEE_TEXT_SECTION : {} > FLASH0
FEE_CONST_SECTION : {} > FLASH0
FEE_DATA_SECTION : {} > RAM


}

<3>

================

Mram App cmd:

================

--retain="*(.intvecs)"

/* USER CODE BEGIN (1) */
/* USER CODE END */

/*----------------------------------------------------------------------------*/
/* Memory Map */

MEMORY
{

/*Mram App*/
VECTORS (X) : origin=0x60000000 length=0x00000020
KERNEL (RX) : origin=0x60000020 length=0x00010000
FLASH2 (RX) : origin=0x60010020 length=(0x00180000 - 0x00010000 - 0x00000020)
STACKS (RW) : origin=0x08000000 length=0x00008000
KRAM (RW) : origin=0x08008000 length=0x00002000
RAM (RW) : origin=0x0800A000 length=(0x40000 - 0x00008000 - 0x00002000)

}

SECTIONS
{
.intvecs : {} > VECTORS
/* FreeRTOS Kernel in protected region of Flash */
.kernelTEXT : {} > KERNEL
.cinit : {} > KERNEL
.pinit : {} > KERNEL
/* Rest of code to user mode flash region */
.text : {} > FLASH2
.const : {} > FLASH2
/* FreeRTOS Kernel data in protected region of RAM */
.kernelBSS : {} > KRAM
.kernelHEAP : {} > RAM
.bss : {} > RAM
.data : {} > RAM
.sysmem : {} > RAM
FEE_TEXT_SECTION : {} > FLASH2
FEE_CONST_SECTION : {} > FLASH2
FEE_DATA_SECTION : {} > RAM

}