内蔵フラッシュメモリのサイズが十分ではありません


11

私のプロジェクトの1つで、Texas機器のTM4C1230C3PMIコントローラーを使用しています。32KBの内部フラッシュがあるため、アプリケーションには不十分です。より高いフラッシュサイズのマイクロコントローラーが市場で利用可能であり、使用できますが、このマイクロコントローラーのみを使用したいと思います。私の知る限りでは、外部EEPROMを使用して合計フラッシュサイズ(プログラムメモリ)を増やすことができます。

私の考えは正しいですか?

そうでない場合は、コントローラーの合計フラッシュメモリサイズを増やす方法を提案してください。


1
通常、外部フラッシュはデータの保存に使用されます。これは、内部フラッシュがほとんどのEEPROMよりも少ない消去/書き込みサイクルを可能にし、バイト単位で上書きできるためです。外部バスインターフェイスを備えたCPU(これにはありません)では、外部プログラムメモリを追加できます(ただし、これは少し複雑です)。理論的には、コードの一部を外部EEPROMに保存し、このコードをRAMにロードして実行することは可能ですが、ほとんどの場合、このシナリオは現実的ではありません。
マーティンローゼナウ

3
何年も前、関連する格言は「1Kでできないなら、できない」というものでした。私はそれが賢くて考える価値があると思ったが、実際には受け入れなかった。その後、MicroChessは1Kで到着しました。
user2338816

1
外部メモリからコードを起動しないのはなぜですか?uCに接続できる外部メモリは多数あります。コードを外部から起動するため、これは内部フラッシュに制約を課しません。
-AkshayImmanuelD


回答:


22

プログラムメモリ(フラッシュ)を拡張することはできません。TIは、フラッシュとRAMを2倍にした同じチップを製造していますが、他に変更はありません:TM4C1230D5PMI

より大きなフラッシュでチップを使用できない場合は、コードサイズを小さくする必要があります。

  • 高価なprintf機能などのデバッグを無効にします。A printf点出力を浮動支持体は、通常、5キロバイト、10キロバイトの周りに戻ってあなたを設定すること。
  • 最適化を有効にしてコンパイルしてください-Os。通常、コンパイラフラグはです。
  • 最新のコンパイラは、リンク時間最適化(LTO)を実行できます。gccを使用すると、これを取得できます-flto-fltoすべてのファイルについて、コンパイル段階とリンク段階の両方に渡す必要があります。これにより、通常、生成されるコードサイズが30%〜50%削減されます。

2

アセンブラーと目的に合わせて設計されたForthに似た言語を使用することで、ソフトウェアのフットプリントを最小にすることができます。もう1つは、ほとんど同一のコードが多数ある場合の圧縮マシンコードです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.