OSDN Git Service

First commitment for the BlackTank LPC1769.
[blacktank/blacktank.git] / README.1st
1 ===============================================================
2  3千円で楽しめるARMマイコンとRTOSの世界
3  TOPPERS/ASP on LPCXpresso LPC1768
4 ===============================================================
5
6
7 0. 謝辞
8  TOPPERS/ASP for LPCは@suikan_blackfinさんによってポーティング
9  されました。
10  氏は様々な鋭い洞察力で過去にも沢山の偉業を成し遂げている方です。
11  ここに過去の沢山の偉業を挙げることは出来ませんが、素晴らしい
12  ポーティングに感謝すると共に、厚くお礼を申し上げます。
13  ありがとうございます。
14
15  氏のウェブサイトはhttp://d.hatena.ne.jp/suikan+embedded/にあります。
16
17  また、LPCXpressoはNXPセミコンダクターズジャパンさんが積極的に
18  国内市場への展開を行って下さっています。
19  このような安価で優れたツールを手に入れることのできるのは、
20  嬉しい限りです。
21  NXPセミコンダクターズジャパンさんが運営されている日本語サイト
22  (LPCZone)はhttp://www.nxp-lpc.com/cgi-bin/linkv.htmlにあります。
23
24  いずれのサイトも沢山の面白い情報が盛り沢山ですので是非ご覧下さい。
25
26
27 1. はじめに
28  TOPPERS/ASP for LPCはTOPPERS/ASPをNXPセミコンダクターズのLPCシリーズ上で
29  動作するようにしたもので@suikan_blackfinさんがメインテナンスされています。
30  http://sourceforge.jp/projects/toppersasp4lpc/
31
32  公開当初から完成度が高く、私にも簡単に動作させて楽しむことができました。
33  そこで、今回は更に沢山の方にTOPPERS/ASP for LPCを楽しんで頂くために
34  LPCXpressoさえあれば楽しめるようにしようと考えました。
35  従来は評価用ボードに加えて、JTAGデバッガ、環境構築など様々な準備が必要
36  でしたが、TOPPERS/ASP on LPCXpressoを使えばLPCXpresso上で簡単に動作させる
37  ことができるようになります。
38
39
40 2. 対応環境について
41  2-1. ホストのOS
42   環境はLPCXpressoが対応しているLinux環境に今回は限定しました。
43   TOPPERS/ASPのビルドシステムにはシェルとperlに依存する箇所があります。
44   Windowsでも様々な外部ツールを使って、依存する環境に近い状況を作り出す事が
45   可能ですが、今回は作業負担を軽減させるために割愛しました。
46
47   最近ですとVMware Player上で簡単にLinux環境が構築できますし、Windowsと
48   Linuxの両環境で対応できるように沢山の時間をかけるよりも、早く提供したいと
49   いう思いが先行した結果でもあります。
50
51  2-2. 動作を確認した環境
52   参考までに動作を確認した環境を記します。
53
54   * Ubuntu 10.10
55   * LPCXpresso 3.8.2 [Build 129][31/01/2011]
56   * LPCXpresso LPC1768 REV A
57
58
59 3. オリジナルからの変更点
60  @suikan_blackfinさんがお作りになったオリジナルから行った変更に
61  ついて記します。
62
63  変更は
64   * デバッグをIDE上でできるようにすること。
65   * 極力TOPPERS/ASPのオリジナルとの差分を小さくすること。
66   * LPCXpressoのみで実現可能なこと。
67  を念頭に作業しました。
68
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というターゲットを追加し、ビルド時に実行権限
85     を立てるようにしてあります。(暫定対策)
86
87  LPCXpressoのプロジェクトに対しては以下の変更を行っています。
88   * Debug ConfigurationsのDebuggerタブでStop on startup at: sta_kerに変更
89     しました。これはLPCXpresso IDE上でデバッグを開始した時に実行を停止
90     させる関数を指定するものです。
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と
96     の整合性が確保されます。
97
98  バグ修正
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
104
105  その他変更点
106   * ledblink.cfgに以下を追加しました。
107     INCLUDE("syssvc/syslog.cfg");
108     INCLUDE("syssvc/banner.cfg");
109     INCLUDE("syssvc/logtask.cfg");
110   * ファイル名の命名規則を変更しました。
111     app_init: アプリケーションに関する初期化。
112     task_xxx: タスクに関するファイル。1ソース1タスクを基本としました。
113               TOPPERS/ASPが提供しているサービス名と同じ名称は避けて
114               名称を決めて下さい。
115
116     システムログがUART0(LPCXpressoの21, 22ピンに相当)に出力されます。
117     LPCXpressoの21番ピンはLPC1768のP0[1]/TXD0/AD0[7]ピンに接続されています。
118     同様に22番ピンはLPC1768のP0[3]/RXD0/AD0[6]ピンに接続されています。
119
120     シリアルポートの設定はボーレート57600、8ビット、ノンパリティ、
121     ストップビット1です。
122
123
124 4. 使い方
125  展開するとzipファイルとREADME(このファイル)が現れます。
126  zipファイルは展開せずにLPCXpressoの「Import Example project(s)」で
127  使用します。
128
129  Import Example project(s)でzipファイルを選択するとワークスペースに
130  プロジェクトがインポートされます。
131  インポートができたらLPCXpresso上でビルドして下さい。
132
133  場合によって、コンフィギュレータのビルドが必要かもしれません。
134  展開したディレクトリのトップにconfigureがありますので、必要に応じて
135  実行して下さい。
136
137  ビルドが完了したらDebug 'TOPPERS-ASP_LPCXpresso-LPC1768'でデバッグできます。
138  Resume, Suspendがソースコード表示と共に楽しめます。
139
140
141 5. 最後に
142  今回の対応は既存のTOPPERS/ASPのビルドの枠組みを超えない形で行ないました。
143  本来であれば、LPCXpresso上のプリビルドやポストビルドを駆使してカーネルに
144  対するコンフィギュレーションなどを行うのが筋ですが、先に述べたとおり早めの
145  公開を目指して割愛したものです。
146
147  もし、何かシンプルな方法でコンフィギュレータまでを包括的に処理させることが
148  できる方法を思いついた場合、是非ご一報頂ければと思います。
149
150
151 6. 連絡先
152  このプロジェクトに関するお問い合せは下記までお願いします。
153
154  Shinichiro Nakamura
155
156  shinta.main.jp@gmail.com
157  http://shinta-main-jp.blogspot.com/
158