2013年6月9日日曜日

Strawberry Linux の lpclcd 用コードを Keil mdk で開発できるのか

lpclcd はM0でフラッシュのサイズは32kB、LPCXpresso や評価版でコンパイルできるが、C++ が使えない。デバッガも使えるほうがいいので、mdk で使いたい。

まず、JTAGピンをつけてULINK/MEやST-Link2をつないでみたが、プログラミングアルゴリズムとして NXP LPC11xx 32kb を選んだだけでは、アップロード後の verify で失敗する。
とりあえずあきらめ、USB ストレージとしての flash 書き込みを試みる。

まず、.axf (elf) から.bin に変換する。
Keil に fromelf というコマンドがついていて変換に使えるらしいが、パスが変わっていた。
ビルド時に変換もするよう、Project オプションの User コマンドに追加する。
C:\Keil\ARM\ARMCC\bin\fromelf.exe --bin "#L" -o "$Poutput.bin"
#L と $P は、パス変数のようだ。

これでできたファイルを USB ストレージにコピーしても書き込みまれておらず、動かない。実行可能にするには、チェックサムを付加する必要があるらしい。LPCXpresso のプロジェクトの makefile に書いてあるものを参考にすればいいと思うが、ARM が配布している CHECK8.EXE コマンドは 64bit Windows 7 では動かない。ので、PCXpresso に用意されている checksum コマンドを使う。

解説ページ

C:\nxp\LPCXpresso_5.2.4\lpcxpresso\bin\checksum -p LPC11U24_401 -d "$Poutput.bin"

とりあえず、LPCXpresso プロジェクトのコードを(コードプロテクション CRP のマクロはコメントアウトして)ビルドして、書き込んで動いたのでよしとしよう。