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/CC3220S-LAUNCHXL:`sRAM#39;溢出647个字节

Guru**** 2550550 points
Other Parts Discussed in Thread: CC3220S

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/759958/ccs-cc3220s-launchxl-sram-overflowed-by-647-bytes

器件型号:CC3220S-LAUNCHXL
主题中讨论的其他器件:CC3220S

工具/软件:Code Composer Studio

我正在使用 out_for_box_CC3220S_LAUNCHXL_tirtos_gcc 演示、并收到以下错误消息:

说明资源路径位置类型
区`SRAM'溢出647个字节 out_for_box_CC3220S_LAUNCHXL_tirtos_gcc C/C++问题

我该如何更改它、以及如何更改它的问题是什么?

谢谢

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

    您好!

    您是否正在尝试从 SDK 编译非触控的 out_for_box 示例、或者您是否已对其进行了修改? 该示例在我的末尾编译、但不会出现内存分配问题。 您的.text 段看起来比我得到的107KB 值大得多。

    为了使您的项目适合 CC3220S、您可以尝试以下几种操作:

    1. 通过修改 CC3220S_LAUNCHXL_TIRTOS.lds 链接器配置文件中的 HEAPSIZE 定义来减小堆大小。 默认值为0x8000 (32KB)、但如果您知道应用程序不需要使用这么多的堆内存、则可以将其调整为更低的值。
    2. 使用更积极的优化设置。 您可以通过项目属性选择不同的优化配置文件。
    3. 查看编译器生成的.map 文件以检查并查看占用最大空间的内容、并尝试通过减小全局缓冲区大小等操作来节省空间

    按照上述选项、您应该能够解决内存空间问题。 如果您需要更多帮助或有其他问题、请告诉我。

    此致、

    Michael

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

    感谢您的回复。 一段时间以来、我一直在向它添加该功能。 我主要为 http get 和 post 添加了其他变量。 我想我已经达到极限了。

    1)。 我使用的堆不会超过常用程序已经使用的堆。 我搜索了 malloc()和 free()被调用的位置,它看起来就像是针对 NetApp 请求的,我猜它的大小可能会因 http 请求而异。 写入现在我有一个1k 全局缓冲区被用来写入闪存、我正在考虑将其作为 WriteFile()和 readfile()函数的局部缓冲区、并刻录峰值堆栈或使用堆。 我正在努力解决是使用堆栈还是堆。 我猜你会中毒吗? 考虑到写入闪存文件和 http 请求的临时性、我假设堆是可以的。

    .lds 文件的路径是什么? 我似乎找不到它。

    2)。 是的、我假设我可以逐个文件进行优化、以便仍然可以调试所需的代码。

    3)。 我一直在深入研究内存分配工具、似乎最大的耗电者是一些回调函数。

    我希望我能很早就看到 SF 版本的板载闪存、但它太晚了。 我希望-OS 大幅减小尺寸...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    .lds 文件应该位于 /out_for_box_CC3220S_LAUNCHXL_tirtos_gcc/CC3220S_LAUNCHXL_TIRTOS.lds。 它还应出现在 out_for_box 项目的顶层。

    此致、
    Michael
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    找到了。 谢谢! 是否可以将一些变量移动到 SRAM0中?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Andrew:

    SRAM0在引导过程中由引导加载程序使用、但在引导后可由应用程序自由使用。 因此、您可以将其用于缓冲区或主 RTOS 堆栈、但不能用于常量数组或可执行代码之类的内容、因为您不希望引导加载程序覆盖该内容。

    此致、
    Michael
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我如何将某些变量放置到该空间中? 抱歉、此级别的详细信息对我来说有点陌生...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Andrew:

    由于 GCC 不是 TI 编译器、因此我没有提供将变量分配到 SRAM0的确切示例或文档集。 我建议您查看 GCC 资源、以了解您需要使用哪些编译器指令。 一个有希望的开始是查看"__attribute__((section("SRAM0")))指令:
    infocenter.arm.com/.../index.jsp

    此致、
    Michael