May 19, 2009

STM32F103とH8

STM32F103シリーズを使っているとH8シリーズとの設計思想の違いを感じる。
 H8シリーズでは無秩序に周辺機能を追加していった結果、系列が少しでも
違うと周辺の初期化ルーチンを大幅に書き直さなければならなかったのに対し
STM32F103ではメモリサイズ、パッケージが違っても多くのソースが共通で
使えるのがありがたい。
 もちろん、STM32F103はまだ歴史が浅く品種も少ないがH8は長い歴史の
中で拡張を重ねてきたという違いはある。それでもH8がCPUコアから設計し
周辺も含めてハードウェア技術者の視点から作られているのに対し、STM32Fは
標準のARMコアを利用することが出来たおかげでソフトウェア技術者の
視点で周辺機能の仕様が作られている。だから、プログラムを作るユーザから
みるとSTM32Fシリーズの方が使いやすく思えるのだろう。

一例としてベクタテーブルをRAM上に割り付ける機能をみると
H8ではFlashのRAMエミュレーションという機能を使ってそれが可能だが
ただでさえ小さいRAMの中途半端な場所にしかベクタテーブルを配置
できないのに対し、STM32Fは位置を指定するレジスタによって
RAMの先頭にベクタテーブルを配置できる。
 たぶんH8の設計陣の頭には組み込み用のワンチップCPUでは
ブートモニタによってプログラムを書き込み、起動するという使い方など
想定外なのだろう。
 しかし組み込み製品のファームウェアを後からアップデートしたい
ときにはUSBやシリアルを通じてアプリケーションプログラムを書き
換えることが出来ると利便性が高くなる。
 ルネサスからはブートローダプログラムも提供されているが、これがまた
使いにくい代物で無償で使用する場合は「責任を持ちません」と書いた
赤い字のメッセージが表示されるためユーザにこれをアップデートツールと
して使って貰うことはとてもできないがSTM32F103にはFlash書込み用の
関数がサンプルとして提供されていてそれを使うと簡単にアップデート機能を
持つブートモニタを作ることができてアップデートツールとして不特定多数の
ユーザに提供できる。

May 17, 2009

STM32F103のプログラム


雨が降ったので釣りに行かず会社でSTM32F103ZET搭載制御ボード用モニタのデバッグをして遊ぶ。
半分は開発ツールJDEの改良など。
STM32F103ZETはSTM32F103-P52に使っているSTM32F103RBTのメモリがRAM64KB、ROM512KBに拡張されているのと144pinQFPパッケージで外部にメモリや周辺がバス拡張できるところが異なる。
基本部分とUSB周りはSTM32F103-P52のモニタでそのままOK、外部バスにつながった周辺ICのアクセスが今日の課題。
H8に較べて高機能なのでマニュアルを読んで一からプログラムをするのは大変だが、サンプルプログラムが良くできているのでEVAKITのFSMC用サンプルから移植して数行追加して何とか動いた。
AVRのメーカATMELが提供している組み込み用ARMのAT91SAM7Sも良くできているし、ドキュメントもまあまあだが、サンプルプログラムの質はSTMicroに軍配が上がる。
昔熱中したH8シリーズは過去の石になりつつある。

散歩


毎朝散歩に行く山道で。
春・夏は山道で遊ぶと犬たちにダニがつきます、
かといって、団地の中の道だけだと犬たちの精神衛生上悪いので遊んだ後気をつけてメンテするようにしています。
フィラリア&蚤・ダニ駆除の薬をつけているので見逃したダニも皮膚に食いついてしばらくするとしなびて死んでしまいます。