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.

[参考译文] CCS/MSP430F2013:不需要的.CIO 缓冲器

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/848855/ccs-msp430f2013-unwanted-cio-buffer

器件型号:MSP430F2013

工具/软件:Code Composer Studio

我很难想象不需要包含.cio 缓冲区和一些关联的库代码、这可能会使项目的 RAM 和 ROM 要求对于 MSP430F2013来说太大。 该代码没有 printf、assert 或其他语句、据我所知、这些语句需要控制台 I/O 使用 IAR Embedded Workbench 编译、下载和运行代码时没有问题。 如何发现调用.cio 缓冲区的内容或将 Code Composer 配置为不包含该缓冲区?

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

    请提交您的 CCS 项目。  按照文章 "共享项目 "中的说明创建 zip 文件、然后将 zip 附加到下一篇文章中。

    谢谢、此致、

    乔治

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

    在我准备提交 CSS 项目供审核时、我想首先尝试注释代码的部分、从 main.c 中的大多数代码开始、然后继续执行项目中的其他模块。 我希望能发现将什么因素引入.cio 部门。 我创建了一个新项目来处理已励化的代码。 我使用原始模块文件的准确副本构建了新项目。 这次没有创建.cio 段、代码段中不会出现不需要的库组件、大概是不需要的。 我确信源代码没有变化。 我感到很高兴、我无法解释为什么项目现在可以正常构建、但我感到很欣慰。 感谢提交项目的建议。

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

    由于在由我 声明的多个模块共享的.h 文件中、链接器输出包含了 rts430_eabi.lib 库中的.cio 缓冲区和其他目标文件  

      extern unsigned long time;

    但无法在任何位置定义它。 因此、链接器带来了各种不需要的对象、包括

         rts430_eabi.lib:time.c.obj (.text:__time32)
                        :trgmsg.c.obj (.text:_TI_writemsg)
                        :trgmsg.c.obj (.text:_TI_readmsg)
                        :lsl32.asm.obj (.text:l_lsl_const)
    它还创建了一个不需要的.CIO 段、该段消耗了288字节的 RAM。  正确定义 时间 消除了不需要的 RTS 组件和.cio 段。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="PF9244]\n 定义时间很长  、省去了不需要的 RTS 组件和.cio 段。运行时间库中的函数中的时间、该函数通过 CIO 机制从主机 PC 获取一天中的时间。 假设在程序中引用了时间符号、但未定义、这说明了链接器为何包含运行时库中的时间函数和相关符号。

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

    我在这个问题上挣扎了好几个小时。  我在 Code Composer 中找不到方法来识别项目中导致包含运行时库不需要的组件的元素或元素。  是否有办法做到这一点?

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

    [引用 user="PF9244]Code Composer 中找不到方法来识别项目中哪些元素或元素会导致包含运行时库中不需要的组件。 TI 链接器支持 -- EMIT_references:file 选项-请参阅 《MSP430汇编语言工具用户指南》的8.4.6控制连接器诊断部分。 您可以在 CCS 工程属性中指定要创建的文件名:

    即使链接因空间不足而失败、也会生成包含引用的文件。

    "CCS Stack Usage"视图显示程序的调用树、该调用树还可用于确定导致链接不需要的 RTS 函数的原因、但只有在成功链接程序时才能进行"Stack Usage"分析。