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.

[参考译文] TMS570LC4357:tms570lc4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1492176/tms570lc4357-tms570lc4357

器件型号:TMS570LC4357

工具/软件:

我正在使用 TMS570LC4357、我需要将应用程序加载到闪存中并从 RAM 执行它。

我希望使用链接器脚本实现这一点。 如何做到这一点?  

我已经知道如何处理逐段复制、但在执行启动代码后、我需要在进入之后从 RAM 继续执行 main()

This is my application linker 

/*链接器设置*/

-- retain="*(.intvecs)"

/*用户代码开头(1)*/
/*用户代码结束*/

/*---------------------------------------------------------------------------------------------------- */
/*存储器映射*/

移动数据

/*用户代码开头(2)*/
/*用户代码结束*/
矢量(X):origin=0x00200000 length=0x00000020
//FLASH0 (RX):origin=0x00000000 length=0x00200000
FLASH1 (RX):origin=0x00200020 length=0x001FFFE00
栈(RW):origin=0x08000000 length=0x00001500
RAM (rwx):origin=0x08001500 length=0x00040000

/*用户代码开头(3)*/
/*用户代码结束*/
}

/*用户代码开头(4)*/
/*用户代码结束*/


/*---------------------------------------------------------------------------------------------------- */
/*段配置*/

很重要

/*用户代码开头(5)*/
/*用户代码结束*/
.intvecs :{}>向量
.text align(32):{}> FLASH1
.const align(32):{}> FLASH1
.cinit align (32):{}> FLASH1
.pinit align(32):{}> FLASH1
.bss :{}> RAM
.data :{}> RAM
.sysmem :{}> RAM


/*用户代码开头(6)*/
/*用户代码结束*/

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kusuma:

    您是否可以下载并参考下面突出显示的 CAN 引导加载程序示例:

    (+)[常见问题解答] TMS570LC4357:适用于 Hercules 控制器的示例和演示(例如 TMS570x、RM57x 和 RM46x 等)-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    这一示例也适用于 TMS570LC4357、这里也我们将 FAPI 库复制到 RAM 中。 因此、这可能对您有用。

    --
    此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我可以将闪存 API 复制到 RAM 并执行它。 但是、我还想.text在 RAM 中复制和运行该段。

    我遇到了以下错误问题:

    说明资源路径位置类型
    #10099-D 程序无法放入可用的存储器中、或者段包含一个调用点、该调用点需要无法为该段生成蹦床函数。 对于大小为0x20的段".intvecs"、带对齐的放置失败。 可用存储器范围:hl_sys_link.cmd  

    但是、我的.text段大小足够小、可以放入 RAM 中。

    这是我的链接器

    移动数据

    /*用户代码开头(2)*/
    /*用户代码结束*/
    矢量(X):origin=0x00200000 length=0x00000020
    // FLASH0 (RX):origin=0x00000020 length=0x001FFFE0
    FLASH1 (RX):origin=0x00200020 length=0x00200000
    栈(RW):origin=0x08000000 length=0x00001500
    RAM (RW):origin=0x08001500 length=0x0007EB00

    /*用户代码开头(3)*/
    /*用户代码结束*/
    }

    /*用户代码开头(4)*/
    /*用户代码结束*/


    /*---------------------------------------------------------------------------------------------------- */
    /*段配置*/

    很重要

    /*用户代码开头(5)*/
    /*用户代码结束*/
    .intvecs :{}>向量
    //.text align(32):{}> FLASH1
    如果是1
    .text:

    *(.text)/*所有文本(代码)段*/
    *(.text.*)/*任何文本子段*/
    } load = FLASH1、run = RAM
    load_start (TextLoadStart)、load_end (TextLoadEnd)、load_size (TextSize)、
    RUN_START (TextRunStart)、RUN_END (TextRunEnd)
    #endif
    .const align(32):{}> FLASH1
    .cinit align (32):{}> FLASH1
    .pinit align(32):{}> FLASH1
    .bss :{}> RAM
    .data :{}> RAM
    .sysmem :{}> RAM

    }

    请帮我解决这个问题  

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kusuma:

    解锁此主题的原因是 TI 未正确关闭该主题、因此我再次解锁它。

    为您带来的不便深表歉意。

    您是否仍坚持解决此问题、如果是、请让我知道您现在的问题所在。

    --
    此致、
    Jagadish。