Part Number:TMS570LS3137Other Parts Discussed in Thread: UNIFLASH
在使用TMS570LS3137芯片时,设计了 bootloader 并烧录到Bank0 上 0x00000000 地址,App 烧录到 Bank1 上 0x00180000 地址上,从bootloader 跳转到 App 的 0x00180000 地址 APP 是可以正常启动的,
但是 我修改 sys_link.cmd 文件里的配置后,把 APP 烧录到 TMS570LS3137 Emif 接口上的 MRAM 上,使用 工具读取 Mram 上的数据和烧录的固件是一样的,但是我在 bootloader 里 跳转到 Mram 0x60000000 地址 APP不
能正常启动 , bootloader 里有初始化 emif 配置,并且可以正常读取 emif 上 Mram 内的数据,这是什么问题?
Mram app sys_link.cmd 配置:

Lydia:
您好,
感谢您对TI产品的关注!由于问题比较复杂,我需要询问更了解这款芯片的TI资深工程师,再为您解答,一旦得到回复会立即回复给您。
,
aosit:
麻烦尽快回复,感谢
,
Lydia:
您好,
您能解释一下您是如何将应用的.out 文件加载到0x60000000地址的起始地址的吗?
我是说引导加载程序会接收二进制文件并使用 EMIF 加载到地址中?
或者
您是否与引导加载程序一样直接从 CCS 中刷写此.out?
我想您使用的第二种方法是直接从 CCS 进行编程、如果为真、您是否能够在调试模式下看到正确地将代码刷入 MRAM 中?
,
aosit:
我是在 bootloader 通过 UART 接收编译出来的 .bin 文件数据并 在Emif 0x60000000首地址顺序写入数据 到 Mram 内,我通过 uniflash 工具读取 起始地址为 0x60000000 到指定长度地址的数据后,读出的数据和 .bin 文件 数据是一致的,然后再 bootloader 里 执行跳转函数 jump_load_app():
跳转函数如下:
#define MRAM_APP_ADDR 0x60000000U
void jump_load_app(uint32 appxaddr){ uint32 g_ulTransferAddress; g_ulTransferAddress = (uint32_t)appxaddr; ((void (*)(void))g_ulTransferAddress)();
}
jump_load_app(MRAM_APP_ADDR);
,
aosit:
有什么新的进展吗?
,
Lydia:
已经帮您询问专项工程师,有消息会和您联系
,
Lydia:
您好,
你分享的照片对我来说并不清楚。
您能否以文本格式重新共享bootloader和应用程序的cmd文件? 这将有助于我清楚地核实它们。
,
aosit:
我尝试上传文件一直上传失败,只能粘贴了,这是我修改使用的 cmd 文件,麻烦帮忙验证一下,感谢!
=======================
sys_link_Bootloader.cmd
=======================
/**/ /*----------------------------------------------------------------------------*/ /* USER CODE BEGIN (0) */ /* USER CODE END */ /*----------------------------------------------------------------------------*/ /* Linker Settings*/--retain="*(.intvecs)"/* USER CODE BEGIN (1) */ /* USER CODE END *//*----------------------------------------------------------------------------*/ /* Memory Map*/MEMORY {VECTORS (X): origin=0x00000000 length=0x00000020KERNEL(RX) : origin=0x00000020 length=0x00008000FLASH0(RX) : origin=0x00008020 length=0x00177FE0STACKS(RW) : origin=0x08000000 length=0x00002a00KRAM(RW) : origin=0x08002a00 length=0x00000800RAM(RW) : origin=(0x08002a00+0x00000800) length=(0x0003d600 - 0x00000800)/* USER CODE BEGIN (2) */ /* USER CODE END */ }/* USER CODE BEGIN (3) */ /* USER CODE END *//*----------------------------------------------------------------------------*/ /* Section Configuration*/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: {} > RAMFEE_TEXT_SECTION : {} > FLASH0FEE_CONST_SECTION : {} > FLASH0FEE_DATA_SECTION : {} > RAM/* USER CODE BEGIN (4) */ /* USER CODE END */ }=======================
sys_link_Mram_App.cmd
=======================
/**/ /*----------------------------------------------------------------------------*/ /* USER CODE BEGIN (0) */ /* USER CODE END */ /*----------------------------------------------------------------------------*/ /* Linker Settings*/--retain="*(.intvecs)"/* USER CODE BEGIN (1) */ /* USER CODE END *//*----------------------------------------------------------------------------*/ /* Memory Map*/MEMORY { /*Mram App*/VECTORS (X): origin=0x60000000 length=0x00000020KERNEL(RX) : origin=0x60000020 length=0x00010000FLASH2(RX) : origin=0x60010020 length=(0x00180000 - 0x00010000 - 0x00000020)STACKS(RW) : origin=0x08000000 length=0x00008000KRAM(RW) : origin=0x08008000 length=0x00002000RAM(RW) : origin=0x0800A000 length=(0x40000 - 0x00008000 - 0x00002000)/* USER CODE BEGIN (2) */ /* USER CODE END */ }/* USER CODE BEGIN (3) */ /* USER CODE END *//*----------------------------------------------------------------------------*/ /* Section Configuration*/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: {} > RAMFEE_TEXT_SECTION : {} > FLASH2FEE_CONST_SECTION : {} > FLASH2FEE_DATA_SECTION : {} > RAM/* USER CODE BEGIN (4) */ /* USER CODE END */ }
,
aosit:
请问,有新进展吗?
,
Lydia:
您好,
感谢您对TI产品的关注!由于问题比较复杂,我需要询问更了解这款芯片的TI资深工程师,再为您解答,一旦得到回复会立即回复给您。
,
aosit:
好的
,
Lydia:
您好,为了专注于主题问题以及方便其他客户检索,新问题请另起一个新帖提问。谢谢
,
aosit:
有回复吗
,
Lydia:
没有,如果有更新会回复您。
,
Lydia:
您好,
对延迟回复深表歉意:
我看不到 cmd 文件有任何主要问题、但您能否让客户尝试在 cmd 文件中进行此小幅修改并查看行为:
=======================
sys_link_Mram_App.cmd
=======================
/**/ /*----------------------------------------------------------------------------*/ /* USER CODE BEGIN (0) */ /* USER CODE END */ /*----------------------------------------------------------------------------*/ /* Linker Settings*/--retain="*(.intvecs)"/* USER CODE BEGIN (1) */ /* USER CODE END *//*----------------------------------------------------------------------------*/ /* Memory Map*/MEMORY { /*Mram App*/VECTORS (X): origin=0x60000000 length=0x00000020KERNEL(RX) : origin=0x60000020 length=0x00010000FLASH2(RX) : origin=0x60010020 length=(0x00180000 - 0x00010000 - 0x00000020)STACKS(RW) : origin=0x08006000 length=0x00002000KRAM(RW) : origin=0x08008000 length=0x00002000RAM(RW) : origin=0x0800A000 length=(0x40000 - 0x00008000 - 0x00002000)/* USER CODE BEGIN (2) */ /* USER CODE END */ }/* USER CODE BEGIN (3) */ /* USER CODE END *//*----------------------------------------------------------------------------*/ /* Section Configuration*/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: {} > RAMFEE_TEXT_SECTION : {} > FLASH2FEE_CONST_SECTION : {} > FLASH2FEE_DATA_SECTION : {} > RAM/* USER CODE BEGIN (4) */ /* USER CODE END */--
,
aosit:
我按照上面的 sys_link_Mram_App.cmd 文件,配置后还是不能正常跳转到 Mram 运行 app,还有其他可以排查的地方吗?
Bootloader 跳转到 App 指令如下:(使用此函数 在 flash 内部由 bank0 地址 跳转到 bank1 地址 是可以正常跳转的)
#define APP_START_ADDRESS 0x60000000
g_ulTransferAddress = (uint32_t)APP_START_ADDRESS;
((void (*)(void))g_ulTransferAddress)();
,
Lydia:
您好,
转发我们的工程师的回复,
是否可以设置一次与客户的实时调试会话、客户可以在其中显示其屏幕和正在执行的步骤。
这将有助于我更清楚地了解问题、我可以在调试调用本身中提供我的建议。
我将在上午10点至晚上8点 IST (印度标准时间)提供服务。 如果客户满意实时调试会话、我们可以根据客户空闲情况在周一进行规划。
TI中文支持网


