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.

[参考译文] TMS320C6720:.cmd 文件了解代码大小

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1521920/tms320c6720-cmd-file-understanding-for-code-size

部件号:TMS320C6720

工具/软件:

处理旧产品并需要一些有关如何确定 Code Composer Studio 版本.3.3.82.13的.cmd 文件中提到的代码大小的输入

例如  

在.cmd 文件的存储器部分中。  

 IRAMCODESECT   :origin =  0x10022A98 length = 0x00001C78

在.cmd 文件的输出段中  

"FCode"  :> IRAMFRCODESECT3

然后执行以下操作。  

#pragma CODE_SECTION (F1、"FCode");
#pragma CODE_SECTION (F2、"FCode");
#pragma CODE_SECTION (F3、"FCode");
#pragma CODE_SECTION (F4、"FCode");

其中 F1、F2等。 是用户定义的函数。

尝试查看获取生成的映射文件以了解函数的大小、但未提及为特定函数生成的可执行代码的映射文件大小(或者可能是我无法正确理解映射文件)。

在这种情况下,如何决定 IRAMCODESECT 的长度,例如,它应该是(F1 + F2 + F3 + F4)的大小,这是需要输入如何决定函数大小在上述情况下。

尝试搜索不同的手册、例如程序员/应用手册和数据表、但找不到这方面的答案(也许我错过了其中的几个部分!)。

此外、我的 CCS 已经很旧、无法更新到最新版本、因此我们非常感谢您对此进行的任何快速输入/帮助。

提前感谢。

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

    我假定所有这些功能...

    #pragma CODE_SECTION (F1、"FCode");
    #pragma CODE_SECTION (F2、"FCode");
    #pragma CODE_SECTION (F3、"FCode");
    #pragma CODE_SECTION (F4、"FCode");

    ...在同一个源文件中。

    请阅读文章 链接器命令文件入门的第一部分。  重点了解术语输入部分输出部分。   

    Unknown 说:
    尝试查看生成的映射文件以了解函数的大小、但在映射文件中未提及为特定函数生成的可执行代码的大小

    是的。  这是因为所有函数都位于名为的同一输入段中 FCode 。  输入段是链接器处理的最小单元。  它不能向您显示来自同一目标文件的函数、这些函数都进入同一输入段。   

    需要考虑两种解决方案。  选择最适合您的版本。

    解决方案一...不要在地图文件中查找。  使用目标文件显示实用程序 ofd6x 相反。  请阅读文章 查找代码大小增加的来源。  不要担心使用这篇文章中描述的技术。  阅读它、了解目标文件显示实用程序如何显示程序中所有函数的大小、包括输入段内的函数。

    解决方案二...添加编译器选项  -- gen_func_subsections 。  在 C6000编译器手册中搜索该代码。  它将每个函数放在不同的子段中。  每个子段计为不同的输入段。  您可以在链接器映射文件中看到它们。  请注意、此选项可能会导致代码大小增加。  编译器手册中提供了详细信息。

    谢谢。此致、

    -乔治

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

    您好、George、感谢一群人的快速响应!

    浏览您分享的详细信息并进行实验、将在一天或两天内分享更多问题。

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

    您好、George、

    我已在"Build Options"->"Advanced"->"Use functions subsections (-mo)中启用、这里显示了.map 文件中的函数大小。

    这帮助我减少了为函数分配的额外/未使用的内存。

    还有一个问题涉及如何确定哪个函数必须位于内部 RAM 或外部 RAM 中(例如特定的存储器部分)、我的假设是经常调用或需要以最短上下文切换时间执行的函数需要位于内部 RAM 中。

    但是、是否有任何方法或工具可以指导此或该功能应最好保留在内部 RAM 中、以减少访问外部 RAM 时的延迟。  

    如果我可以将某些函数从内部 RAM 移出、从而释放存储器以供使用其他一些全局变量、这将非常有用。   

    谢谢。此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如何确定哪个函数必须位于内部 RAM 或外部 RAM 中

    发生的一些链接器命令文件中。  再次 阅读文章 链接器命令文件入门的第一部分。  这次、了解术语 存储器范围。   

    是否有任何方法或工具可以指导此函数或该函数最好保留在内部 RAM

    我不知道有任何工具。  通常、我会将您推荐给为您的器件提供软件开发套件支持的团队。  但是、由于您使用的是这样的旧器件、我认为没有任何可用的支持。

    谢谢。此致、

    -乔治