Mac に LPCXpresso をインストールし、C でソフトを作る。
NXP のダウンロードサイトから LPCXpresso をダウンロードしてインストールする。
アクティベーションがちょっと面倒。
2014.04.03 時点では、lpcxpresso_7.1.1_125.pkg がダウンロードされる。
これを開くとインストーラーが動き出す。アプリケーションフォルダに「lpcxpresso_7.1.1_125」という名前のフォルダがつくられるが、どれがアプリの本体なのかわからない。
「Open lpcxpresso」というファイルがあるけれど、どこかのファイルへのエイリアスになっている。調べると・・・「Open lpcxpresso -> lpcxpresso/lpcxpresso.app/Contents/MacOS/lpcxpresso」と、なっている。
lpcxpresso フォルダの中をみると「lpcxpresso」という名前のアプリケーションがある。これだね。これをダブルクリックすると立ち上がる。Dock のオプションで「Dock に追加」をしておくと、今後は Dock から起動できる。
で、この lpcxpresso_7.1.1_125.pkg は、USB 関係で使われる SciInit() で問題が発生する。帰ってこない。ここで止まってしまう。
これでは使い物にならないので、7.1.1 から 7.0.0 に戻した。
2014.05.23 現在、バージョン 7.2.0_153 が公開されていて、これは SciInit() の問題はない。7.1.1 は使えないが、 7.2.0_153 は使える。
ほかにも問題が改善されている。原因不明だが、ビュートローバーのセンサーの値を返すように修正し、その後、リビジョンを返す関数を追加した。しかし、そのリビジョンはなぜかセンサーの値になっていた。この問題は 7.0.0 で発生していたが、7.2.0 では正しくリビジョンを返すようになった。かなりいい加減な C の処理系らしい。
サンプルでついてくる VS-WRC103LV_Sample_LED_20110118_1104.zip を解凍してビルド。
その後、VS-WRC103LV に書き込む。Debug フォルダに作成された「VS-WRC103LV_Sample_LEDなんたらかんたら.bin」をマウントした VS-WRC103LV にコピーするのだが、実行すると動かない。
ファインダからコピーすると不可視ファイルをいくつかつくるので、それが邪魔をしてうまくいかないと思われる。ちなみに Ubuntu Desktop でも試してみるが同様にうまくいかない。Mac でビルドした bin ファイルを Windows でコピーすると動くので、LPCXpresso は正しく動いているようだ。
Mac のターミナルでコピーすると正常に動いたので、そのときの手順をメモしておく。
- VS-WRC103LV を Mac に接続する
VS-WRC103LV のボタンを押したまま Mac に接続し、マウントされたらボタンを話す。このとき、VS-WRC103LV の電源は OFF にしておく。
マウントした VS-WRC103LV をファインダで開かないで、そっとしておく。
- ターミナルから次のコマンドで、古い farmware.bin を削除する
$ rm /Volumes/CRP\ DISABLD/firmware.bin
- 新しい bin ファイルをコピーする
「New_VS-WRC103LV_Firmware.bin」をコピーしている例。
$ cp New_VS-WRC103LV_Firmware.bin /Volumes/CRP\ DISABLD/
- VS-WRC103LV のマウントを解除し、イジェクトする
イジェクトする前に df コマンドで、Filesystem 名の確認を行う。
ここでは「/dev/disk1」になっている。
$ df -h Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/disk1 32Ki 7.0Ki 25Ki 22% 16 0 100% /Volumes/CRP DISABLD
df コマンドで調べた Filesystem 名で VS-WRC103LV をイジェクトする。
$ sudo diskutil eject /dev/disk1
- VS-WRC103LV を Mac から取り外す
付属している前進・後退のソフトをちょっと修正して LED を点滅させている例。
#include "lpc13xx.h" #include "gpio.h" #include "vs-wrc103.h" #include "ixbus.h" int main(void) { int ii; const unsigned short MainCycle = 60; Init(MainCycle); LED(3); while (getSW() != 1) { // ボタンが押されるまで待つ Wait(50); LED(0); Wait(50); LED(3); } LED(0); while (getSW() == 1) { ; // ボタンが離されるまで待つ } while (1) { // 前進 Mtr_Run_lv(10000, -10000, 0, 0, 0, 0); LED(3); Wait(1000); // 停止 Mtr_Run_lv(0, 0, 0, 0, 0, 0); LED(0); Wait(1000); // 後進 Mtr_Run_lv(-10000, 10000, 0, 0, 0, 0); for (ii = 0; ii < 10; ii++) { LED(1); Wait(50); LED(2); Wait(50); } // 停止 Mtr_Run_lv(0, 0, 0, 0, 0, 0); LED(0); Wait(1000); } return 0; }
=== そのほか
・LPCXpresso を起動した状態で、何もしていないのにエラーがでている。
これは気にしなくてもいい?
Description Resource Path Location Type make: *** [src/main.o] Error 1 C/C++ Problem
・Linux では注意!
ソースの中では「lpc13xx.h」となっているが、実際は「LPC13xx.h」と、大文字も使っているファイルがいくつかある。Mac/Win ではファイル名の大文字と小文字を区別しないので問題は起きない。でも Linux では大文字と小文字を区別するので、ファイルが見つからないというエラーが発生する。ファイル名を直すか、ソースを直す処置が必要。
・LPCXpresso は Eclipse
Eclipse のプラグインがそのまま使える。
MercurialEclipse をインストールして使っている。
LPCXpresso の設定変更のメモ:
タブはスペースにしたい。
General -> Editors -> Text Editors の Insert spaces for tabs にチェック。
C/C++ -> Code Style -> Formatter で、新しい profile を作成する。
その中で、Indentation を Spaces only にする。
Code Style の設定は、Source メニューの Format の時に使われる。
0 件のコメント:
コメントを投稿