Other Parts Discussed in Thread: CC3200, CC3220SF
主题中讨论的其他器件: CC3220SF
尊敬的团队:
目前、我收到一个链接错误、如下所示
错误:-#10099-D:程序不能放入可用内存中。
当我使用一个大小大约为200kB 的结构时、会发生这个错误。 如果我移除结构并构建代码、它不会引发任何错误。
我想这种结构不适合数据部分、如果是、您能否提供适当的解决方案?
寻求快速响应。
提前感谢。
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.
您好!
正如 Jan 所指出的、CC3200只有256KB RAM、您需要在其中容纳程序的所有代码和数据存储器。
如果您的程序中需要该结构、可使用以下几个选项进行探索:
1.尝试将编译器优化设置为最大设置。 根据您的代码、它可能会也可能不会节省大量空间、但值得作为第一步尝试。
2.请查看是否可以将结构从一开始就静态声明为200KB,直到需要使用为止。 CC3200具有可用于文件存储的持久串行闪存、如果您有常量数据、例如、您只需很少访问、那么您只需将此数据作为文件存储在串行闪存上、 然后在需要时一次读取它的块。 如果你的结构更多地是一个临时缓冲区、看看你是否可以修改你的程序以使用更小的块、甚至可能是从堆动态分配、这样你就不需要同时分配全部200KB。
3.更改为 CC3220SF 器件。 该器件具有1MB 的片上闪存、可用于代码存储器、因此可从 RAM 中卸载代码占用的所有存储器、并将其用于您的结构。 虽然您仍需要查看所有非代码数据是否都可以放入 RAM 中、但如果您有额外的1MB 用于 code.us、则执行此操作将更加容易
使用 CCS 或 IDE 的内存分配工具查看当前的分配是一个很好的第一步、这样您就可以了解需要释放多少内存以及哪些选项可能有用。 您可以使用 View->Memory Allocation 交互来显示程序的内存占用空间。
请查看上述内存分配以及选项、并让我们了解您的结构和内存分配的详细信息、以便我们更好地了解您的用例。
此致、
Michael