【问题标题】:Reduce the size of Flash memory embedded cpp [closed]减小闪存嵌入式 cpp 的大小 [关闭]
【发布时间】:2017-07-04 15:15:54
【问题描述】:

经过大量研究,我找不到任何问题的解决方案(如果我这样做了,我就不会在这里......) 我正在寻找允许我减少程序使用的闪存的解决方案。

我正在编写一个嵌入式 c++ 程序,当我在释放模式下刷新我的电子卡时,一切都很好,因为它不会溢出闪存的空间,但是当我在调试模式下这样做时,情况并非如此...我想知道是否有可能找到可以减少闪存的功能(我的目标是在不减少代码的情况下做到这一点)。我已经考虑过碎片整理,但我什至不知道如何在嵌入式中做到这一点虽然我什至不知道我是否可以......我也尝试了来自 gcc 的 -Os cmd,但没有任何大的成功

所以我正在接受任何建议或支持,我会在任何关于我的问题的问题中出现;)

谢谢!

【问题讨论】:

  • 调试版本通常很大。您是否尝试过将调试符号与二进制文件分开?
  • @Joe:符号表通常不会进入嵌入式闪存。
  • 没错,但我目前对他的系统一无所知。
  • 你的问题太宽泛了。哪个平台?什么样的闪存?代码是如何组织的?为什么不使用具有更大 Flash 的设备进行开发?如果您已经处于 Flash 的边缘,您以后可能会遇到更新问题。
  • @Joe:这就是 cmets 的用途:要求澄清/缩小范围。如果问题不可挽救,或者投票结束。 (像这个)。

标签: c++ embedded flash-memory


【解决方案1】:
  1. 查看您的地图文件。有没有你没有的东西 预计?您不期望的函数(如浮点数,或 异常处理等)或一些不合理的大?
  2. 打开除您感兴趣的文件之外的优化。
  3. 确保您实际上已启用优化(查看构建日志并确保您已将 -Os 传递给每个编译步骤)
  4. 考虑链接时间优化,但不要期待奇迹

欢迎来到嵌入式编程。 90% 的工作是弄清楚如何将永无止境的需求填充到可用的内存中。冲洗并重复。

【讨论】:

  • 嗨!好吧..谢谢你的时间和回答,Russ Schultz,你的第三步给了我解决方案,我检查了我的 makefile,我有一个不在 -Os 中的标志,现在我使用的闪存不到一半... -Os 很强大哈哈。再次感谢
  • 1.如果没有链接不必要的功能,这应该不是问题 - 无论如何这应该是默认值。 2 -4 实际上无视调试。 2) OOP(C++ 暗示)代码存在问题,其他代码通常无法调试。
  • @olaf #1 专门用于确保您不会链接不必要的函数(加上传统链接不会剔除需要其他符号的目标文件中未使用的函数)。 #2-#4...欢迎使用嵌入式编程:jtag 是一种奢侈,而使用 -g 编译整个项目的内存是白日梦。
猜你喜欢
  • 2011-05-08
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 2011-05-28
相关资源
最近更新 更多