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

Part Number: TMS570LS3137
Other 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 配置:

  • 您好,

    感谢您对TI产品的关注!由于问题比较复杂,我需要询问更了解这款芯片的TI资深工程师,再为您解答,一旦得到回复会立即回复给您。

  • 麻烦尽快回复,感谢

  • 您好,

    您能解释一下您是如何将应用的.out 文件加载到0x60000000地址的起始地址的吗?

    我是说引导加载程序会接收二进制文件并使用 EMIF 加载到地址中?

    或者

    您是否与引导加载程序一样直接从 CCS 中刷写此.out?

    我想您使用的第二种方法是直接从 CCS 进行编程、如果为真、您是否能够在调试模式下看到正确地将代码刷入 MRAM 中?

  • 我是在 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);

  • 有什么新的进展吗?

  • 已经帮您询问专项工程师,有消息会和您联系

  • 您好,

    你分享的照片对我来说并不清楚。

    您能否以文本格式重新共享bootloader和应用程序的cmd文件? 这将有助于我清楚地核实它们。

  • 我尝试上传文件一直上传失败,只能粘贴了,这是我修改使用的 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=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)
    
    /* 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       : {} > RAM
        FEE_TEXT_SECTION : {} > FLASH0
        FEE_CONST_SECTION : {} > FLASH0
        FEE_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=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)
    
    /* 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       : {} > RAM
        FEE_TEXT_SECTION : {} > FLASH2
        FEE_CONST_SECTION : {} > FLASH2
        FEE_DATA_SECTION : {} > RAM
    
    /* USER CODE BEGIN (4) */
    /* USER CODE END */
    }
  • 请问,有新进展吗?

  • 您好,

    感谢您对TI产品的关注!由于问题比较复杂,我需要询问更了解这款芯片的TI资深工程师,再为您解答,一旦得到回复会立即回复给您。

  • 您好,为了专注于主题问题以及方便其他客户检索,新问题请另起一个新帖提问。谢谢

  • 有回复吗

  • 没有,如果有更新会回复您。

  • 您好,

    对延迟回复深表歉意:

    我看不到 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=0x00000020
        KERNEL  (RX) : origin=0x60000020 length=0x00010000
        FLASH2  (RX) : origin=0x60010020 length=(0x00180000 - 0x00010000 - 0x00000020)
        STACKS  (RW) : origin=0x08006000 length=0x00002000
        KRAM    (RW) : origin=0x08008000 length=0x00002000
        RAM     (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       : {} > RAM
        FEE_TEXT_SECTION : {} > FLASH2
        FEE_CONST_SECTION : {} > FLASH2
        FEE_DATA_SECTION : {} > RAM
    
    /* USER CODE BEGIN (4) */
    /* USER CODE END */

    --
  • 我按照上面的 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)();

  • 您好,

    转发我们的工程师的回复,

    是否可以设置一次与客户的实时调试会话、客户可以在其中显示其屏幕和正在执行的步骤。

    这将有助于我更清楚地了解问题、我可以在调试调用本身中提供我的建议。

    我将在上午10点至晚上8点 IST (印度标准时间)提供服务。 如果客户满意实时调试会话、我们可以根据客户空闲情况在周一进行规划。