Sparkfun Ultimate-IMU 開発報告書
その1.サンプルfirmwareの焼き方についての調査
									2011/04/21 yoshi
1.目的
　本報告書では，SparkFun社のUltimateIMUのサンプルFirmwareをコンパイルして，センサーに焼きこむまでの作業手順をまとめる．(http://www.sparkfun.com/products/10082)
図1.Ultimate-IMU
　Ultimate-IMUは，CPUにArduinoではなくARMのLPC2148を使っているため，お手軽な開発環境が用意されていない．また，製品ページにも開発方法についての記述がほとんどない．そこで，コンパイルおよびロムへの焼きこみ方法を調査して本書に記述する．
　コンパイルしたいソースコードは、
(https://github.com/ryowens84/Ultimate-IMU/tree/master/Main)
である．結果として，コンパイル環境にWinARM(elf)、ロムライタにFlashMagicを使うことで開発環境を用意することができた．

2.コンパイルの方法
　ARM用のコンパイラは、WinARM(elf)を使う．この辺(http://www.micwire.net/b3/b.cgi?mode=archive&month=200904)を参考にインストールした．

a.ダウンロードとインストール
WinARMのWEBサイト
(http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/#winarm)から，WinARM 20060606 zip-Archiveをダウンロードして解凍する．
Cドライブの直下にWinARMフォルダ(c:\WinARM)を作り，解凍したフォルダの中身を移動する．
[注意]gcc-elfバージョンで書かれたソースコードをコンパイルしたいので、この20060606バージョンを使う必要がある．新しいgcc-eabi版では，開発環境の不備(http://hp.vector.co.jp/authors/VA000177/html/WinARM.html)や，ソースの手直しが必要になるので使わない．

b.make用のbatファイル作成
setup.batというファイル名で新しくファイルを作り，中身を次のようにする．
set ARM=c:\WinARM
set PATH=%ARM%\bin;%ARM%\utils\bin;
C:\WinARM\utils\bin\make all
pause

c.farmwareのソースのダウンロードとコンパイル
ソースコードをWEBからダウンロードして，適当な場所に解凍する．
https://github.com/ryowens84/Ultimate-IMU/tree/master/Main
LibraryとMainの2つのフォルダができる．Mainの方にMakefileが入っている．
次に，bで作ったsetup.batをMainにコピーする．
setup.batをダブルクリックして実行する．すると，Windowsのコマンドプロンプトが開いてコンパイルが始まり，図2のようにコメントを残して終了する．

図2.コンパイル終了時のコマンドプロンプト
Mainフォルダを開き，main.hexが出来ていればコンパイルは完了．

3.ROMの焼きこみ
　ROMの焼き込みには，Flash Magic(http://www.flashmagictool.com/)を使う．
ダウンロードしてインストールすると，図3のようにGUIが立ち上がるので，各設定項目を埋めていく．
Step1.
Select DeviceでLPC2148を選択する．
COMポートは実際に使用するCOM番号を選択する．
Baud Rateは9600のままでよい．
InterfaceもNone(ISP)のままにする．
Step2.
Erase blocks used by Hex Fileにチェックを入れる．
Step3.
焼くHEXファイルを選択する．main.hex
Step4.
そのままにする．
Step5.
センサーとシリアルポートの接続を終えて，焼きこむ準備が出来たらStartを押す．

図3.Flash MagicのGUI

　センサーとシリアルポートの接続は，次のものを使う．
シリアルケーブル（ストレート），ジェンダーチェンジャー（オス-オス)，
LPC Programmer，Ultimate-IMU，電源（LiPoバッテリー）
　(GPSセンサー，microSDカード，XBeeはここでは不要)
LPC ProgrammerとUltimate-IMUを直結して使う場合，Tx-Rxの論理が交差して接続されるので，ストレートケーブルを用いることが出来る．
ただし，LPC Programmerのコネクタはメスなので，オス-メスのケーブルまたはジェンダーチェンジャーを用意する必要がある．
接続し，LPC Programmerとセンサーのスイッチをそれぞれ次のように設定する．
LPC Programmer : PROG
Ultimate IMU : On

図4.ハードウェアの接続確認

　焼き込み前の接続確認には，[Tools]->[Terminal]を用いることが出来る．

図5.ターミナルによる接続確認
ターミナルを接続したCOM番号で開き，下側のInput>>に適当な文字を入力すると，上側のOutput>>にエコーバックが表示される．
この状態になっていれば，ROMへの焼き込みが出来る．センサーの電源に電池を使う場合，あらかじめ十分に充電しておくこと．

4.まとめ
　本報告書では，Spark FunのUltimate IMUに，サンプルfirmwareをコンパイルして焼きこむまでの方法を説明した．
　次回は，サンプルファームウェアを使ってセンサーの性能評価を行う予定である．