1 ===============================================================
2 3千円で楽しめるARMマイコンとRTOSの世界
3 TOPPERS/ASP on LPCXpresso LPC1768
4 ===============================================================
8 TOPPERS/ASP for LPCは@suikan_blackfinさんによってポーティング
10 氏は様々な鋭い洞察力で過去にも沢山の偉業を成し遂げている方です。
11 ここに過去の沢山の偉業を挙げることは出来ませんが、素晴らしい
12 ポーティングに感謝すると共に、厚くお礼を申し上げます。
15 氏のウェブサイトはhttp://d.hatena.ne.jp/suikan+embedded/にあります。
17 また、LPCXpressoはNXPセミコンダクターズジャパンさんが積極的に
19 このような安価で優れたツールを手に入れることのできるのは、
21 NXPセミコンダクターズジャパンさんが運営されている日本語サイト
22 (LPCZone)はhttp://www.nxp-lpc.com/cgi-bin/linkv.htmlにあります。
24 いずれのサイトも沢山の面白い情報が盛り沢山ですので是非ご覧下さい。
28 TOPPERS/ASP for LPCはTOPPERS/ASPをNXPセミコンダクターズのLPCシリーズ上で
29 動作するようにしたもので@suikan_blackfinさんがメインテナンスされています。
30 http://sourceforge.jp/projects/toppersasp4lpc/
32 公開当初から完成度が高く、私にも簡単に動作させて楽しむことができました。
33 そこで、今回は更に沢山の方にTOPPERS/ASP for LPCを楽しんで頂くために
34 LPCXpressoさえあれば楽しめるようにしようと考えました。
35 従来は評価用ボードに加えて、JTAGデバッガ、環境構築など様々な準備が必要
36 でしたが、TOPPERS/ASP on LPCXpressoを使えばLPCXpresso上で簡単に動作させる
42 環境はLPCXpressoが対応しているLinux環境に今回は限定しました。
43 TOPPERS/ASPのビルドシステムにはシェルとperlに依存する箇所があります。
44 Windowsでも様々な外部ツールを使って、依存する環境に近い状況を作り出す事が
45 可能ですが、今回は作業負担を軽減させるために割愛しました。
47 最近ですとVMware Player上で簡単にLinux環境が構築できますし、Windowsと
48 Linuxの両環境で対応できるように沢山の時間をかけるよりも、早く提供したいと
55 * LPCXpresso 3.8.2 [Build 129][31/01/2011]
56 * LPCXpresso LPC1768 REV A
60 @suikan_blackfinさんがお作りになったオリジナルから行った変更に
64 * デバッグをIDE上でできるようにすること。
65 * 極力TOPPERS/ASPのオリジナルとの差分を小さくすること。
66 * LPCXpressoのみで実現可能なこと。
69 ソースコードとビルド用ファイルについては以下の変更を行っています。
70 * 元々あったlpc1768_sram.ldとlpc1768_rom.ldを削除しました。
71 * LPCXpressoが生成したDebugとReleaseのリンカスクリプトを使用しました。
72 -> ENTRY(ResetISR)をENTRY(_start)に変更しました。
73 -> STARTUP(start.o)を追加しました。
74 -> __bss_start, __bss_endを追加しました。
75 -> __idata_start, __idata_end, __data_startを追加しました。
76 -> init_hook関数をPROVIDEで追加しました。
77 -> .isr_vectorを.vectorに名称を変更しました。
78 * kernel/target/lpc1768_generic_gcc/Makefile.targetに以下を追加しました。
79 -> CDEFS=-DDEBUG -D__CODE_RED -D__REDLIB__
80 * Makefileで生成されるオブジェクトの名称を変更しました。
81 * Makefileで生成されるオブジェクトの拡張子を変更しました。
82 * LPCXpresso IDE上でアーカイブプロジェクトzipファイルをインポートすると
83 全てのファイルの実行権限が落ちてしまいます。
84 そこでMakefileにpermissionというターゲットを追加し、ビルド時に実行権限
87 LPCXpressoのプロジェクトに対しては以下の変更を行っています。
88 * Debug ConfigurationsのDebuggerタブでStop on startup at: sta_kerに変更
89 しました。これはLPCXpresso IDE上でデバッグを開始した時に実行を停止
91 * Debug ConfigurationsのDebuggerタブでVector catch: Trueに変更しました。
92 * PropertiesのC/C++ BuildでGenerate Makefiles automaticallyのチェックを
93 外しました。これによりLPCXpressoは外部Makefileを参照するようになります。
94 * PropertiesのC/C++ BuildでBuild directoryからDebugとReleaseを削除しました。
95 これによりプロジェクトのルートディレクトリを参照する形になりMakefileと
99 * SIO_PORTIDで1以外の値を選択した時にビルドできない問題を修正しました。
100 kernel/pdic/uart/uart.h
101 63: SIO_PORID -> SIO_PORTID
102 66: SIO_PORID -> SIO_PORTID
103 69: SIO_PORID -> SIO_PORTID
106 * ledblink.cfgに以下を追加しました。
107 INCLUDE("syssvc/syslog.cfg");
108 INCLUDE("syssvc/banner.cfg");
109 INCLUDE("syssvc/logtask.cfg");
111 app_init: アプリケーションに関する初期化。
112 task_xxx: タスクに関するファイル。1ソース1タスクを基本としました。
113 TOPPERS/ASPが提供しているサービス名と同じ名称は避けて
116 システムログがUART0(LPCXpressoの21, 22ピンに相当)に出力されます。
117 LPCXpressoの21番ピンはLPC1768のP0[1]/TXD0/AD0[7]ピンに接続されています。
118 同様に22番ピンはLPC1768のP0[3]/RXD0/AD0[6]ピンに接続されています。
120 シリアルポートの設定はボーレート57600、8ビット、ノンパリティ、
125 展開するとzipファイルとREADME(このファイル)が現れます。
126 zipファイルは展開せずにLPCXpressoの「Import Example project(s)」で
129 Import Example project(s)でzipファイルを選択するとワークスペースに
131 インポートができたらLPCXpresso上でビルドして下さい。
133 場合によって、コンフィギュレータのビルドが必要かもしれません。
134 展開したディレクトリのトップにconfigureがありますので、必要に応じて
137 ビルドが完了したらDebug 'TOPPERS-ASP_LPCXpresso-LPC1768'でデバッグできます。
138 Resume, Suspendがソースコード表示と共に楽しめます。
142 今回の対応は既存のTOPPERS/ASPのビルドの枠組みを超えない形で行ないました。
143 本来であれば、LPCXpresso上のプリビルドやポストビルドを駆使してカーネルに
144 対するコンフィギュレーションなどを行うのが筋ですが、先に述べたとおり早めの
147 もし、何かシンプルな方法でコンフィギュレータまでを包括的に処理させることが
148 できる方法を思いついた場合、是非ご一報頂ければと思います。
152 このプロジェクトに関するお問い合せは下記までお願いします。
156 shinta.main.jp@gmail.com
157 http://shinta-main-jp.blogspot.com/