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:如何在 EMIF 接口的外部 MRAM 中加载应用程序

Guru**** 2386610 points
Other Parts Discussed in Thread: TMS570LS3137
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1478412/tms570ls3137-tms570ls3137-how-to-loading-app-program-in-external-mram-of-emif-interface

器件型号:TMS570LS3137

工具与软件:

当使用 TMS570LS3137芯片时、引导加载程序被烧录到 BANK0区域、并且应用程序(应用程序)更新到​​EMIF 接口的 MRAM 区域。 需要从引导加载程序跳转到 MRAM 地址以启动应用 发现应用程序无法正常启动。  

TMS570LS3137是否支持从内部闪存跳转到 EMIF 外部的 MRAM 地址并执行应用?

2.如何配置引导加载程序以跳转到 MRAM 地址并运行应用程序?

3. 请检查以下配置是否有任何问题、谢谢。

<1>引导加载程序跳转应用程序指令:

    #define   APP_START_ADDRESS  0x60000000

    G_ulTransferAddress =(uint32_t) APP_START_ADDRESS;

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

<2>

========

引导加载程序 cmd:

========

--retain="*(.intvecs)"

/*用户代码 begin (1)*/
/*用户代码结束*/

/*------------------ */
/*内存映射*/

小程序

VECTORS (X):origin=0x00000000 length=0x00000020
内核(RX):origin=0x00000020 length=0x00008000
FLASH0 (RX):origin=0x00008020 length=0x00177FE0
堆栈(RW):origin=0x08000000 length=0x00002a00
Kram (RW):origin=0x08002a00 length=0x00000800
RAM (RW):origin=(0x08002a00+0x00000800) length=(0x0003d600 - 0x00000800)


}

部分中)


.intvecs :{}>向量
/* FreeRTOS 内核位于闪存的受保护区域*/
kernelTEXT :{}> kernel
.cinit :{}>内核
.pinit :{}>内核
/*其余代码到用户模式闪存区域*/
.text :{}> FLASH0
.const :{}> FLASH0
/* FreeRTOS 内核数据位于 RAM 的受保护区域*/
.kernelBSS :{}>克拉姆
.kernelHEAP :{}>RAM.
.bss :{}>RAM.
.data :{}>RAM.
.sysmem :{}> RAM.
FEE_TEXT_SECTION :{}> FLASH0
FEE_CONST_SECTION :{}> FLASH0
FEE_DATA_SECTION :{}>RAM.


}

<3>

========

MRAM 应用命令:

========

--retain="*(.intvecs)"

/*用户代码 begin (1)*/
/*用户代码结束*/

/*------------------ */
/*内存映射*/

小程序

/* MRAM 应用程序*/
VECTORS (X): origin=0x60000000 length=0x00000020.
内核(RX):origin=0x60000020 length=0x00010000
FLASH2 (RX):origin=0x60010020 length=(0x00180000 - 0x00010000 - 0x00000020)
堆栈(RW):origin=0x08000000 length=0x00008000
KRAM (RW):origin=0x08008000 length=0x00002000
RAM (RW):origin=0x0800A000 length=(0x40000 - 0x00008000 - 0x00002000)

}

部分中)

.intvecs :{}>向量
/* FreeRTOS 内核位于闪存的受保护区域*/
kernelTEXT :{}> kernel
.cinit :{}>内核
.pinit :{}>内核
/*其余代码到用户模式闪存区域*/
.text :{}> FLASH2.
.const :{}> FLASH2.
/* FreeRTOS 内核数据位于 RAM 的受保护区域*/
.kernelBSS :{}>克拉姆
.kernelHEAP :{}>RAM.
.bss :{}>RAM.
.data :{}>RAM.
.sysmem :{}> RAM.
FEE_TEXT_SECTION :{}> FLASH2
FEE_CONST_SECTION :{}> FLASH2
FEE_DATA_SECTION :{}>RAM.

}