STM32F4

Cortex M4Fアーキテクチャを搭載した新型MCU。コアクロックが168MHz(210 DMIPS)、SRAMが192KB、DSP、FPUを搭載している事が特徴です。

まだ何も出来ていませんが、入手ネタをメモ。

評価ボード

STM32F4 Discovery

  • ST Micro
  • Strawberry Linux
  • 搭載チップはSTM32F407VGT6 (RevAはエラッタのためSTM32F2系とまったく同様のMCUIDになっている)
  • JTAGデバッガST-LINK/V2機能内蔵
  • LIS302DL(加速度センサ),MP45DT02(マイクロフォン),CS43L22(オーディオDAC+D級アンプ)搭載
  • USB OTG機能搭載

コンパイラ・ツールキット

CodesourceryはすでにCortex-M4Fに対応しています。

メモ

メモリ構成

  • 非常に癖がある。
  • Ether-MAC & USB-OTGを使わないのであれば、統合して128KBのSRAMが連続アドレス空間として扱えます。
StartEndサイズ接続先
0x2000_00000x2001_BFFF112kByteAHBバスマトリクス
Main SRAM
0x2001_C0000x2001_FFFF16kByteAHBバスマトリクス
Ether-MAC & USB-OTG HS用
Main SRAMと同時にアクセス出来る作りです
0x1000_00000x1000_FFFF64kByteコアに直接接続*1
DMAのR/Wの対象には出来ません

FPU(浮動小数点演算ユニット)

  • 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でビルドされていますので、標準関数使用するとリンクの際に不整合エラーになります。
    回避のためには-mfloat-abi=hardでビルドし直すか。-mfloat-abi=softfpを指定します。
  • FPUは浮動小数点命令が行われる前に(つまり起動時)に有効にする必要がある。例えばsystem_stm32f4xx.cSystemInit()の最初で行われています。

*1 Core Coupled SRAM

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-11-11 (金) 12:05:47