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.

[参考译文] 编译器/TMS320F2810:键入#10247-D、创建输出段"ramfuncs"而不包含段规范

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/952310/compiler-tms320f2810-type-10247-d-creating-output-section-ramfuncs-without-a-sections-specification

器件型号:TMS320F2810

工具/软件:TI C/C++编译器

你(们)好。

       我们使用的是 DSP 芯片"TMS320F2810"、当我们编译项目时、我们看到如下所示。

什么是"ramfuncs"? "ramfuncs"的用法是什么、为什么我们有该错误10247-D  

谢谢

Ganesh

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

    您好、Ganesh、

    请检查工程的链接器命令文件。 您可以调整分区的大小。

    请参阅以下链接。 它解释了包括 ramfuncs 部分在内的各个部分。

    software-dl.ti.com/.../sdto_cgt_Linker-Command-File-Primer.html

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

    Ganesh、

    除了 Santosh 提供的详细信息之外、我还想提供 ramfuncs 部分的使用上下文。

    如您所知、最终的嵌入式应用程序会将所有已初始化的段映射到闪存(而不是 RAM)。  这样、应用程序驻留在闪存中、当器件部署在现场并加电时、器件将引导至闪存(闪存引导配置)并执行应用程序。  但是、出于性能原因、应用程序可能必须从 RAM 执行某些代码(RAM 为0等待)。  此外、有些器件/闪存初始化例程只应从 RAM 执行。  您希望从 RAM 中执行的所有这些函数都可以映射到 ramfuncs 部分(在最新的编译器中称为 TI.ramfunc)。  如 Santosh 共享的链接中所述、您可以为链接器 cmd 文件中的加载指定一个闪存地址、为该段的运行指定一个 RAM 地址。  此函数的链接器放置可确保控制到达 RAM 位置而不是闪存执行。  因此,在应用程序中,您需要在执行此段中的任何代码之前调用 memcopy()。  memcopy()将所有内容从闪存复制到 RAM。  如果您不复制、当 CPU 从未初始化的 RAM 中提取垃圾时、您的应用程序将以 ITRAP 结束。   

    您可以查看有关 从闪存运行应用的应用手册(spra958) 

    请注意、此应用手册最近未更新。  如有任何疑问、请告知我们。

    谢谢、此致、
    Vamsi