« Fedora 11にCellクロス開発環境(SDK 3.1)をインストール | トップページ | STM32 Primer2の電源回路とバッテリー駆動時間 »

STM32 Primer2

以前からARMを触ってみたいと思っていたのですが、STM32 Primer2を買ってしまいました。写真に示す通り携帯電話サイズで思ったより小型でした。

Stm32primer2

以下に示すデバイスを内蔵しており、自分が必要なハードはほぼそろっています。

  • STM32F103E(ARM Cortex M3コア、512KB flash ROM、64KB SRAM)
  • カラーLCDディスプレー(128 x 160) + タッチスクリーン
  • 4方向プラス押しボタンのジョイスティック
  • 三軸加速度センサー
  • Micro SDカードスロット
  • Li-Ionバッテリー駆動
  • USBインターフェース
  • 拡張ボード搭載エリア

これだけ入って秋月電子さんで6200円と価格的にもお得です。ハード的には完成しており自作の余地が少ない点が趣味的使用にはマイナスとも思えたのですが、パッケージングのよさに引かれて買ってしまいました。

この後の計画としては、GPSモジュール(こいつならケース内に入りそう)を追加してGPSロガー制作を考えています。妄想レベルですが、愛車のECUから信号を取り出せれば(メンテナンスコネクターに出ている信号をUSBに変換するアダプターがあるみたい)、燃費・速度・アクセル開度などの走行データーも一緒にロギングすることができそうです。

応用は今後の課題として、今日は開発環境のインストールを中心に気がついた点を記載します。

開発環境のインストール

製品添付のCD-ROMに開発環境が収録されていますが、バージョンが古いためコミュニティーWebサイトにある最新版のインストールを試みました。開発環境は、Ride7(IDE)とRKit-ARM(GNU Toolchain、ライブラリ類)に分かれているのですが、Ride7のインストール後半にエラーが発生して中断してしまいます。再度インストーラーを起動してRKit-ARMをインストールすると一通りのファイルは展開されるようです。この状態ではUSBドライバーがインストールされていないのですが、"[インストールdir]\Ride\Driver\RLinkDrv\RLinkUSBInstall.exe"を起動することでインストールができました。

上記のインストールにて、IDEを使用したプログラムのビルド・Flash ROMへの書き込み・デバッグは正常に動作しました。GUIツール(RFlasher7)を使用したFlash ROM書き込みはうまく動作しませんでしたが、コマンドライン(batファイル)を使用した書き込みはできているためよしとします。デバックイメージの書き込みはIDEのGUI操作からできています。

コミュニティーWebサイトからダウンロードできる一つ前のCD-ROMイメージは正常にインストールできますが、最新版の方が動作が若干軽快なこと、後で書きますがLPC2xxxのサポートが追加されたことから最新版(Ride 7.24.09, RKit-ARM 1.22.09)を使っています。

インストール問題解決(2009/9/21):
Forumに問題をアップしたところ、この件はVista環境でInstallerがJScriptを起動できないことに起因するとの解答がありました。リンクに示す対策にてインストールが正常動作するようになりました。RFlasherは依然としてうまく動作しません(操作が間違っているような気がするのですが、マニュアルがいまいちでよく分からず)。

一つ前のCD_STM32-Primer_BN14.zipをインストールした場合、flashプログラマーにバグがあるため要注意です。BN14を使用する場合、Primer2_Upgrade v3.71をダウンロードし、以下のファイルを"[インストールdir]\Ride\bin"ディレクトリにコピーします。

  • circle_mgr.exe
  • cortex_pgm.exe
  • cortexdrv.dll
  • monitortools.dll
  • RLink_WinUSB.dll

Ride7を使ったデバッグ

以下の画面に示すようにソースコードレベルのデバッグが出来ます。デバックの制御はJTAGではなく、Cortex M3でサポートされたSW-DP(Serial Wire Debug Port)をUSB経由で制御しているようです。

Ride7_ide_20090920

無償版のIDEでは、デバッグできるコードサイズが最大32KBという制限があります(コンパイル・リンクは無制限)。この点は購入前から認識していたのですが、ユーザーアプリ32KBが全てデバック対象だと思っていました。マニュアル(STM32-Primer2 User Manual)をよく見ると、32KBにはCircleOSと呼ばれるファームの24KBを含むため、ユーザーアプリとしてデバック可能なサイズは8KBのみになることが分かりました。この点はがっかりです。

追加ライセンスを購入することでコード制限なしのデバッグが可能となりますが、STM32 Primer2 Upgrade for Unlimited Debugging(68ユーロ)の追加購入が必要です。

LPC2xxxサポート

Ride7の新規プロジェクト作成ダイアログを見ると、以下のように"LPC2x"のエントリがあります。

Ride724_newproject

LPC2xはARM7TDMIベースのMCUで、トラ技2009年5月号付録のLPC2388もメニューに現れます。ひょっとして、LPC2388の開発も可能か? JTAGが使えないためデバッグは無理だと思いますが、一度試してみようかと思います。

CircleOS

CircleOSとは、STM32 Primer2のI/O制御・プログラム起動制御を行ってくれるファームェアです。最新のV3.80はサイズが128KBあり結構大きいですが、LCD表示・加速度センサーの情報取得などの基本的なI/O処理ルーチンを提供してくれるため便利と言えば便利です。I/O制御に加えて、MCUのクロック速度変更(リセットなしに反映可能)、バックライト輝度調整、アプリケーション起動などの機能があります。

製品出荷時に書き込んであるCircleOSはバージョンが古いため最新版に更新しました。Ride 7.24.09をインストールした場合は、"[インストールdir]\Ride\lib\ARM\CircleOS"フォルダにある以下のbatファイルを実行することで、最新のV3.80に更新できます。

  • Update_Primer2_Circle_OS.bat: CircleOSのみを更新
  • Restore_Primer2_Circle_Factory.bat: CircleOSの更新に加えて、サンプルアプリをインストール(MP3プレーヤーやゲーム類が多数)

CircleOSを使用した開発

CircleOSを使用した場合、Ride7 IDEで「Primer → STM32_Primer2_CircleOS」を選択すると自動的にCソースコードのフレームワークが生成されます。フレームワーク内の以下の関数にコードを追加することでアプリケーションを作成できます:

1)Application_Ini ( void ):
起動時に一回だけ実行される →初期化コードを実装

2)Application_Handler ( void ):
  周期的に起動される →アプリケーションの処理本体を実装

上記はArduinoのsetup(), loop()関数に相当します。スタートアップルーチンやI/O処理を全部自前でコーディングすればCircleOSなしでも動作が可能です。

Application_HandlerはSystick割り込み周期で呼び出されます。マニュアルによると、72MHz動作時のsystic割り込み周期は3KHzです(0.33ms 間隔)。ただ、実際にApplication_Handlerが呼び出される周期は3KHzより遥かに長いように思えます。Application_Handlerが呼び出される毎にLEDをON/OFFする簡単なコード実行すると、点滅が目に見えます。LEDの点滅周期からは、数百ms周期でしか呼び出しが発生していない感じです。これではリアルタイム性が高い処理ができないため、この点はもう少し調べたいと思います。

STM32 Primer2やCircleOSは回路図やソースコードは公開されていますが、内部構造のハッキング系ドキュメントはほとんどなく、上記のApplication_Handlerの呼び出し周期が遅い点などは自分でソースを読んだりして調べるしかなさそうです。この点はお楽しみということでぼちぼち進めていこうと思います。

Application_Handlerの呼び出し周期(2009/8/21):
Forumで答えを発見しました。Application_Handler call周期 = Systick周期は過去の仕様で、現在は以下のようにsystick / 100になっているとのこと。(マニュアルの修正漏れということなんですね)

設定 Clcok Systic周期 Application handler周期
0 18 MHz 750 Hz 7.5Hz   133 ms
1 24 MHz 1000 Hz 10 Hz   100 ms
2 36 MHz 1500 Hz 15 Hz   66 ms
3 48 MHz 2000 Hz 20 Hz   50 ms
4 72 MHz 3000 Hz 30 Hz   33 ms

systick周期 = clock / 24000
Application handler周期 = systick /100

もう少し調べてからブログに書かねば、、

2009/9/24追記:
デバック制限解除ライセンス(STM32 Primer2 Upgrade for Unlimited Debugging)の記載を修正。

« Fedora 11にCellクロス開発環境(SDK 3.1)をインストール | トップページ | STM32 Primer2の電源回路とバッテリー駆動時間 »

STM32-ARM」カテゴリの記事

コメント

この記事へのコメントは終了しました。

2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ