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.

[参考译文] 编译器/LAUNCHXL-F28069M:如何将数学库放入 RAM 或内联其函数?

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/652999/compiler-launchxl-f28069m-how-to-put-math-libraries-in-ram-or-to-inline-their-functions

器件型号:LAUNCHXL-F28069M

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

尊敬的所有人

         我想放置的函数

rts2800_fpu32_fast_补 编.lib

rts2800_fpu32.lib

RAM 中(如 ranfuncs)

或交替内联其功能

FPUmathTables.obj 可以在闪存中

我更喜欢前一种选择

谢谢

Luis Gonçalves ó n

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

    [引用用户="user4957458"]

             我想放置的函数

    rts2800_fpu32_fast_补 编.lib

    rts2800_fpu32.lib

    RAM 中(如 ranfuncs)

    [/报价]

    以下各项是否正确?  当系统上电时、这些功能在闪存中。  在调用这些函数中的任何一个之前、它们都将从闪存复制到 RAM 中。  对这些函数的所有调用都在 RAM 中访问它们的地址。   

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    可以使用--opt_level=4吗? 这将能够内联 rts2800_fpu32.lib 中的某些函数、但不是所有函数。 您尤其希望内联哪些函数?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    例如中的浮点除法

    rts2800_fpu32_fast_补 编.lib

    我对速度进行了优化、使其达到最大值

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

    我仍然不确定您需要什么。  但我会猜到。

    链接器命令文件 F28069.cmd 可在一个类似于...的位置内找到。

    C:\ti\ccsv7\ccs_base\c2000\include 

    您可以猜测使用此链接器命令文件、也可以使用类似的文件。  此文件包含以下行...

    ramfuncs :LOAD = FLASHD,
    运行= RAML0、
    load_start (_RamfuncsLoadStart)、
    load_end (_RamfuncsLoadEnd)、
    run_start (_RamfuncsRunStart)、
    PAGE = 0 

    在标题为 "在一个地址加载、从另一个地址运行"的章节中、链接器命令文件入门一文描述了与这些行非常相似的行。   

    以下是重写这些行的一种方法...

    ramfuncs
    {
    *(ramfuncs)
    
    /*在此处插入代码*/
    
    } :LOAD = FLASHD,
    运行= RAML0、
    load_start (_RamfuncsLoadStart)、
    load_end (_RamfuncsLoadEnd)、
    run_start (_RamfuncsRunStart)、
    PAGE = 0
    

    这是完全相同的。  第3行明确指定输入段的名称。  第6行是您插入我接下来描述的代码的位置。

    一般的想法是采用链接器命令文件入门文章中标题为 从库分配单个输入段的一节中介绍的技术。  像这样的东西...

    libc.a (.text)
    rts2800_fpu32_fast_f补 遗.lib (.text) 

    这会将 libc.a 和 rts2800_fpu32_fast_addr.lib 中的所有函数添加到 ramfuncs 输出段中。  请注意、链接器会将 libc.a 替换为适合的任何编译器 RTS 库。  在本例中、它是 rts2800_fpu32.lib。  另请注意,您可能必须在这些库名称前面加上选项-L。

    我相信这些建议或与其相近的建议将解决您的问题。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因为已经有一段时间了,我想你已经解决了你的问题。 非常感谢您的解决。

    谢谢、此致、

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

    我找到了一种通过 速度优化参数获得程序大小的方法(有一个提供该测试的测试)。 该程序的大小会增加、我认为其中一个优化是内联的。 我没有取消汇编代码。 我只需要最大速度。

    当我有时间和电路板时、我将找到正弦和浮点除法(FAST 库)的地址、以及它们是否在 RAM 或闪存中(在调试模式中)

    谢谢

    Luis Gonçalves ó n

    PS 我想你比我更了解这一点