Vstone社のBeauto Rover ARM(ビュートローバー)のCygwin開発環境の構築
はじめに
Vstone社のライントレースロボのビュートローバー(ARM版)を購入した。
C言語でファームが開発でき、mbed同様にUSBメモリとして認識されるフォルダにファームをコピーするだけでファーム更新可能。
C言語開発環境のLPC Expressに取り込めるLEDサンプルプロジェクトを見たら、コンパイラがarm-none-eabi-gcc!
STM32のCygwin開発環境用にインストールしていたので、コンソールで開発することにした。
必要な物の確認
コンソールで開発するには、リンカスクリプトとスタートアップアセンブラが必要なので、CD-ROMのLEDサンプル VS-WRC103LV_Sample_LED_20110118_1104.zipに含まれてるか確認する。
Releaseフォルダにvs-wrc103lv_Release.ldがあり、同フォルダにあるmakefileを検索するとリンカスクリプトととして設定されていた。
arm-none-eabi-gcc …… -T ……/wrc103lv_Release.ld ……
スタートアップアセンブラは、どのフォルダを探しても無かった。ARM Coretex-M3は電源投入後、0x0に設定されているアドレスをスタックに設定し、次の0x4に設定されてるアドレスをプログラムとして実行する。
ARMの標準規約でこの実行するアドレスはReset_Handlerにすることになっている。
Reset_Handlerをgrepするとcr_startup_lpc13.cに定義されていた。
内容を確認すると、インラインアセンブラで各セクションの初期化を行い、その後にmain()をコールしており問題なかった。
Reset_Handler(void) {
…(省略)…
__asm("ldr r0, =_bss\n"
"ldr r1, =_ebss\n"
…(省略)…
);
…(省略)…
# ifdef __USE_CMSIS
SystemInit();
# endif
…(省略)…
main();
while (1) {;}
あとは、SystemInit()が提供されてるかの確認。ARMの標準規約CMSISでは、マイコンコアの初期化をSystemInitで行い、ソースかライブラリで提供となっている。
SystemInitでgrepしたら、libCMSISv1p30_LPC13xx.aでヒットした。
開発に必要なものは揃っていると確認できた。
Cygwinのインストール
Cygwinのサイト にアクセスしてインストールする。makeが必要なので無ければsetup-x86(_64).exeを実行してバイナリをインストールする。
arm-none-eabi-gccのインストール
GNU-RM Downloads – Arm Developerのサイトからarm-none-eabi-gccをダウンロードしてインストールする。
windowsの環境変数のPathにインストールフォルダのbinを追加する。
cygwinを再起動して、arm-none-eabi-gccが実行できることを確認する。
makefile等の修正
LEDサンプルのmakefileはLPC Expressが自動生成/更新するらしく、ライブラリパスが絶対パスになっており、これを相対パスに修正する。
arm-none-eabi-gcc …… -L"../lib" ……
subdir.mkも同様に絶対パスを相対パスに変更する。
makeを実行すると libcr_semihost.a がリンクエラーになる。
これはPCのエミュレータ環境でファームを実行したときに、printf()を出力する時に使用するライブラリである。
不要なのでリンカスクリプトのINCLUDEごとコメントアウトする。
/* INCLUDE "vs-wrc103lv_Release_lib.ld" */
再びmakeをすると、環境によってはコンパイルに成功してファームが作成されるかもしれないが、マイコンボードに焼いても動作しない可能性が高い。
または、checksumコマンドか無くてファーム作成に失敗するかもしれない。
checksumコマンドの差し替え
ファームにチェックサムを付加しており、ファーム更新時に正しいか確認しているらしい。
適当なチェックサムコマンドを使うと互換性がなくファームが動作しない。
次のURLからダウンロードしたchecksumを使用する。
checksum_lpc760.zipのダウンロード
windowsの環境変数のPathにインストールフォルダを指定し、Cygwinからchecksumコマンドが起動できることを確認する。
makeを実行し、作成されたファームをマイコンボードに焼くとLEDが交互に点灯する。
参考文献
・Vstone社: VS-WRC103LV取扱説明書