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.

[参考译文] CC3200:程序存储器问题

Guru**** 2771175 points

Other Parts Discussed in Thread: CC3200, CC3220SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/998191/cc3200-program-memory-issue

器件型号:CC3200
主题中讨论的其他器件: CC3220SF

尊敬的团队:

目前、我收到一个链接错误、如下所示

错误:-#10099-D:程序不能放入可用内存中。

当我使用一个大小大约为200kB 的结构时、会发生这个错误。 如果我移除结构并构建代码、它不会引发任何错误。

我想这种结构不适合数据部分、如果是、您能否提供适当的解决方案?  

寻求快速响应。

提前感谢。

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

    您好!

    CC3200仅具有256KB RAM。 您需要将代码、变量、结构、堆栈和堆放入该 RAM 中。 您不太可能将大小为200KB 的结构与其他一些较大的代码一起使用。

    如果使用 CCS IDE、则可以使用内存分配工具查看应用程序的内存要求。

    1月

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

    您好!

    正如 Jan 所指出的、CC3200只有256KB RAM、您需要在其中容纳程序的所有代码和数据存储器。

    如果您的程序中需要该结构、可使用以下几个选项进行探索:

    1.尝试将编译器优化设置为最大设置。 根据您的代码、它可能会也可能不会节省大量空间、但值得作为第一步尝试。

    2.请查看是否可以将结构从一开始就静态声明为200KB,直到需要使用为止。 CC3200具有可用于文件存储的持久串行闪存、如果您有常量数据、例如、您只需很少访问、那么您只需将此数据作为文件存储在串行闪存上、 然后在需要时一次读取它的块。 如果你的结构更多地是一个临时缓冲区、看看你是否可以修改你的程序以使用更小的块、甚至可能是从堆动态分配、这样你就不需要同时分配全部200KB。

    3.更改为 CC3220SF 器件。 该器件具有1MB 的片上闪存、可用于代码存储器、因此可从 RAM 中卸载代码占用的所有存储器、并将其用于您的结构。 虽然您仍需要查看所有非代码数据是否都可以放入 RAM 中、但如果您有额外的1MB 用于 code.us、则执行此操作将更加容易

    使用 CCS 或 IDE 的内存分配工具查看当前的分配是一个很好的第一步、这样您就可以了解需要释放多少内存以及哪些选项可能有用。 您可以使用 View->Memory Allocation 交互来显示程序的内存占用空间。

    请查看上述内存分配以及选项、并让我们了解您的结构和内存分配的详细信息、以便我们更好地了解您的用例。

    此致、

    Michael