LPC2388でTOPPERS/JSPを走らせる
TOP > チョロっとμITRON > LPC2388でTOPPERS/JSPを走らせる

雑誌Interface 2009年5月号にはNXP社製のARM7マイコン LPC2388 が付属しています。
この基板を動かすには部品を実装します。
若松通商でセット販売されています。
インターフェース 2009年5月号付録マイコンARM7基板周辺実装部品一式

雑誌の記事では、ショットキ・バリア・ダイオードをコネクタCN2の38番39番ピンに取り付けるとありますが、
幅が小さくて難しいです。
そこで、CN3の12番ピンにカソード(陰極)と15番ピンにアノード(陽極)を付けます。

diode

約30年ぶりにハンダ付けしたので、イモハンダっぽいのがあります:-P
ここも参考にして下さい。

開発環境の用意

開発環境は Linux が簡単なのですが、あえて Windows/Cygwin にしてみます。

Cygwin のインストール

Cygwin をインストールするときに、
  1. binutils
  2. gcc
  3. perl
を忘れないようにします。

ARM用のコンパイラ

ARM用のコンパイラ(arm-none-eabi)を
http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3053
からもらってきます。

現在(2010/07/02)の最新は Sourcery G++ Lite 2010q1-188 2010-04-23 です。
インストールする先(フォルダ)を Cygwin から見える位置にしておきます。

CodeSourcery G++ Lite + Cygwin 環境に特有なエラー回避

http://sourceforge.jp/projects/toppersjsp4lpc/にある TOPPERS/JSP のソースを使う場合
Cygwin の ~/.bashrc に

export CSL_JSP_CYGPATH="/usr/local/arm/bin/"
のように、arm-none-eabi をインストールしたディレクトリの設定をしておきます。

TOPPERS/JSPの移植

http://sourceforge.jp/projects/toppersjsp4lpc/から TOPPERS/JSP のソース(ここだとtoppersjsp4lpc)をもらってきます。

このソースを Cygwin から見える位置に展開します。

TOPPERS/JSP の tool を作成

ソースを展開した位置から、
% cd jsp/cfg
% make realclean
% make depend
% make
shell の prompt を % にしているのは、私は BSD派なので :-p

環境構築

% cd jsp
% mkdir 00NEW
% cd 00NEW
% ../configure -C armv4 -S cq_frk_nxp_arm
つまり、jsp の下に適当なディレクトリを作り、そこから ../configure します。
cq_frk_nxp_arm はターゲットボード名で、 jsp/config/(CPU名)/ 以下にあるディレクトリ名のことです。

これで、Makefile sample1.c sample1.h sample1.cfg ができます。

ARM の場合、実行ファイルは Intel HEX 形式なので、jsp.hex になりますが
コンパイル結果の消去が抜けているので、

Makefile に
#
#  コンパイル結果の消去
#
clean:
rm -f \#* *~ *.o tmpfile?
rm -f $(MAKE_KERNEL) $(OBJNAME)
rm -f $(OBJNAME).syms $(OBJNAME).srec $(OBJNAME).hex $(OBJNAME).chk
rm -f $(OBJNAME).exe $(OBJNAME).bin $(OBJNAME).out
rm -f kernel_cfg.c kernel_chk.c kernel_chk.s kernel_id.h kernel_obj.dat
rm -f makeoffset.s offset.h
のように、$(OBJNAME).hex を加えておきます。

実行ファイルのコンパイル

% make depend
% make
だけです。簡単ですね。
arm-none-eabi-nm jsp.exe > jsp.syms
arm-none-eabi-objcopy -O srec -S jsp.exe jsp.srec
arm-none-eabi-objcopy -O ihex -S jsp.exe jsp.hex
../cfg/chk -m jsp.syms,jsp.srec \
                        -obj -cs jsp.chk -cpu armv4 -system cq_frk_nxp_arm
Program failed in its process by following reason.
  Internal error: Unknown symbol (Probably, Symbol table was stripped)
make: *** [jsp.exe] Error 1
なんて出ても、
jsp.exe が作成されていれば大丈夫で、chkコマンドがエラーを吐いてても無視します。

ところが、
Makefile.depend:15: *** target pattern contains no `%'.  Stop.
のようになると、前述の CodeSourcery G++ Lite + Cygwin 環境に特有なエラーです。

これは、Windows と Unix ではパスの文字列が違うため、混在した変な文字列になるのが原因です。
jsp/utils/makedep で対処できます。
http://www.toppers.jp/TOPPERS-USERS/201005/msg00001.htmlで報告されています。

フラッシュROM への書き込み

書き込みソフトはFlash Magicを使います。

flashmagic

Step 1
Select Device には LPC2388
COM Port はボードをつないだときの仮想シリアルポート
Baud Rate は USB接続なので、あまり意味がないようです
Interface は None{ISP}
Oscillator は 12.0000

Step 2
Erase all Flash+Code Rd Prot にチェック

Step 3
ダウンロードするファイル(*.hex)を選択

Step 4
Verify after programming にチェック

Step 5
Start ボタンで書き込み開始

シリアルポートへの書き出し

TOPPERS/JSP には、シリアルポートへの読み/書きの機能がありますが、
この環境の場合、シリアルポートの Baudrate を 57600 にしないと、文字化けしてしまいました。
(なかなか気づかなかったのは内緒です(^^;)
TOP > チョロっとμITRON > LPC2388でTOPPERS/JSPを走らせる
http://www.yumi-chan.com/