--- /dev/null
+===============================================================
+ TOPPERS/ASP for LPCXpresso LPC1768
+===============================================================
+
+1. はじめに
+ TOPPERS/ASP for LPCはTOPPERS/ASPをNXPセミコンダクターズの
+ LPCシリーズ上で動作するようにしたものです。
+
+ このターゲット(lpcxpresso1768_gcc)はEmbedded Artists社が開発
+ したLPCXpresso LPC1768上でTOPPERS/ASPを動作させるために実装
+ されています。
+
+ 従来は評価用ボードに加えて、JTAGデバッガ、環境構築など様々な
+ 準備が必要でしたが、このターゲットを使用することで簡単に実機
+ 動作を体験できます。
+
+2. 対応環境について
+ 2-1. ホストのOS
+ 環境はLPCXpressoが対応しているLinux環境に今回は限定しました。
+ TOPPERS/ASPのビルドシステムにはシェルとperlに依存する箇所が
+ あります。
+ Windowsでも様々な外部ツールを使って、依存する環境に近い状況を
+ 作り出す事が可能ですが、今回は作業負担を軽減させるために割愛
+ しました。
+
+ 最近ですとVMware Player上で簡単にLinux環境が構築できますし、
+ WindowsとLinuxの両環境で対応できるように沢山の時間をかけるより、
+ 早く提供したいという思いが先行した結果でもあります。
+
+ 2-2. 動作を確認した環境
+ 参考までに動作を確認した環境を記します。
+
+ * Ubuntu 10.10
+ * LPCXpresso 3.8.2 [Build 129][31/01/2011]
+ * LPCXpresso LPC1768 REV A
+
+3. 公開当初からの変更点
+
+ 公開当初から幾つかの変更を加えてあります。
+
+ 変更は
+ * デバッグをIDE上でできるようにすること。
+ * 極力TOPPERS/ASPのオリジナルとの差分を小さくすること。
+ * LPCXpressoのみで実現可能なこと。
+ を念頭に作業しました。
+
+ ソースコードとビルド用ファイルについては以下の変更を行っています。
+
+ * 元々あったlpc1768_sram.ldとlpc1768_rom.ldを削除しました。
+
+ * LPCXpressoが生成したDebugとReleaseのリンカスクリプトを使用
+ しました。
+ -> ENTRY(ResetISR)をENTRY(_start)に変更しました。
+ -> STARTUP(start.o)を追加しました。
+ -> __bss_start, __bss_endを追加しました。
+ -> __idata_start, __idata_end, __data_startを追加しました。
+ -> init_hook関数をPROVIDEで追加しました。
+ -> .isr_vectorを.vectorに名称を変更しました。
+
+ * kernel/target/lpc1768_generic_gcc/Makefile.targetに以下を追加
+ しました。
+ -> CDEFS=-DDEBUG -D__CODE_RED -D__REDLIB__
+
+ * Makefileで生成されるオブジェクトの名称を変更しました。
+
+ * Makefileで生成されるオブジェクトの拡張子を変更しました。
+ LPCXpresso上の実行設定は拡張子がaxfでないと、実行する度に新しい
+ 設定を自動的に生成してしまうようです。これを防ぐ狙いがあります。
+
+ * LPCXpresso IDE上でアーカイブプロジェクトzipファイルをインポート
+ すると全てのファイルの実行権限が落ちてしまいます。
+ そこでMakefileにpermissionというターゲットを追加し、ビルド時に
+ 実行権限を立てるようにしてあります。(暫定対策)
+
+ LPCXpressoのプロジェクトに対しては以下の変更を行って下さい。
+
+ * Debug ConfigurationsのDebuggerタブでStop on startup at: sta_kerに
+ 変更して下さい。
+ これはLPCXpresso IDE上でデバッグを開始した時に実行を停止させる
+ 関数を指定するものです。
+ RunメニューからResumeを選択することで動作を継続することができます。
+
+ * Debug ConfigurationsのDebuggerタブでVector catch: Trueに変更して
+ 下さい。
+
+ * PropertiesのC/C++ BuildでGenerate Makefiles automaticallyの
+ チェックを外して下さい。
+ これによりLPCXpressoは外部Makefileを参照するようになります。
+
+ * PropertiesのC/C++ BuildでBuild directoryからDebugとReleaseを削除
+ して下さい。
+ これによりプロジェクトのルートディレクトリを参照する形になり
+ Makefileとの整合性が確保されます。
+
+ システムログがUART0(LPCXpressoの21, 22ピンに相当)に出力されます。
+ LPCXpressoの21番ピンはLPC1768のP0[1]/TXD0/AD0[7]ピンに接続されて
+ います。
+ 同様に22番ピンはLPC1768のP0[3]/RXD0/AD0[6]ピンに接続されています。
+
+ シリアルポートの設定はボーレート57600、8ビット、ノンパリティ、
+ ストップビット1です。
+
+ ビルドが完了したらDebug 'TOPPERS-ASP_LPCXpresso-LPC1768'でデバッグ
+ できます。
+ Resume, Suspendがソースコード表示と共に楽しめます。
+
+4. 最後に
+ 今回の対応は既存のTOPPERS/ASPのビルドの枠組みを超えない形で行ないました。
+ 本来であれば、LPCXpresso上のプリビルドやポストビルドを駆使してカーネルに
+ 対するコンフィギュレーションなどを行うのが筋ですが、先に述べたとおり早めの
+ 公開を目指して割愛したものです。
+
+ もし、何かシンプルな方法でコンフィギュレータまでを包括的に処理させることが
+ できる方法を思いついた場合、是非ご一報頂ければと思います。
+