*STM32F4 [#p0ae4973] Cortex M4Fアーキテクチャを搭載した新型MCU。コアクロックが168MHz(210 DMIPS)、SRAMが192KB、DSP、FPUを搭載している事が特徴です。 まだ何も出来ていませんが、入手ネタをメモ。 **評価ボード [#m2a3a14d] ***STM32F4 Discovery [#h41273af] -[[ST Micro>http://www.st.com/internet/mcu/subclass/1521.jsp]] -[[Strawberry Linux>http://strawberry-linux.com/catalog/items?code=32110]] -搭載チップは''STM32F407VGT6'' (RevAはエラッタのためSTM32F2系とまったく同様のMCUIDになっている) -JTAGデバッガST-LINK/V2機能内蔵 -[[LIS302DL>http://strawberry-linux.com/catalog/items?code=18065]](加速度センサ),[[MP45DT02>http://www.st.com/internet/analog/product/251680.jsp]](マイクロフォン),[[CS43L22>http://cirrus.com/jp/products/cs43l22.html]](オーディオDAC+D級アンプ)搭載 -USB OTG機能搭載 **コンパイラ・ツールキット [#pae03af0] CodesourceryはすでにCortex-M4Fに対応しています。 **メモ [#c3b26048] ***メモリ構成 [#l26cd44d] -非常に癖がある。 -Ether-MAC & USB-OTGを使わないのであれば、統合して128KBのSRAMが連続アドレス空間として扱えます。 |Start|End|サイズ|接続先|h |0x2000_0000|0x2001_BFFF|112kByte|AHBバスマトリクス&br;Main SRAM| |0x2001_C000|0x2001_FFFF|16kByte|AHBバスマトリクス&br;Ether-MAC & USB-OTG HS用&br;Main SRAMと同時にアクセス出来る作りです| |0x1000_0000|0x1000_FFFF|64kByte|コアに直接接続((Core Coupled SRAM))&br;DMAのR/Wの対象には出来ません| **FPU(浮動小数点演算ユニット) [#i098a537] -STM32F4のFPUは''単精度''の浮動小数点ユニットを持っています。 -コンパイラへのオプション -msoft-float("-mfloat-abi=soft"と同じ意味) ↓ -mfloat-abi=softfp -mfpu=fpv4-sp-d16 '''-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でビルドされていますので、標準関数使用するとリンクの際に不整合エラーになります。&br; 回避のためには'''-mfloat-abi=hard'''でビルドし直すか。'''-mfloat-abi=softfp'''を指定します。 -FPUは浮動小数点命令が行われる前に(つまり起動時)に有効にする必要がある。例えば'''system_stm32f4xx.c'''の'''SystemInit()'''の最初で行われています。 -