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.

[参考译文] 编译器/TMS320F28374S:CLA - LS-RAM -链接器:LS-RAM 短缺、根据所需的函数调用双倍使用 RAM

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/844345/compiler-tms320f28374s-cla---ls-ram---linker-ls-ram-shortage-use-ram-doubly-depending-on-needed-function-call

器件型号:TMS320F28374S

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

您好!

在我的程序中使用了 CLA。 函数"foo"使用 CLA 并使用大多数 LS-RAM。 或者、对于函数"foo"、在某些情况下、应执行函数"bar"而不是"foo"。 "bar"的大小与"foo"类似、因此两者不能同时安装到 LS RAM 中。

我的想法是编译这两个函数、并仅将当前所需的函数加载到 LS-RAM 中。 我已经查找"

           Cla1Prog_Foo   :                /*CLA 程序 RAM 用于运行 foo*/
         type = DSECT、                        /*实际段不应是 DSECT、但应定义正确的起始地址 以及运行和加载开始、但仅在大于 bar*/时才分配
         负载= FLASHA、
           Load_start (_Cla1_Foo_funcsLoadStart)、
           load_end (_Cla1_Foo_funcsLoadEnd)、
           load_size (_Cla1_Foo_funcsLoadSize)、
           运行= RAMLS1_5、
           run_start (_Cla1_Foo_funcsRunStart)、
           run_end (_Cla1_Foo_funcsRunEnd)、
           run_size (_Cla1_Foo_funcsRunSize)、
           PAGE = 0、ALIGN (4)

           Cla1Prog_Bar   :                /*CLA 程序 RAM 用于运行 bar*/
         type = DSECT、                        /*实际段不应是 DSECT、但应定义正确的起始地址 以及运行和加载启动、但仅在大于 foo*/时才分配
         负载= FLASHA、
           Load_start (_Cla1_Bar_funcsLoadStart)、
           Load_End (_Cla1_Bar_funcsLoadEnd)、
           load_size (_Cla1_Bar_funcsLoadSize)、
           运行= RAMLS1_5、
           run_start (_Cla1_Bar_funcsRunStart)、
           run_end (_Cla1_Bar_funcsRunEnd)、
           run_size (_Cla1_Bar_funcsRunSize)、
           PAGE = 0、ALIGN (4)

如果在闪存中正确放置了包含运行-启动信息的 fuctions、则可以在需要时将相应的函数复制到 Ls-RAM 中。

感谢你的帮助。

此致

Manuel

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

    曼努埃尔

    您对该设置有具体的疑问吗?  您是否曾尝试过它并观察到某种情况不起作用?

    此致

    Lori

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

    曼努埃尔

    我一周内没有听到您的声音、因此我假设您已经解决了问题。  如果不是这种情况、请发布有关您的问题的其他详细信息。  谢谢你

    Lori

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

    Hallo Lori、

    我是在假期、这就是我没有回答的原因。

    是的、我的设置有问题。 我不知道如何正确设置它、这样两个函数都位于闪存中、我只能将实际需要的功能加载到 RAM 中。

    无法同时加载两个函数、因为它们对于 LS RAM 来说太大。 由于函数必须在 CLA 中运行、因此需要 LS RAM。 在运行期间、只需要这两个功能中的一个。 因此、在运行之前、我们可以决定采用哪一个并将其加载到 LS-RAM 中。

    现在:我必须如何设置链接过程、这样
    •这两个函数都链接并加载到闪存中
    •RAM 被分配给两个函数中较大的函数。
    •两个函数都具有指向分配空间开始位置的正确函数指针

    谢谢、此致

    Manuel

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

    曼努埃尔

    您可以使用 UNION 指令叠加运行地址。  

    以下是有关此主题的一些相关帖子:

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/426354?Linker-command-file-issue-for-TMS320F28377D

    https://e2e.ti.com/support/tools/ccs/f/81/t/719388?Compiler-CLA-type1-scratchpad-linker-definition

    汇编语言参考指南介绍了链接器的覆盖管理示例。  

    http://www.ti.com/lit/spru513

    -洛里

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

    Lori、

    感谢你的帮助。 这是可行的。

    此致

    Manuel