0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ビュート ローバーARM(Vstone社)のCygwin開発環境構築

Last updated at Posted at 2020-01-10

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を検索するとリンカスクリプトととして設定されていた。

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()をコールしており問題なかった。

cr_startup_lpc13.c
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が自動生成/更新するらしく、ライブラリパスが絶対パスになっており、これを相対パスに修正する。

makefile
 arm-none-eabi-gcc …… -L"../lib" ……

subdir.mkも同様に絶対パスを相対パスに変更する。
makeを実行すると libcr_semihost.a がリンクエラーになる。
これはPCのエミュレータ環境でファームを実行したときに、printf()を出力する時に使用するライブラリである。
不要なのでリンカスクリプトのINCLUDEごとコメントアウトする。

vs-wrc103lv_Release.ld
/* INCLUDE "vs-wrc103lv_Release_lib.ld" */

再びmakeをすると、環境によってはコンパイルに成功してファームが作成されるかもしれないが、マイコンボードに焼いても動作しない可能性が高い。
または、checksumコマンドか無くてファーム作成に失敗するかもしれない。

checksumコマンドの差し替え

ファームにチェックサムを付加しており、ファーム更新時に正しいか確認しているらしい。
適当なチェックサムコマンドを使うと互換性がなくファームが動作しない。
次のURLからダウンロードしたchecksumを使用する。
checksum_lpc760.zipのダウンロード
windowsの環境変数のPathにインストールフォルダを指定し、Cygwinからchecksumコマンドが起動できることを確認する。
makeを実行し、作成されたファームをマイコンボードに焼くとLEDが交互に点灯する。

参考文献

・Vstone社: VS-WRC103LV取扱説明書

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?