STM32F4 †
Cortex M4Fアーキテクチャを搭載した新型MCU。コアクロックが168MHz(210 DMIPS)、SRAMが192KB、DSP、FPUを搭載している事が特徴です。
まだ何も出来ていませんが、入手ネタをメモ。
評価ボード †
STM32F4 Discovery †
コンパイラ・ツールキット †
CodesourceryはすでにCortex-M4Fに対応しています。
メモ †
メモリ構成 †
- 非常に癖がある。
- Ether-MAC & USB-OTGを使わないのであれば、統合して128KBのSRAMが連続アドレス空間として扱えます。
Start | End | サイズ | 接続先 |
0x2000_0000 | 0x2001_BFFF | 112kByte | AHBバスマトリクス Main SRAM |
0x2001_C000 | 0x2001_FFFF | 16kByte | AHBバスマトリクス Ether-MAC & USB-OTG HS用 Main SRAMと同時にアクセス出来る作りです |
0x1000_0000 | 0x1000_FFFF | 64kByte | コアに直接接続*1 DMAのR/Wの対象には出来ません |
FPU(浮動小数点演算ユニット) †
-mfpu=fpv4-sp-d16が無いと倍精度の命令になりHardFaultします。
- オプションの意味
-mfloat-abi=soft | 浮動小数点の演算に整数命令のみで構成された浮動小数点演算ライブラリ(soft-float)を使う。 |
-mfloat-abi=softfp | 浮動小数点の演算に浮動小数点演算命令を使うが、floatを引数にする関数の呼び出し規約はsoft-floatと同じく汎用レジスタを使って値を渡す。 |
-mfloat-abi=hard | 浮動小数点の演算に浮動小数点演算命令を使い、floatを引数にする関数は浮動小数点レジスタを使って値を渡す。 |
- Sourcery Codebench Lite版にある標準関数等のライブラリはsoft-floatでビルドされていますので、標準関数使用するとリンクの際に不整合エラーになります。
回避のためには-mfloat-abi=hardでビルドし直すか。-mfloat-abi=softfpを指定します。
- FPUは浮動小数点命令が行われる前に(つまり起動時)に有効にする必要がある。例えばsystem_stm32f4xx.cのSystemInit()の最初で行われています。