STARM マイコン基板 (8)

IAR 社の開発ツールで「TGSTARM」をコンパイルできるように、ソースに変更を加えました。
リンク後のコードサイズは 38 Kバイト程度ですが、なぜか 32 K 制限に引っかからずにコンパイルできました。
ROM 中に配置した定数データ部分を参照するように指定する方法も分かりましたので、プログラムサイズが大きくなってコンパイル不可になった場合でも、定数データ部分を別オブジェクトに逃がす方法で進めていけます。
コンパイル結果のオブジェクト・プログラムの実行速度は、ふたつのコンパイラ間では大きな差は認められませんでした。
STMicro 社の用意したファームウェアライブラリ関数を使って、周辺デバイスの設定をするのが標準的なのでしょうが、最初は Keil 社のコンパイラを使って作り始めたので、IO ポートを直接叩く形のプログラムになっています。
それを IAR 社のコンパイラ向けに書き直しました。
具体的には、NVIC のベクタテーブルオフセットを設定する場合、標準的には、STMicro のライブラリを使い、

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x3000)

とするのが一般的ですが、Keil 社のコンパイラ用に

  SCB->ExceptionTableOffset = 0x00003000;

と書いていたのを、IAR 社のコンパイラ用に

  VTOR = 0x00003000;

と書き直しました。
これは違いが大きい場合の例ですが、通常は、

Keil社 TIM4->CCR3
IAR社 TIM4_CCR3

の程度の違いです。
どちらかと言えば、IAR 社の表現のように単純な変数や構造体としてアクセスするほうが普通で、Keil 社のようにポインタ経由でアクセスするのは珍しいです。
IAR 版は、ディジタル・リバーブのサポートをオンにしてあるのが違うくらいで、Keil 版と内容は同様ですが、IAR 版を暫定2版として、近日中にリリースしようと思います。