注意:この文書は私が自分のために翻訳したものであり、いかなるベンダー、コミュニティのレビューも受けていません。場合によっては重大な翻訳ミスがあるかも知れません。文書の位置づけとして、当然ながら私は著作権を主張しません。著作人格権は留保します。以上をふまえてご活用ください。

STM32 Primer2ユーザーズ・ガイド

2008-11-14版を基としています

1.概要

STM32-Primer2は革新的でローコストという評価を得ており、楽しく簡単な開発パッケージによりARM Cortex(TM)-M3を搭載したSTM32の機能を使うことができます。
以前のSTM32-Primer(2007年にリリースされた)に基づいていますが、STM32-Primer2は革新的なデザインと、ユーザーコミュニティの活発な活動を反映して開発されました。より多くのユーザーインターフェースとリチウムイオンバッテリによる長い耐久力をもち、さらに多くの周辺機器とSTM32F103Vはより多くのメモリー(512KBフラッシュROMと64KBのRAM)をもちます。Primer2はあなたのアプリケーションを開始するために、完全な、低いリスクの環境です。

STM32-Primer2の人間工学に基づいたデザインは、MEMS-ベースのコントロールの仕方(前後左右に傾けることで行う)と、ディスプレイを直接タッチする方法と、ジョイスティック、4つのメニューボタンがあります。 CAN(Car Area Network)、IrDA(赤外線)、MicroSDカードスロット、さらにハードウェアcodecをもつマイク、スピーカー、ヘッドフォンがついています。これらのインターフェースを、楽しく簡単にコントロールできるデモのファームウェアが提供されています。さらに、STM32マイクロコントローラのリソースを利用したグラフィカルユーザーインターフェースとゲームも含まれています。

含まれているファームウェア(CircleOSによるタスクスケジューラ、システムサービスとデモのアプリケーション)は、STM32に接続された周辺機器をローレベルな機能でドライブします。さらに、新しいアプリケーションの動的なロードと管理ができます。すべてのファームウェア、デモ(Cのソースとプロジェクト)と将来使用可能となるアプリケーションはSTM32-Primer2専用サイトからダウンロードできます。
STM32-Primer2とRide7ソフトウェアツールセットはSTM32プログラミングとデバッグに必要なものすべてを提供します。これは

  1. インサーキットのプログラミングとデバッグのためのUSBホスト接続
  2. Ride7はコードの編集、デバイスプログラミングとアプリケーションデバッグのための統合開発環境を提供します。(含まれているバージョンでは、デバッグは32Kまでのコードです。Rideのバージョンをアップグレードすると制限はありません。詳細はhttp://www.stm32circle.com/resources へ
  3. GNU C/C++コンパイラー(制限なしのコンパイル)

2.STM32-Primer2ハードウェア

2.1 内容物

箱を開けると
  1. . プラスチックケース内のSTM32-Primer2
  2. . ホストPCと接続するUSBケーブル。これはSTM32マイクロコントローラのプログラミングとデバッグに使います。他にもこのケーブルは、あなたのプログラムがUSBクライアントアプリケーションとしてふるまう場合も使います。
  3. . CD-ROMにはRKit-ARM用Ride7とすべてのSTM32-Primer2文書がはいっています。

詳細

STM32-Primer2の全体です。

STM32-Primer2は以下の装置をもっています。

2.3 STM32-Primer2ケースを開けると

STM32-Primer2のケースを開けることは簡単です。ネジもクリップもありません。ふたつにあけることができ、片方からはオレンジの部品を外すことができます。
基盤は片方にネジ止めされていますから注意してください。こちら側はディスプレイのコネクタなど、繊細でケースから外すべきでないものです。

注意:STM32-Primer2で障害を避けるために、基盤はケースから外すべきではありません。

2.4 Micro SDカードの取り付け、取り外し

STM32-Primer2はマイクロSDカードスロットを搭載しており、データを保管することができます。
Micro SDカードをスロットに挿入するためにはSTM32-Primer2ケースを開けると、基板上のMicro SDカードスロットが、バッテリーの近くにあります。
Micro SDカードをスロットに挿入し(カードの端子は下側です),そっと差し込んでください。カードもPrimer2も壊さないように!

Note: Micoro SDカードを取りはずす時、引き抜かないでください。一度、深く押し込むとバネで出てきます。

2.5 STM32マイクロコントローラの機能

STM32-Primer2はSTM32F103VET6を装備しており、新しいST、Cortexベースの32ビットマイクロコントローラです。このデバイスの主な特徴は:

2.6 MEMES加速度検知

STM32-Primer2はMEMS慣性センサー(LIS3LV02DL STMicoroelectronics製)を装備しています。このデバイスはSTM32-Primer2においては、コマンドを選んだり、グラフィックポインターを扱ったり、というヒューマンインターフェースに使用されています。STM32-Primer2を最初に動かした時に、STM32-Primer2回路の方向により動く小さいボールを見ることができます。MEMSにより3Dの位置が知らされているのです。
CD-ROMの中には3D検知についての完全なドキュメントがあります。サンプルはMEMSの多くの機能の評価に役立つでしょう。

2.7 電源

STM32-Primer2のは400mAhリチウムイオンバッテリーを搭載しており、バッテリーチャージのための安定化電源ももっています。
PCに接続したUSBコネクターからバッテリ充電の電気を取ります。 USBホストが接続されていない場合、バッテリーはSTM32-Primer2に電源を供給します。 バッテリが完全に充電されると、STM32-Primer2は約6時間動作します。動作時間はPrimer2の動作により変動します。たとえばバックライトの点灯、消灯(メニューの"Setting"参照)やCPUの周波数によっても伸びたり、縮んだりします。

2.8 他の情報

このドキュメントはSTM32-Primer2について基本的な使い方、ハードウェア、ファームウェアの機能について書いてあります。ツールやPrimer2のさらに詳しい使い方については次のようなものがあります。

3.始めるにあたり

3.1 バッテリの接続、充電と電源投入

STM32-Primer2は最初はバッテリが未接続の状態で出荷されています。これは放電と思わぬバッテリの障害を防ぐための処置です。Primer2を動作させるために、最初にバッテリを接続する必要があります。

3.2 動作させる

オープニングの画面が出た後、メインメニューを呼び出すためにボタンを押します。
Primer2を前後に傾けたり、ジョイスティックを使うことでメニューを選択できます。最初のメニューは次の項目です。

Config
Primer2の構成パラメータです。ポインターやLCDディスプレイのバックライトの時間などを設定できます。
MazeM
サンプルとしていれらているゲームです。ソースはwww.stm32circle.com で入手できます。
Applic
動かすアプリケーションを選択できます。選択したアプリケーションがメインメニューに出ます。
About
CircleOSのバージョンや使用可能メモリーサイズなどの情報が表示されます。
Shutdown
Primer2をオフにしたり、再起動したりできます。単純にボタンを押すだけです。

ノート:Primer2購入直後は、MEMSコントローラは垂直から30度傾いたところをポジション"ZERO"に調整されています。Primer2の調整は青いドットをメインスクリーンに移動させることでできます。少しだけ練習がいります。

プリインストールされているアプリケーション

Primer2は次のアプリケーションをプリインストールしてあります。

コンフィギュレーション メニュー

STM32-Primer2が使えるかのチェックのために、構成とテスト用のアプリケーションがプリインストールされています。メインメニューからConfigコマンドを選ぶと、以下のパラメータがセットできます。

  1. CPU Freq. - STM32-Primer2のスピードをセットできます。
  2. Backlight - バックライトの調整です。バックライトはもっとも電気を消費します。できるだけ使わないようにすると、バッテリーを節約できます。
  3. Time - STM32-Primer2の日時の設定をします。RTCクロックは電源をオフにしていても、動作し続けます。
  4. Test - STM32-Primer2が正常かテストします。

さらに他のプログラムをwww.stm32circle.com/projectsからダウンロードして導入することができます。4章の"CircleOSアプリケーションの管理"を参照してください。

3.3 ARM用Ride7ツールセットをインストールする

CD-ROMには、STM32ファミリーを評価することの役に立つ、たくさんのリソースが入っています。

ノート:Ride7はUSBポートに機器を接続する前に導入しておく必要があります。

3.4 STM32アプリケーションサンプルを動かす

Ride7のRki-ARMと一緒に、いくつかのサンプルが導入されます。例えば、以下のサンプルはシンプルながらSTM32-Primer2のプログラムとして参考になるでしょう。

[Ride7が導入されたフォルダ]\Examples\ARM\Primer\STM32Primer2\toggle\toggle.rprj"

4. CircleOSアプリケーションの管理

CircleOSアーキテクチャ

STM32-Primer2はSTM32F103と512KBのフラッシュROM,64KバイトのRAMをもっています。
STM32-Primer2はCircleOSを埋め込んであります。(ソースは、http://www.stm32circle.comにあり、登録すれば見ることができます) STM32-Primer2のアプリケーションの開発を次ようなサービスを提供することで支援します。

  1. アプリケーション管理
  2. LCDグラフィックの機能
  3. メモリーの機能
  4. LED,ブザー、プッシュボタンの機能
  5. メニュー
  6. タスクのスケジューラー
  7. 。。。。。

CircleOSは独立したアプリケーションをロードできます。それぞれのアプリケーションはCPUをフルにつかえ、RAMもOSが使っていないところは使えます。(CircleOSは2000000hから20003FFFhまでを占めています)明示的に終了するまで、デバイスのフルの機能をCircleOS下で使えます。

4.2 CircleOSスケジューラー

CircleOSはいくつかのステージをもっています。イニシャルステージは、デバイスをリセットした時、SYStickの割り込みが起きた時、アプリケーションのスケジューリングが起きた時に起きます。

4.2.1 初期化ステージ

初期化ステージの間で、ハードウェアの構成が行われます、また周期的システムタイマー(systick)が導入されます。
Systickの刻み目はRCCのセッティングによります。これは"Config | CPU Speed"メニューで変更可能です。

LevelCPU FreqSystick Freq
118MHz0.75 KHz
224MHz1 KHz
336MHz1.5 KHz
448Hz2 KHz
572MHz3 KHz

(CPU周波数/SysTick = 24000)という比率がすべての値に共通したものです。

4.2.2 周期的systick割り込み

周期的systickはCircleOSのsystick割り込みハンドラーを呼び出させます。この割り込みハンドラーはSTM32-Primer2の構成要素(LED, ボタン、ブザー,LCD)のそれぞれを少し稼動させます。MEMSのハンドラーはとくにTimer2割り込みを呼び出しますが、この割り込みはSystickよりも高い優先順位をもっています。これは測定の頻度を確実にするためのものです。12Sがオーディオコーデックチップに転送するのは、12Sの割り込みにより処理されます。

4.2.3 アプリケーションスケジューラ

CircleOSはSTM32-Primer2の基本アプリケーションです。メニューの選択に対応したり、ユーザーのアクションに反応したりします。
あるアプリケーションを走らせると(通常、メニュー選択によりますが)、CircleOSはそのアプリケーションの初期化ルーチンを呼び出します。次にSystickの周波数ごとにアプリケーションの処理ルーチンを呼び出すことを繰り返します。これはMENU_LEAVEの値が検出されるまで続きます。
第5章の"CircleOSのアプリケーションの作り方"に詳細があります。

4.3 CircleOSメモリーマップ

CircleOSのファームウェアは64KBのフラッシュと4KBのRAMを必要とします(アプリケーションのためのスタック領域を含みます)残りの448K(512-64)はアプリケーションで使用可能です。プログラミングツールで追加したり減らしたりできます。(後述)
フラッシュメモリーは1KBブロックのみがプログラム可能です。以下の数字はメモリーマップの例です。

4.3.1 CircleOSに使用されるリソース

STM32-Primery2上で稼動するアプリケーションの管理。

アプリケーションは"circle_mgr.exe"ユーティリティで管理されています。それは"[RIDE7_導入Dir]/Bin"ディレクトリーにあります。このユーティリティはSTM32-Primer2が以下のことをするためにあります。

より詳しい情報はhttp://www.stm32circle.com/を参照してください。以下は"circle_mgr.exe"ユーティリティで可能なコマンドです。

コマンド形式説明
リストL

ロードされているアプリケーションをリストする。
次のような情報が表示されます。

circle_mgr.exe L


Reading FAT table ...
App0: Name=Maze,   Addr=0x08006000, Size=8KB
App1: Name=Breakout,  Addr=0x08008000, size=4KB
Largest free block= 92KB
加えるAファイル名

新しいアプリケーション(オブジェクトファイル)を加える

circle_mgr.exe Ac:\tmp\level.o

Linking file C:\tmp\level.o...
Link of C:\tmp\level.o suceeded...
Hex file generated...
Blank-Checking the FLASH area...OK
Programming file _tmp_.ld.hex to flash...OK
Registering application in FAT... OK
消去E*
Eアプリケーション名
circle_mgr.exeEMaze /* 'Maze'のみを消す */
cicle_mgr.exe E* /*すべてのアプリを消去 */
待たせるW

バッチファイルでコマンドを実行する場合、Wコマンドは実行を待ち、結果をチェックする

開始SCPUの実行開始

注意:"cortex_pgm.exe"ユーティリティを使いどんな16進数ファイルであってもSTM32-Primer2のフラッシュメモリーに書き込むことができます。しかし、これはCircleOSのファームウェアを破壊し、再度、インストールすることになります。(4.7章"工場出荷時の構成に戻す"を参照してください。)

4.5 現在のアプリケーションを選択する

注目しているひとつのアプリケーションを”現在のアプリケーション”といいます。現在のアプリケーションのIDはバックアップメモリーに保管されます。メインメニューから、いきなり呼び出すことができます。
現在のアプリケーションを変更するには、メインメニューの"Application"コマンドを選んでください。次にアプリケーションを”現在のアプリケーション”として選び、ボタンを押してください。新しい”現在のアプリケーション"がメインメニューに表示されます。

4.6 新しいアプリケーションをダウンロードする

Circle WEB(http://www.stm32circle.com/projects)にはstm32circleコミュニティのメンバーでアプリケーションを共有するデータベースがあります。アプリケーションはソースコードとオブジェクトファイルのものか、オブジェクトファイルのみのものがあります。

アプリケーションは普通はひとつのオブジェクトファイルですが、まれに複数のオブジェクトからなるものもあります。そういうアプリケーションの場合は、circle_mgr.exe([RIDE7_導入Dir]/bin にあります)を使ってリンクするか、Ride7環境の中でリンクする必要があります。複数のオブジェクトに分かれたアプリケーションのおのおののオブジェクトは、circle_mgr.exeに引数としてユニークなファイル名を与えるために、ひとつのライブラリー内でユニークな名前でなければなりません。

4.7 工場出荷時の構成に戻すには

CircleOSアプリケーションやSTM32-Primer2の構成を変更しているうちに、工場出荷時の初期設定に戻したいという場合、以下の手順で行ってください。

  1. PCにSTM32-Primer2のデバッグ用USBポートを接続します。
  2. ボタンを押してSTM32-Primer2の電源を入れます。
  3. Windowsからコマンドプロンプトを出してください。(Start|すべてのプログラム|アクセサリー|コマンドプロンプト)
  4. 現在のディレクトリーをRide7がインストールされているフォルダーに変えます。以下のようなコマンドをいれます。
    cd "C:\program files\Raisonance|Ride"
  5. さらにSTM32用ライブラリーに変えます。
    cd lib\ARM\CircleOS
  6. Stm32-Primer2を消去し、工場のROMイメージ("circle.hex")を再度プログラミングし、再起動します。これらの作業は下記のひとつのコマンドで行います。
    cortex_pgm TSTM32F103VET6 E PPRIMER2_Circle_Factory.hex S

これらのオペレーションには、およそ30秒程度かかるでしょう。

4.8 STM32-Primer2のリセットの仕方

STM32-Primer2をリセットする方法はいくつかあります。

4.8.1 ハードウェアリセット

ハードウェアリセットはPrimer2を(きれいな状態に戻してから)リスタートします。しかし、ROMの中身は移動できません。

4.8.2 ソフトウェアリセット

ソフトウェアリセットはSTM32-Primer2のフラッシュメモリーをすべて消します。すべてのアプリケーションとCircleOSは消去されます。

初期プログラムをリロードするためには、以下のコマンドを使います。

cortex_pgm TSTM32F103VET6 PPrimer2_circle.hex S

"Primer2_circle.hex"はWebサイト上で使用可能なすべてのアプリケーションです。

CircleOSアプリケーションの開発

CircleOSのすべてのソースコードは、http://www.stm32circle.com/ にあります。メンバー登録するとダウンロードできます。また関連した多くのアプリケーション開発のためのリソースがあります。
最初にSTM32-Primer2に配布されているゲームはアプリケーションサンプルです。

5.1 最初のCircleOSアプリケーションの開発

CircleOSアプリケーションの作成はRide7上で自動的にできます。

  1. "Project|New project"を開きます
  2. "Type"選択リストで"New Appicationを選択します
  3. "Processor"選択リストで"STM32_Primer2_CircleOS"をARMファミリーの中から選びます
  4. アプリケーション名を選択します。"My CircleOS aplication"みたいな名前です。
  5. 新しいプロジェクトを置く場所を指定します
  6. "Finish"ボタンをクリック
  7. 新しいプロジェクトが作成され,CircleOSアプリケーションの作成に必要なスケルトンファイル、Circle.elfやFAT.elfなどが作られます。これらはCircleOSとアプリケーションを繋ぐために必要なファイルです。
  8. "Application.c"ファイルを開きます
  9. ファイルの中にApplication_Nameという変数がありますから、探します
  10. Application_Nameの値を"My App"から"HELLO"に変えます
  11. 関数Application_Handlerの中で次のような文字列を加えます。
    const char msg[] = "Hello, World!";
  12. STM32-Primer2に今の文字列を表示させるためにはDRAW_DisplayStringというCircleOSのサービスを使います:
    DRAW_DisplayString( 5, 20, msg, sizeof(msg)); // X, Y, string, length
  13. USBケーブル(STM32-Primer2は"debug"ポート側です)でPCと接続します
  14. Ride環境から"Debug|Start"にいき、STM32-Primer2にプログラミングします。およそ15秒くらいかかります。
  15. "Debug|Run"にいきます
  16. STM32-Primer2上でメインメニューから、今作ったアプリケーションを選びます。

STM32-Primer2上に、今作ったアプリケーションがあるはずです。

より詳しいCircleOSアプリケーションプログラミングやOSのサービスについては、http://www.stm32circle.com/を参照してください。

5.2 ライブラリー

CircleOSアプリケーションの開発をより簡単にするために、いくつかのサービスがあります。

  1. STにより書かれたSTM32ライブラリは、STM32に組み込まれた周辺機器にアクセスする機能を提供します(Timer,ADC,コミュニケーションインターフェース、温度計など)
  2. STM32-Primer2上の機器、3D加速度計、LCDモニター、ボタン、ブザー、バッテリー、LEDについては、CircleOSのローレベルの機能がサポートしています
  3. グラフィック機能はパワフルなハイレベルの機能を提供しています。メニュー管理、ポインター(3D加速度計にリンク)、文字表示、音。

ライブラリーのソースファイルは

アプリケーションのデバッグについて

アプリケーションをデバッグするためには、Ride7の"Project | Properties"にいき、"Configuration"選択ボックスで、Circle_Debug,Circle_Rleaseを選べます。Circle_Debugを選択していることを確認してください(こちらがデフォルトです)。Ride7はこの構成でデバッグなのかリリースなのかのモードをスイッチし、セットします。

標準的なSTM32-Primer2は最初の32KZBしかデバッグできません。http://www.stm32circle.comよりソフトウェアキーを購入すると、512KBすべてのデバッグが可能となります。

Circleコミュニティでアプリケーションを共有する

アプリケーションが正しく動くようでしたら、他のメンバーと共有することもできます。http://www.stm32circle.com/を参照してください。

リサイクル

省略