2008-11-14版を基としています
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プログラミングとデバッグに必要なものすべてを提供します。これは
STM32-Primer2の全体です。
STM32-Primer2は以下の装置をもっています。
STM32-Primer2のケースを開けることは簡単です。ネジもクリップもありません。ふたつにあけることができ、片方からはオレンジの部品を外すことができます。
基盤は片方にネジ止めされていますから注意してください。こちら側はディスプレイのコネクタなど、繊細でケースから外すべきでないものです。
注意:STM32-Primer2で障害を避けるために、基盤はケースから外すべきではありません。
STM32-Primer2はマイクロSDカードスロットを搭載しており、データを保管することができます。
Micro SDカードをスロットに挿入するためにはSTM32-Primer2ケースを開けると、基板上のMicro SDカードスロットが、バッテリーの近くにあります。
Micro SDカードをスロットに挿入し(カードの端子は下側です),そっと差し込んでください。カードもPrimer2も壊さないように!
Note: Micoro SDカードを取りはずす時、引き抜かないでください。一度、深く押し込むとバネで出てきます。
STM32-Primer2はSTM32F103VET6を装備しており、新しいST、Cortexベースの32ビットマイクロコントローラです。このデバイスの主な特徴は:
STM32-Primer2はMEMS慣性センサー(LIS3LV02DL STMicoroelectronics製)を装備しています。このデバイスはSTM32-Primer2においては、コマンドを選んだり、グラフィックポインターを扱ったり、というヒューマンインターフェースに使用されています。STM32-Primer2を最初に動かした時に、STM32-Primer2回路の方向により動く小さいボールを見ることができます。MEMSにより3Dの位置が知らされているのです。
CD-ROMの中には3D検知についての完全なドキュメントがあります。サンプルはMEMSの多くの機能の評価に役立つでしょう。
STM32-Primer2のは400mAhリチウムイオンバッテリーを搭載しており、バッテリーチャージのための安定化電源ももっています。
PCに接続したUSBコネクターからバッテリ充電の電気を取ります。
USBホストが接続されていない場合、バッテリーはSTM32-Primer2に電源を供給します。
バッテリが完全に充電されると、STM32-Primer2は約6時間動作します。動作時間はPrimer2の動作により変動します。たとえばバックライトの点灯、消灯(メニューの"Setting"参照)やCPUの周波数によっても伸びたり、縮んだりします。
このドキュメントはSTM32-Primer2について基本的な使い方、ハードウェア、ファームウェアの機能について書いてあります。ツールやPrimer2のさらに詳しい使い方については次のようなものがあります。
STM32-Primer2は最初はバッテリが未接続の状態で出荷されています。これは放電と思わぬバッテリの障害を防ぐための処置です。Primer2を動作させるために、最初にバッテリを接続する必要があります。
オープニングの画面が出た後、メインメニューを呼び出すためにボタンを押します。
Primer2を前後に傾けたり、ジョイスティックを使うことでメニューを選択できます。最初のメニューは次の項目です。
ノート:Primer2購入直後は、MEMSコントローラは垂直から30度傾いたところをポジション"ZERO"に調整されています。Primer2の調整は青いドットをメインスクリーンに移動させることでできます。少しだけ練習がいります。
Primer2は次のアプリケーションをプリインストールしてあります。
STM32-Primer2が使えるかのチェックのために、構成とテスト用のアプリケーションがプリインストールされています。メインメニューからConfigコマンドを選ぶと、以下のパラメータがセットできます。
さらに他のプログラムをwww.stm32circle.com/projectsからダウンロードして導入することができます。4章の"CircleOSアプリケーションの管理"を参照してください。
CD-ROMには、STM32ファミリーを評価することの役に立つ、たくさんのリソースが入っています。
ノート:Ride7はUSBポートに機器を接続する前に導入しておく必要があります。
Ride7のRki-ARMと一緒に、いくつかのサンプルが導入されます。例えば、以下のサンプルはシンプルながらSTM32-Primer2のプログラムとして参考になるでしょう。
[Ride7が導入されたフォルダ]\Examples\ARM\Primer\STM32Primer2\toggle\toggle.rprj"
STM32-Primer2はSTM32F103と512KBのフラッシュROM,64KバイトのRAMをもっています。
STM32-Primer2はCircleOSを埋め込んであります。(ソースは、http://www.stm32circle.comにあり、登録すれば見ることができます) STM32-Primer2のアプリケーションの開発を次ようなサービスを提供することで支援します。
CircleOSは独立したアプリケーションをロードできます。それぞれのアプリケーションはCPUをフルにつかえ、RAMもOSが使っていないところは使えます。(CircleOSは2000000hから20003FFFhまでを占めています)明示的に終了するまで、デバイスのフルの機能をCircleOS下で使えます。
CircleOSはいくつかのステージをもっています。イニシャルステージは、デバイスをリセットした時、SYStickの割り込みが起きた時、アプリケーションのスケジューリングが起きた時に起きます。
初期化ステージの間で、ハードウェアの構成が行われます、また周期的システムタイマー(systick)が導入されます。
Systickの刻み目はRCCのセッティングによります。これは"Config | CPU Speed"メニューで変更可能です。
| Level | CPU Freq | Systick Freq |
|---|---|---|
| 1 | 18MHz | 0.75 KHz |
| 2 | 24MHz | 1 KHz |
| 3 | 36MHz | 1.5 KHz |
| 4 | 48Hz | 2 KHz |
| 5 | 72MHz | 3 KHz |
(CPU周波数/SysTick = 24000)という比率がすべての値に共通したものです。
周期的systickはCircleOSのsystick割り込みハンドラーを呼び出させます。この割り込みハンドラーはSTM32-Primer2の構成要素(LED, ボタン、ブザー,LCD)のそれぞれを少し稼動させます。MEMSのハンドラーはとくにTimer2割り込みを呼び出しますが、この割り込みはSystickよりも高い優先順位をもっています。これは測定の頻度を確実にするためのものです。12Sがオーディオコーデックチップに転送するのは、12Sの割り込みにより処理されます。
CircleOSはSTM32-Primer2の基本アプリケーションです。メニューの選択に対応したり、ユーザーのアクションに反応したりします。
あるアプリケーションを走らせると(通常、メニュー選択によりますが)、CircleOSはそのアプリケーションの初期化ルーチンを呼び出します。次にSystickの周波数ごとにアプリケーションの処理ルーチンを呼び出すことを繰り返します。これはMENU_LEAVEの値が検出されるまで続きます。
第5章の"CircleOSのアプリケーションの作り方"に詳細があります。
CircleOSのファームウェアは64KBのフラッシュと4KBのRAMを必要とします(アプリケーションのためのスタック領域を含みます)残りの448K(512-64)はアプリケーションで使用可能です。プログラミングツールで追加したり減らしたりできます。(後述)
フラッシュメモリーは1KBブロックのみがプログラム可能です。以下の数字はメモリーマップの例です。
アプリケーションは"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コマンドは実行を待ち、結果をチェックする |
| 開始 | S | CPUの実行開始 |
注意:"cortex_pgm.exe"ユーティリティを使いどんな16進数ファイルであってもSTM32-Primer2のフラッシュメモリーに書き込むことができます。しかし、これはCircleOSのファームウェアを破壊し、再度、インストールすることになります。(4.7章"工場出荷時の構成に戻す"を参照してください。)
注目しているひとつのアプリケーションを”現在のアプリケーション”といいます。現在のアプリケーションのIDはバックアップメモリーに保管されます。メインメニューから、いきなり呼び出すことができます。
現在のアプリケーションを変更するには、メインメニューの"Application"コマンドを選んでください。次にアプリケーションを”現在のアプリケーション”として選び、ボタンを押してください。新しい”現在のアプリケーション"がメインメニューに表示されます。
Circle WEB(http://www.stm32circle.com/projects)にはstm32circleコミュニティのメンバーでアプリケーションを共有するデータベースがあります。アプリケーションはソースコードとオブジェクトファイルのものか、オブジェクトファイルのみのものがあります。
アプリケーションは普通はひとつのオブジェクトファイルですが、まれに複数のオブジェクトからなるものもあります。そういうアプリケーションの場合は、circle_mgr.exe([RIDE7_導入Dir]/bin にあります)を使ってリンクするか、Ride7環境の中でリンクする必要があります。複数のオブジェクトに分かれたアプリケーションのおのおののオブジェクトは、circle_mgr.exeに引数としてユニークなファイル名を与えるために、ひとつのライブラリー内でユニークな名前でなければなりません。
CircleOSアプリケーションやSTM32-Primer2の構成を変更しているうちに、工場出荷時の初期設定に戻したいという場合、以下の手順で行ってください。
cd "C:\program files\Raisonance|Ride"
cd lib\ARM\CircleOS
cortex_pgm TSTM32F103VET6 E PPRIMER2_Circle_Factory.hex S
これらのオペレーションには、およそ30秒程度かかるでしょう。
STM32-Primer2をリセットする方法はいくつかあります。
ハードウェアリセットはPrimer2を(きれいな状態に戻してから)リスタートします。しかし、ROMの中身は移動できません。
ソフトウェアリセットはSTM32-Primer2のフラッシュメモリーをすべて消します。すべてのアプリケーションとCircleOSは消去されます。
cortex_pgm S
初期プログラムをリロードするためには、以下のコマンドを使います。
cortex_pgm TSTM32F103VET6 PPrimer2_circle.hex S
"Primer2_circle.hex"はWebサイト上で使用可能なすべてのアプリケーションです。
CircleOSのすべてのソースコードは、http://www.stm32circle.com/ にあります。メンバー登録するとダウンロードできます。また関連した多くのアプリケーション開発のためのリソースがあります。
最初にSTM32-Primer2に配布されているゲームはアプリケーションサンプルです。
CircleOSアプリケーションの作成はRide7上で自動的にできます。
const char msg[] = "Hello, World!";
DRAW_DisplayString( 5, 20, msg, sizeof(msg)); // X, Y, string, length
STM32-Primer2上に、今作ったアプリケーションがあるはずです。
より詳しいCircleOSアプリケーションプログラミングやOSのサービスについては、http://www.stm32circle.com/を参照してください。
CircleOSアプリケーションの開発をより簡単にするために、いくつかのサービスがあります。
ライブラリーのソースファイルは
アプリケーションをデバッグするためには、Ride7の"Project | Properties"にいき、"Configuration"選択ボックスで、Circle_Debug,Circle_Rleaseを選べます。Circle_Debugを選択していることを確認してください(こちらがデフォルトです)。Ride7はこの構成でデバッグなのかリリースなのかのモードをスイッチし、セットします。
標準的なSTM32-Primer2は最初の32KZBしかデバッグできません。http://www.stm32circle.comよりソフトウェアキーを購入すると、512KBすべてのデバッグが可能となります。
アプリケーションが正しく動くようでしたら、他のメンバーと共有することもできます。http://www.stm32circle.com/を参照してください。
省略