質問: プログラムのためにどれだけのフラッシュメモリが空いていますか? データシートを使用して、STM32F103C8T6(別名青い丸薬)用にプログラミングしています<ここで。 [14ページに記載されています。 > 2.3.2内蔵フラッシュメモリプログラムやデータを保存するために64または128キロバイトの内蔵フラッシュを使用することができます。 > > 今私の64 KBが、これは私が100%利用可能であることを意味する、またはいくつかの部分が減少しているという意味ですか?そして、もしそうなら、いくらですか?それとも(エラーが表示されるように?)それが「フィット」しないのかを調べる方法はありますか? STM32 ST-LINK V2を使用していますが、特別なブートローダは使用していません。開発環境はWorkbench 4 STM/Eclipseで、HAL/STMCubeを使用しています。 現在私は約19KBしか使っていませんが、まだ終わっていません(そしてこのコード内で単体テストを実行することもできますが、スイッチを切ることができますので、半分になります)。](https://www.st.com/resource/en/datheet/stm32f103c8.pdf)
回答: 典型的なマイクロコントローラでは、あなたは自分のコードで全てのフラッシュをプログラムすることができます。あなたは確かにTRMをチェックすることができます - それが最初のセクターのブートローダについて話すか、またはあなたが消去できないフラッシュの部分があるとあなたに言うならば、それらの部分は予約されています。しかし、通常あなたはそれをすべて手に入れます。 フラッシュの100%がコードに使用されるわけではないことに注意してください。フラッシュの開始時に割り込みベクトルアドレスがあります。静的変数の定数と初期化値もフラッシュに保存されます。おそらく製造元(ST)が提供するリンカースクリプトを使用して、リンカがこれを処理します。プログラムが大きすぎてフラッシュメモリに収まらない場合は、リンカによってエラーが発生します。 高度なプログラマは、独自のリンカスクリプトを作成し、必要なフラッシュの任意の部分にコードとデータを手動で割り当てることができます。たとえば、製造元のデフォルトのリンカスクリプトは通常、割り込みベクタをフラッシュの開始位置(RAMが不足している場合はRAM)に配置します。