TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS570LS3137: TMS570LS3137

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 (印度标准时间)提供服务。 如果客户满意实时调试会话、我们可以根据客户空闲情况在周一进行规划。

赞(0)
未经允许不得转载:TI中文支持网 » TMS570LS3137: TMS570LS3137
分享到: 更多 (0)

© 2025 TI中文支持网   网站地图 鲁ICP备2022002796号-1