lynxeyedの電音鍵盤

MBDとFPGAと車載で使うデバイスの備忘録

LPCXpressoをMac OS Xで使いたい(ソフトウェア編)

        • -

(※2011年7月追記:OSXでMARY基板の開発について)
Google検索でこのページがヒットするようなのですが、
http://www45.atwiki.jp/marykiban/pages/38.html
にOSXでの開発について書かせて頂きました。ご覧ください。

        • -

小難しい事たくさんやらせる割に成果が見えない作業で好きではないのですが、今のARM環境をLinuxMac OS Xで行うにはEclipseかCodeLiteが必要になるでしょう。

今回はEclipse(GANYMEDE)を使用します。現状ではLPC-LinkがLPCXpresso IDE環境以外で動かせないので*1JTAGはとりあえず後回し。

この番組の提供は…
【参考にさせて頂いた素敵すぎる方々】
Yoneken様のソフトとハードの交差点:ARM LPC2388 開発環境構築方法 @Mac
ZUS様のARM LPC2388 開発環境構築方法
PukiWikiarm/開発環境のセットアップ


【開発環境とOS】

  1. Mac OS X 10.6.4(Snow Leopard)
  2. Eclipse (GANYMEDE)
  3. Zylin Embedded CDT
  4. arm-elf-gcc-4.3.2
  5. openocd
  6. arm-elf-gdb (version 6.8)

おそらく、DarWineやMikuinstallerなどX11系のソフトウェアをインストールしようと思った酔狂な方々なら導入済みだと思いますが、
MacPortsXcodeは事前にインストールしてください。特にMacPortsSnow Leopardになってからいろいろ問題あるようで…。
Eclipse導入について】
Eclipseに関してですが、この導入作業を行っていた時点ではGALILEOが最新バージョンでした*2が、コメントに日本語を書き込むと、いろいろ厄介な問題がありDefault Encodingを修正しても言う事聞かないなど(どうでもいいので中略)GANYMEDEを使用しました。
本家ダウンロードページから「Eclipse IDE for C/C++ Developers」をインストールする訳なんです。というわけでEclipse GANYMEDEのインスコは終わったものとして次へ(ヲイ

MacPorts経由でgcc導入】
arm/開発環境のセットアップを参照してぶっ飛ばしていきましょう
ターミナルで

$	sudo port install arm-elf-gcc

末尾にバージョンがついて厄介なのでシンボリックを貼ります

$	cd /opt/local/bin
$	sudo ln -s arm-elf-gcc-4.3.2 arm-elf-gcc

gdbの作成】
次に、gdbを作成します。 これはソースもらってきてビルド

$ tar zxvf gdb-6.8.tar.bz2
$ cd gdb-6.8/
$ ./configure --target=arm-elf --prefix=/opt/local/arm-elf/
$ make
$ sudo make install

【Zylin CDTの作成】
 Eclipseで、Help => Software UpdatesのAdd site...にてLocationに

http://opensource.zylin.com/zylincdt

を入力

ここまででEclipseとARM/gcc開発環境は整った。Zylin CDT導入後、Eclipseが再起動する旨を言ってきたらOKする。
参考サイトの方々が詳しく説明していらっしゃるので、ここでの説明は多くはしておりません。

【LPC1343プロジェクトの導入】
microBuilder.euというサイト様がちゃんとLPC1343向けのソースを用意してくださっています。
このサイトをいちど精読される事をお勧め致します。
ま、それは導入後で間に合うので、手っ取り早く進めちゃいましょう。
http://www.microbuilder.eu/Projects/LPC1343ReferenceDesign/LPC1343CodeBase.aspx
の中段にあるCurrent Beta Downloadからコードをもらってきます。(LPC1343_CodeBase_v0.20.zip)
もともと、Windows版CodeLite向けのプロジェクトとなっているのでMac OS XEclipseを使用する場合は少し改変が必要です。
デスクトップ(など解りやすいフォルダ)にこのzipファイルを解凍しておきます。
解凍したファイルにはまだ触れずにEclipseに戻ります。

File → New → C Project → Project Type:の項目で「Makefile Project → ●Empty Project」を選択し、Project Nameを適当な名前をつけて作成します。今回は「LPC1343_test」という名前にしました。これがデフォルトのワークスペースになっているならば

$HOME/Documents/workspace/LPC1343_test/

になっているはず。(Finderで見ると「書類」→「workspace」→「LPC1343_test」)

作成したら、空のプロジェクトのままEclipseは一旦終了。
先ほど解凍したフォルダ(LPC1343_Codebase)に戻ります。
f:id:Lynx-EyED:20100703083308p:image
写真のように、「tools」「build」以外のフォルダを選択し、ワークスペースに作成した「LPC1343_test」フォルダにコピー。

ここでEclipseにコンパイルさせて大成功…と言いたいのだが、gccチェックサムにバグがあるらしく生成した.bin(LPC1343にプログラムするバイナリ)は動いてくれない。それで、次の操作が必要になる。(詳細はこちらを参照)

取り残した「tools」フォルダをワークスペースフォルダにコピー。
ターミナルを立ち上げる。

$	cd  $HOME/Documents/workspace/tools/lpcrc/
$	make  clean
$	make

Eclipseを再起動すると、先ほどのコピーしたプロジェクトが見えているはずです。もしかしたら自動コンパイルまでしちゃってエラーを吐いているかもしれない。
ここで左のツリーからmakefileを探して開く。
f:id:Lynx-EyED:20100703085335p:image
このMakefileの38行目から記述されているビルドパスを修正。

##########################################################################
# GNU GCC compiler prefix and location
##########################################################################
# CROSS_COMPILE = arm-none-eabi-

AS = /opt/local/bin/arm-elf-as		
CC = /opt/local/bin/arm-elf-gcc		
LD = /opt/local/bin/arm-elf-gcc		
SIZE = /opt/local/bin/arm-elf-size	
OBJCOPY = /opt/local/bin/arm-elf-objcopy	
OBJDUMP = /opt/local/bin/arm-elf-objdump
OUTFILE = firmware

次いでに、85行目から始まっている「firmware:」の項目の最後に(恐らく96,97行目)次を追加

	../tools/lpcrc/./lpcrc $(OUTFILE).bin

これを保存し、メニューのProject→Cleanを選択すると、再コンパイルする。これでエラーが無いか確認します。
あったらここまでの行程での作業に不備が無いか確認。
次にLPCXpressoでLEDチカチカをしたいっす。
今まで作業していたこの↑プロジェクトもデフォルトはLEDチカチカプログラムなので利用します。
このプロジェクトではPIO2_10ポートで1秒間隔で点滅させているので、LPCXpressoボード上のPIO0_7ポートのLEDを点滅させるようにプログラムを変更する
projectconfig.hというファイルをソースツリーから探して開きます。
その52,53行目を次のように書き換え

#define CFG_LED_PORT              (0)
#define CFG_LED_PIN               (7)			

保存し、Project→Build All
エラーは無いはずなので、前回改造したLPCXpresso基板をUSB BootloaderモードにしてMacに接続します。

で、困った事に、LPC1343_testフォルダに生成されたfirmware.binをLPCXpressoへドラッグアンドドロップでコピーすると、上手く行かないんです。
勘の良い方は、「ああ、不可視ファイル.DS_Storeが邪魔してるんでしょ?設定書き換えればいいじゃん」となるんですが、*3それだけが原因ではないようです。今の所未解決なのですみません。ターミナルを使います。orz
MacにLPCXpresso接続後

$	rm  -rf  /Volumes/CRP\ DISABLD/*.bin
$	cd  $HOME/Documents/workspace/LPC1343_test/
$	cp  firmware.bin  /Volumes/CRP\ DISABLD/.
$	sudo  umount  /Volumes/CRP\ DISABLD/

LPCXpressoのFT/GPIOをHighにプルアップした後リセットして、LEDが1秒間隔で点滅すれば大成功。

*1:裸のEclipseにプラグインをインストールしようとすると全力で拒否される

*2:当時ARM7コアのADuC7020/7026の開発環境を導入していた

*3:自信たっぷりにTinkerToolで変更して玉砕