工具与软件:
当使用 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.
}