これは、NXP LPC2388 (ARM7TDMI) 用のファームウェア(モニタプログラム兼BIOS兼ランタイム)と、そのファームウェア上で動作するアプリケーションを作成するSDKです。
シリアル経由でメインRAMにユーザーアプリケーションをロードして実行する機能を持っています。ユーザーアプリケーションはメインRAM上にロードして実行されるので Flash ROMに書き込む必要がありません。
SDカードに保存されたアプリケーションをメインRAMにロードして実行する機能を持っています。また、SDカードのルートディレクトリに AUTOEXEC.MOT
という名前のファイルを置くと、LPC2388 のリセット時に自動でロードされ実行されます。
ファームウェア(モニタプログラム)は、多くの機能をAPIとしてユーザーアプリケーションに提供します。ユーザーアプリケーションは多くの機能をAPI呼び出しで済ませることができるため、コードサイズを非常に小さくできます。
APIの中には、FatFsによるSDカードアクセス機能や、SC1602互換のキャラクタLCDを操作する機能が含まれています。
テキストファイル doc/lpc2388-monbios.txt をご覧ください。
ファームウェア(sdk/firmware.hex)をlpcwrtでLPC2388のフラッシュに書き込む方法。
lpcwrt.exe, lpcsp.exe, arm-none-eabi-objcopy.exe を準備。
CQ-FRK-NXP-ARM基板を、JP1とJP2をショートした状態で電源ON(CP2012側USBを接続)。
基板のJP1をオープンにすることでリセットを解除。
lpcwrtを起動して以下を設定:
Configureセクション
COM Port : LPC2388のUART0 (CQ-FRK-NXP-ARM基板のCP2012側USB仮想COM)
Baud Rate : 115200
Oscillator: 12000 KHz
control DT/RTS はチェックしない。
lpcsp をチェックし、[Browse]ボタンで lpcsp.exe を指定
objcopy をチェックし、[Browse]ボタンで arm-none-eabi-objcopy.exe を指定
Flashセクション
HEX/BIN File に firmware.hex (sdk にある)を指定
以上を設定したら、CQ-FRK-NXP-ARM基板のJP2をOPENにして[Convert and Write]。
書き込みが終わったら、リセットしてTeraTerm等で接続し、プロンプト「LPC2388 MON>」が表示されれば成功。
起動中は、基板上のLED (Pin P1[18]) が5秒周期で点滅する。
なお、ファームウェアのソースファイルは sdk/firmware/ 配下にあります。ビルドするには GNU Arm Embedded Toolchain と、make や cat 等のLinuxコマンドが使える環境(Linux, MSYS, Cygwin 等)が必要です。 firmwareディレクトリ内で make を実行してください。
本ファームウェア上で動作するアプリケーションを開発する場合は sdk/application/ のサンプルプログラムにある Makefile を利用してください。
なお、Makefile の中に記述されているマクロ PROJ_TOP_DIR
が sdk ディレクトリを指している必要があります。
ビルドするには GNU Arm Embedded Toolchain と、make や cat 等のLinuxコマンドが使える環境(Linux, MSYS, Cygwin 等)が必要です。
出来あがるユーザーアプリケーションは「モトローラSフォーマット」のファイルです(拡張子が .mot
)。このファイルの中身をシリアル接続されたターミナルのコンソールから load
コマンドでロードするか、このファイルをSDカードに入れて exec
コマンドで実行してください。
このモニタプログラムはbitcraftさんの LPC2388_gccmon.lzh をベースにさせていただきました。
上記プログラムに、以下の方々のプログラムを追加したり、コードをコピーして使わせていただいています。
中村晋一郎さん
ねむいさん
ChaNさん
宮前さん
Sakazumeさん
また、以下の方々の情報を参考にさせていただきました。
がた老さん
irukaさん
SYSLAB blogさん
秋田純一さん
HRA!さん
kitanokitsune / 北乃きつね