メモリサイズのプリプロセッサ定数はありますか


13

使用可能なフラッシュ/プログラム領域に応じて、コンパイルで一部のコードを除外したいと思います。私がサポートするライブラリのデモコードで使用されます。私の現在の解決策は、プロセッサタイプの#ifdefを使用することです。しかし、私はもっと一般的であり、すべてのさまざまなチップを指定する必要はありません。むしろ、利用可能なサイズを示すプリプロセッサ定数があればいいでしょう。

私がgccやavr-gccで十分に流notでない場合は、ヒープの開始と終了を定義する定数に似た定数を見つけることを期待するかもしれません。

ケースの例。UNOとLeoの両方に32Kのフラッシュがあるということです。しかし、LeoのコアライブラリはUSBサポートに4Kを使用しているため、利用可能なのは28Kだけです。私のライブラリのデモはUNOでほぼ最大限に活用されており、利用可能なプログラムスペースに基づいて自動的にトリムします。


私はこれを行うプログラムを見てきましたが、私はいずれかを見つけることができません
TheDoctor

回答:


10

io__.hご使用のマイクロコントローラーのファイルを検索します。Linuxではにあり/usr/lib/avr/include/avr、Windowsでは多少似た場所にあります。

という部分までスクロールします/* Constants */。そこにいくつかの興味深いマクロが定義されており、興味のあるマクロFLASHENDです。たとえば次のように使用できます。

#if FLASHEND > 0x8000
/* Include some extra code when sufficient flash is available. */

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