オープンソースQZSS受信機開発キットの試食プログラムの書き込みと動作確認まで |
センサコム社から購入できるオープンソースQZSS受信機開発キットを試食しました。
オープンソースQZSS受信機開発キットとは、センサコム社より販売されている準天頂衛星の信号を受けるためのソフトウェアGPS受信機です。 ソースコードは東京大学の海老沼先生が開発されています。 このページではこの受信機へプログラムを書き込むまでを解説します。
受信機をばらしてみました。 中はSUPERSTAR2のボードとシリアル信号をUSBに変換するボードが搭載されていました。 ボードの裏には大きなARMマイコンやメモリと思しきICが搭載されています。
Windowsにおけるプログラムの開発環境について説明します。 SUPERSTAR2のCPUにはARMが使われているのですが、このマイコンの開発環境は何通りも有ります。 ここで紹介する方法は参考程度に考えて下さい。 私自身は今後の開発をEclipseに移したいなと考えています。
本受信機のプログラムソースコードは受信機を購入すると入手できます(購入しないと入手できない?)。 このプログラムの2010/12/4時点で配布されているバージョンの開発環境について説明します。
XPでの開発はWin7に比べると少し大変です。 環境を整えるのは時間がかかりますが、センサコムより入手できるソースコードとMakefileをいじらずに済む方法を紹介します。 先ずは図3.1の様にGNUARM実行形式版をここよりダウンロードしてインストールします。 バージョンはGCC-3.4 toolchainを選びます(未確認ですが、それより新しいものでもOKでしょう)。 インストール先にはCドライブ直下を選んで下さい。 次に、cygwinを数時間かけてインストールすれば終了です(4年前のPCで4時間…)。
Windows 7ではcygwinをインストールせずとも、GNUARMをインストールするだけでコンパイルを実行することが出来ます。 先ずはWindows XPと同様に図3.1の様にGNUARM実行形式版をここよりダウンロードしてインストールします。 インストール先にはいじらずに"next"を押し続ければOKです。 これでGNUARMはC:\Program Files\下にインストールされます。 後はコマンドプロンプトを起動させるショートカットをソースコードと同じフォルダに作ります。 このショートカットはプロパティから作業ディレクトリ欄を消しておけば起動時に呼び出したフォルダが起点になって便利です。
ビルドを実行するにはMakefileの一部を書き換える必要が有りあます。
図3.1 GNUARMのダウンロード
添付のCDやセンサコムのWEBサイトから圧縮されたソースコードをダウンロードしたら、適当なフォルダに解凍します。
Windows XPならば、解凍したフォルダをcygwinのホームディレクトリに置く必要が有ります。 makeを実行するには、cygwinコンソールを立ち上げてソースコードのあるディレクトリに移動し、makeを実行します。 ここで、もしGNUARMをインストールしたのがC:\Program Files\下であれば図4.1の様にエラーが出力されます。 この場合、Cドライブ直下にコピーで良いのでGNUARMのフォルダを置けばコンパイルが通るようになります。
Windows 7ならば、図4.2に有る様にMakefile内のディレクトリ指定部分を書き換えればmakeを実行できます。 展開したディレクトリを作業フォルダにしたコマンドプロンプトを立ち上げ、makeを実行すればコンパイル-リンクと順次実行されます
図4.1 Windows XPにおいてcygwinでmakeを実行したものの、GNUARMが指定アドレス(Cドライブ直下)に無かったために出力されたエラー
図4.2 Windows7においてコマンドプロンプトからmakeを実行してみた3回の試行と結果
1回目は指定したアドレスに半角スペースが入っていて失敗しています。
2回目はスペースのエラーを訂正するためにアドレス指定部分をダブルコーテーションでくくりました。
それでもlibmと云うライブラリファイル(libm.a)が無いとエラーが出力されています。
3回目はアドレスからcygwin依存のディレクトリ名を削って実行した結果で、makeは成功でした。
受信機へコンパイルしてできたプログラムを書き込みます。
コンパイルしたプログラムはRAM上で動きます。
先ずは受信機本体のRUN-PROGスライドスイッチをPROGへ切り替え、その脇に有るリセットボタンを押します。
書き込みにはソースファイルに同梱されているgpbootを使用します。
コマンドプロンプトより次の様に入力してエンターキーを押すと書き込みが始まります。
>gpboot -<COM_PORT> ramboot.bin osqzss.bin
ここで、<COM_PORT>は,受信機が認識されているCOMポートの番号です。
プログラムの書き込み例を図5.1に示します。
書き込みが成功すると自動的にシリアル(仮想COMポート)へデータが送信されます。
図5.1 書き込みの様子
1回目の書き込みは失敗しましたのでCOMポート番号をデバイスマネージャで再確認した後に受信機側の電源を入れ直してリセットボタンを押しました。
その後の再実行で上手く実行されて書き込み進行具合が表示されました。
シリアルはボーレート57600bps,データ幅8bit,ストップビット1bit,パリティなしと設定します。 シリアルデータの受信に成功すると図5.2の様に動作状況をモニタリング出来ます。 表示の意味はまだ知りませんw。
図5.2 tera term等のターミナルソフトを使えばこの様に表示されます