2017-07-04 8 views
-2

多くの研究の後、私は私の質問に解決策を見つけることができませんでした(もし私がここにいなかったら...) 私は私に許可する解決策を探しています私のプログラムで使用されているフラッシュメモリを減らしてください。埋め込まれたフラッシュメモリのサイズを小さくする

私は埋め込みC++プログラムをプログラミングしていますが、私がリリースモードで電子カードをフラッシュすると、フラッシュメモリのスペースがあふれないので問題はありませんが、デバッグではそうではありませんモード...私はフラッシュメモリを減らす可能性がある関数を(私の目標はコードを減らさずに行うことです)見つけることが可能かどうかを知りたいと思います。私はすでにデフラグについて考えていましたが、埋め込み私ができるかどうか分からなくても... gccから-Os cmdを試しましたが、大きな成功はありませんでした。

私は何かアドバイスやサポートをしています。私の問題について;)

よりks!

+2

通常、デバッグビルドは大きくなります。バイナリからデバッグシンボルを分離しようとしましたか? – Joe

+2

@Joe:シンボルテーブルは通常、埋め込みフラッシュには入りません。 – Olaf

+0

真実ですが、現時点では彼のシステムについては何も知りません。 – Joe

答えて

0
  1. マップファイルを見てください。そこには何かがありますか は期待していますか?期待していない関数(浮動小数点数、 例外処理など)または不当に大きなもの
  2. 興味のあるファイル以外の最適化を有効にしてください。
  3. 実際に最適化が有効になっていることを確認してください(ビルドログを見て、各コンパイルステップに-Oが渡されていることを確認してください)
  4. は、リンク時の最適化を考えてみたが、奇跡

組み込みプログラミングへようこそ期待しないでください。仕事の90%は、終わりのない要件を利用可能なメモリに埋める方法を考え出しています。すすぎ、繰り返します。

+0

こんにちは! よく..あなたの時間と答え、おかげでラスシュルツ、あなたの3番目のステップは私に私のメイクファイルをチェックし、私は1つのフラグが-Oではなかったと今私は私のフラッシュメモリの半分以下を使用していた...オハイオ州は強力なハハです。 ありがとうございました – Benjamin

+0

1.不要な機能がリンクされていない場合は問題ありません。いずれにせよデフォルトにする必要があります。 2 -4は実際にデバッグを無視します。 2)はOOP(C++が暗示している)コードでは問題があり、他はコードを一般的にundebuggableにします。 – Olaf

+0

@olaf#1は、不要な関数をリンクしないように特別に用意されています(従来のリンクは、必要なシンボルを持つオブジェクトファイル内の未使用関数を削除しません)。 #2-#4 ...組み込みプログラミングへようこそ。ここで、jtagは、プロジェクト全体の贅沢さとメモリで、-gでコンパイルするのはパイプの夢です。 –

関連する問題