1: /*
2: *----------------------------------------------------------------------
3: * T2EX Software Package
4: *
5: * Copyright 2012-2015 by Ken Sakamura.
6: * This software is distributed under the latest version of T-License 2.x.
7: *----------------------------------------------------------------------
8: *
9: * Released by T-Engine Forum(http://www.t-engine.org/) at 2012/12/12.
10: * Modified by T-Engine Forum at 2015/02/27.
11: * Modified by TRON Forum(http://www.tron.org/) at 2015/06/04.
12: *
13: *----------------------------------------------------------------------
14: */
15: /*
16: * 本ソフトウェアパッケージは、添付のT-License 2.xの利用条件に従って利用、
17: * 改変、再配布ができます。ソースコードの再配布を行う場合は、T-License 2.x
18: * 契約文書を添付する必要があります。
19: * 改変を行った場合でも改変内容を公開する義務や、トロンフォーラムに開示す
20: * る義務はありません。
21: * 改変したソースコードを配布することもできます。この場合は、T-Kernelトレー
22: * サビリティサービスに登録をお願いします。これにより改変の変遷を知ること
23: * ができ、ある修正がどの版に継承しているか、いないかを確認することができ
24: * ます。
25: *
26: * http://trace.tron.org/tk/?lang=ja
27: * http://trace.tron.org/tk/?lang=en
28: *
29: * T-License 2.xの規定の通り、トロンフォーラムあるいは坂村健が著作権を持
30: * つソフトウェアに対して第三者の著作権を侵害していないことを保証しますが、
31: * それ以外の保証は行いません。
32: * また、本ソフトウェアパッケージを利用して直接的あるいは間接的に損害を生
33: * じたとしてもトロンフォーラムおよび坂村健は一切免責されるものとします。
34: *
35: * 本ソフトウェアパッケージのうち、bsd_source に含まれるソースコー
36: * ドは NetBSD もしくは、OpenBSD 由来のソースコードであり、T-License 2.x
37: * は適用されません。それぞれのソースヘッダの記述にしたがって改変、再配布
38: * を行う必要があります。
39: */
40: /*
41: * 謝辞
42: *
43: * トロンフォーラムは、T2EXパッケージを完成させることに対し貢献をいただ
44: * いたトロンフォーラムT-Kernelワーキンググループのメンバーに謝意を表し
45: * ます。
46: * ワーキンググループメンバーは、T2EXソースコードに対して有意義なコメント
47: * や議論をいただくとともに、詳細なテストに多大な協力をいただきました。
48: *
49: * T-Kernelワーキンググループメンバー
50: * イーソル株式会社
51: * パーソナルメディア株式会社
52: * 株式会社日立超LSIシステムズ
53: * 株式会社富士通コンピュータテクノロジーズ
54: * 富士通セミコンダクター株式会社
55: * ルネサス エレクトロニクス株式会社
56: * YRPユビキタス・ネットワーキング研究所
57: */
58:
59: ==============================================================================
60: T-Engineリファレンスボード用 T-Kernel 2.0 Extension 開発環境
61: ==============================================================================
62:
63: ------------------------------------------------------------------------------
64: 目次
65: ------------------------------------------------------------------------------
66: 1. はじめに
67: 2. パッケージ内容
68: 3. 作業の流れ
69: 3.1 開発環境のインストール
70: 3.2 ソースコードパッケージの展開
71: 3.3 システム構築方法
72: 3.4 システム構成情報
73: 3.5 アプリケーションの構築
74:
75: ------------------------------------------------------------------------------
76: 1. はじめに
77: ------------------------------------------------------------------------------
78:
79: 本書は、EclipseあるいはLinuxコマンドラインの開発環境を使用して、T-Engineリファ
80: レンスボード(tef_em1d)用のT-Kernel 2.0 Extension、およびそれらの上で動くアプリ
81: ケーションを構築する際の手順を説明する文書です。
82:
83: T-Kernel 2.0 Extension(T2EX)は、T-Kernel 2.0上に追加される拡張機能であり、ベー
84: スとなるT-Kernel2.0システムはそのまま使用します。
85:
86: 本パッケージは、T2EXとしてT-Kernel 2.0ソフトウェアパッケージに追加される部分の
87: みを含んでいます。T-Kernel2.0のソースコードは、T-Kernel 2.0 ソフトウェアパッケ
88: ージ(T-Kernel 2.02.00 Software Package)に含まれている内容をそのまま使用します。
89:
90: T-Kernel 2.0はバージョン2.02.00以降を使用してください。T-Kernel 2.02.00 より前
91: のバージョンでは、正しく動作しませんので、必ず最新版を使用してください。
92:
93: ------------------------------------------------------------------------------
94: 2. パッケージ内容
95: ------------------------------------------------------------------------------
96:
97: 本パッケージには以下の内容が含まれています。
98:
99: README.md
100: t2ex-dist-ucode.png ディストリビューションucode
101: TEF000-218-150401.pdf T-License 2.1
102:
103: /doc/ja/
104: t2ex-duide.txt T2EX説明書(本書)
105: impl-t2ex.txt T2EX実装仕様書
106: Ver2.01.00.txt 変更履歴(v2.01.00)
107:
108: t2ex_source T2EXとデバイスドライバのソースコード
109: bsd_source NetBSDまたはOpenBSD由来のソースコード
110:
111: --------------------------------------------------
112: 3 ソースコードの構成
113: --------------------------------------------------
114:
115: T2EXのソースコードのうち、NetBSDまたはOpenBSD由来のソースコードはbsd_sourceディ
116: レクトリに分けられています。T2EXを構築する際はbsd_sourceのファイルをマージする必
117: 要があります。
118:
119: include/ 定義ファイル
120: t2ex/** T2EX機能定義ファイル
121: sys/
122: atomic.h アトミック操作定義ファイル
123: sysdepend/
124: atomic_common.h
125: tef_em1d/
126: atomic_depend.h
127: device/
128: netdrv.h ネットワークドライバ定義ファイル
129:
130: kernel/ カーネル
131: extension/ 拡張部
132: memory/
133: t2ex/** T2EX用メモリマネージャ
134:
135: sysdepend/t2ex/** T2EX用システム依存部
136:
137: sysinit/ システム初期化
138: build_t2ex/** T2EXビルド用
139: src_t2ex/** T2EX用ソース
140:
141: sysmain/ システムメイン
142: build_t2ex/** T2EXビルド用
143: src/
144: usermain_t2ex.c T2EX用ユーザメインプログラム
145: appl_main.c T2EX用アプリメインプログラム
146: commoand.c T2EX用コマンド処理プログラム
147: ref_command.c T2EX用参照コマンド処理プログラム
148: network_sample/** T2EX用ネットワークサンプルプログラム
149:
150: sysmgr/ システムマネージャ
151: build_t2ex/** T2EXビルド用
152: src_t2ex/** T2EX用ソース
153:
154: tkernel/ T-Kernel
155: build_t2ex/** T2EXビルド用
156: src_t2ex/** T2EX用ソース
157:
158: lib/ ライブラリ
159: build_t2ex/** T2EXビルド用
160: libtk/ T-Kernelライブラリ
161: build_t2ex/** T2EXビルド用
162: src_t2ex/** T2EX用ソース
163: libc/** 標準C互換ライブラリ
164: libusermod/** T2EXプログラムモジュール用ライブラリ
165:
166: t2ex/ T2EX機能ソース
167: build/** T2EXビルド用
168: fs/** T2EXファイル管理機能
169: network/** T2EXネットワーク通信機能
170: datetime/** T2EXカレンダー機能
171: load/** T2EXプログラムロード機能
172:
173: module/** T2EXプログラムモジュールサンプル/ビルド用
174:
175: config/ 設定情報(RomInfo, SYSCONF, DEVCONF)
176: src_t2ex/** T2EX用ソース
177: build_t2ex/** T2EXビルド用
178:
179: driver/ デバイスドライバ
180: tef_em1d/
181: build_t2ex/** T2EXビルド用
182: netdrv/** リファレンスボード用ネットワークドライバ
183:
184: etc/ その他(スクリプト等)
185: mkt2exsvc T2EX SVC I/F ライブラリ作成用
186: sysdepend/
187: cpu/
188: em1d/
189: makeift2ex.pl T2EX SVC I/F ライブラリ作成用
190: tef_em1d/
191: makerules.sysdepend 共通 Make ルール
192:
193: --------------------------------------------------
194: 4 システム構築方法
195: --------------------------------------------------
196:
197: T2EXはT-Kernel 2.0 ソフトウェアパッケージ(T-Kernel 2.02.00 Software Package)に
198: 組み込んで使用します。
199: 開発方法に関しては、T-Kernel2.0 システムと同様に、Eclipse、Cygwin および Linux
200: 利用の 3 種類の開発方法を選択することができます。詳しくは、T-Kernel 2.0 ソフト
201: ウェアパッケージ説明書を参照してください。
202:
203: T-Kernel 2.0 ソフトウェアパッケージはトロンフォーラムの以下のURLら入手できます。
204: パケージは各種の開発環境も含まれます。ただし、開発環境は公開当時のものである
205: ことにご注意ください。
206:
207: https://www.tron.org/download/index.php?route=product/product&path=37_38&product_id=133
208:
209: --------------------------------------------------
210: 4.1 開発環境のインストール
211: --------------------------------------------------
212:
213: 開発方法に関しては、T-Kernel2.0 システムと同様に、Eclipse、Cygwin および Linux
214: 利用の 3 種類の開発方法を選択することができます。詳しくは、T-Kernel 2.0 ソフト
215: ウェアパッケージ説明書を参照してください。
216:
217: 開発用ホストPCに、T-Kernel 2.0 ソフトウェアパッケージに含まれているT-Kernel2.0
218: 開発環境をインストールします。
219:
220: インストールするディレクトリは標準では以下となりますが、別のディレクトリにイン
221: ストールしても構いません。
222:
223: /usr/local/tef_em1d
224:
225: --------------------------------------------------
226: 4.2 ソースコードパッケージの展開
227: --------------------------------------------------
228:
229: 最初に、開発環境をインストールしたディレクトリ(/usr/local/tef_em1d)上で、
230: T-Kernel 2.0ソフトウェアパッケージに含まれているT-Kernel ソースコードパッケージ
231: (tkernel_source.tar.gz)を展開して、tkernel_source ディレクトリを作成します。
232:
233: 次に、同じディレクトリ上で、本パッケージに含まれているt2ex_source ディレクトリを
234: 作成します。
235:
236: 続いて、以下のコマンドを実行して、t2ex_source ディレクトリの内容をすべて、
237: tkernel_source ディレクトリにコピーします。
238:
239: $ cd /usr/local/tef_em1d/t2ex_source
240: $ cp -r * ../tkernel_source
241:
242: ※ コピー後は、t2ex_source ディレクトリの内容は不要になりますので、すべて
243: 削除して構いません。
244:
245: コピーにより、tkernel_source ディレクトリ内に、T2EX 用のソースファイルが追加さ
246: れます。ただし、例外として、以下のファイルだけは、T-Kernel の元のソースを上書
247: きします。(他のファイルはすべて追加です。)
248:
249: tkernel_source/etc/sysdepend/tef_em1d/makerules.sysdepend
250:
251: ※ 上書きされ変更された上記ファイルは、T-Kernel 用としても、そのまま利用で
252: きます。
253:
254: --------------------------------------------------
255: 4.3 システム構築方法
256: --------------------------------------------------
257:
258: 以下のコマンドを実行して、T-Kernel 部分を含めた、T2EXシステム全体を構築します。
259:
260: $ cd $BD/kernel/sysmain/build_t2ex/tef_em1d
261: $ make emu
262:
263: ※ $BD は、環境変数 BD の値、すなわち TーKernel ソースコードパッケージを
264: インストールしたディレクトリの tkernel_source サブディレクトリ
265: (/usr/local/tef_em1d/tkernel_source) となります。
266:
267: ※ Eclipse 環境の場合は、"kernel/sysmain/build_t2ex/tef_em1d" をビルド先
268: ディレクトリとして、ビルド環境を設定したのち、"make emu" を実行します。
269:
270: ※ 以前に $BD の下で、T-Kernel をビルドした場合は、必ず、"make clean" を実
271: 行してから、T2EX システムをビルドしてください。
272:
273: ※ "kernel/sysmain/build/tef_em1d" 上で "make clean", "make emu" を実行す
274: ると、T2EX 部分を含まないオリジナルのT-Kernel システムを構築できます。
275:
276: "make emu" を実行した "$BD/kernel/sysmain/build_t2ex/tef_em1d" ディレクトリに、
277: ビルド結果である以下のファイルが生成されます。T2EX システムのファイル名には、
278: "_t2ex" が付加されます。
279: これらのファイルは、"$BD/bin/tef_em1d" ディレクトリにもコピーされます。
280:
281: (a) RAM 実行用 (デバッグ用)
282:
283: kernel_t2ex-ram.sys RAM 版 T2EX の実行オブジェクト
284: kernel_t2ex-ram.map RAM 版 T2EX のリンクマップ
285: kernel_t2ex-ram.mot RAM 版 T2EX のロードイメージ (S-Format)
286: kernel_t2ex-ram.bin RAM 版 T2EX のロードイメージ (Binary)
287:
288: rominfo_t2ex-ram.mot RAM 版 RomInfo のロードイメージ (S-Format)
289:
290: rom_t2ex-dbg.bin Emulator 用 RAM 版 ロードイメージ (Binary)
291: ( T-Monitor + RomInfo )
292:
293: (b) ROM 実行用 (Flash ROM 書込み用)
294:
295: kernel_t2ex-rom.rom ROM 版 T2EX の実行オブジェクト
296: kernel_t2ex-rom.map ROM 版 T2EX のリンクマップ
297: kernel_t2ex-rom.mot ROM 版 T2EX のロードイメージ (S-Format)
298:
299: rominfo_t2ex-rom.mot ROM 版 RomInfo のロードイメージ (S-Format)
300:
301: rom_t2ex.bin Emulator 用 ROM ロードイメージ (Binary)
302: ( T-Monitor + RomInfo + T-Kernel )
303:
304: (c) RAM/ROM 実行用 (Flash ROM 書込み用)
305:
306: tmonitor.mot T-Monitor のロードイメージ (S-Format)
307: tmonitor.map T-Monitor のリンクマップ
308:
309: ※ T-Monitor は、T-Kernel 用に構築したものと同じです。
310:
311: 上記のビルド結果のファイルを使用して、Eclipse、Cygwin、または Linux 開発環境下
312: で、エミュレータ(QEMU)や実機を使用した実行、およびデバッグ実行を行うことができ
313: ます。詳しくは、T-Kernel 2.0 ソフトウェアパッケージ説明書を参照してください。
314:
315:
316: "$BD/kernel/sysmain/build_t2ex/tef_em1d" ディレクトリにある Makefile 内の以下
317: の定義を削除することにより、T2EX の機能の一部のみを含む実行イメージを作成でき
318: ます。
319:
320: # use T2EX memory management
321: T2EX_MM = _t2ex
322:
323: # use task fault function of T2EX memory management
324: T2EX_MM_USE_TASKEXCEPTION = 1
325:
326: # use default memory fault handlers
327: T2EX_MM_USE_DEFAULT_FAULT_HANDLER = 1
328:
329: # use T2EX file management
330: T2EX_FS = yes
331:
332: # use T2EX network communication
333: T2EX_NET = yes
334:
335: # use T2EX calendar
336: T2EX_DT = yes
337:
338: # use T2EX program load
339: T2EX_PM = yes
340:
341: # use T2EX network sample programs
342: T2EX_NET_SAMPLE = yes
343:
344: ※ ファイル管理機能、およびネットワーク通信機能を使用する場合、カレンダ
345: 機能は必要ですので、削除できません。
346:
347: ※ ファイル管理機能を削除した場合は、標準C互換ライブラリの標準入出力は使用
348: できません。
349:
350: また、以下の定義を変更することにより、実行イメージに組み込むデバイスドライバを
351: 選択できます。
352:
353: # device driver definitions
354: DRV_CONSOLE = yes
355: DRV_CLOCK = yes
356: DRV_SYSDISK = yes
357: DRV_SCREEN = yes
358: DRV_KBPD = yes
359: DRV_LOWKBPD = yes
360: DRV_NET = yes
361:
362: ※ T2EX の各機能で必要とするデバイスドライバは以下の通りです。
363:
364: DRV_CLOCK カレンダ機能
365: DRV_CONSOLE ファイル管理機能(標準入出力)
366: DRV_SYSDISK ファイル管理機能
367: DRV_NET ネットワーク通信機能
368:
369: --------------------------------------------------
370: 4.4 システム構成情報
371: --------------------------------------------------
372:
373: システム構成情報には、T2EX用の設定が追加されています。
374: 設定値を変更する場合は、以下の SYSCONF ファイルを修正してください。
375:
376: $BD/config/src_t2ex/sysdepend/tef_em1d/SYSCONF
377:
378: ※ システム構成情報の T2EX用の設定に関しては「T2EX仕様書」および「T2EX実装
379: 仕様書」を参照してください。
380:
381: --------------------------------------------------
382: 4.5 アプリケーションの構築
383: --------------------------------------------------
384:
385: T2EXのユーザアプリケーションは、T2EX システムとリンクされ、実行時には1つのオブ
386: ジェクトになります。
387:
388: 通常は、$BD/kernel/sysmain/src ディレクトリ内のプログラムに書き替えや追加を行
389: う形で、アプリケーションプログラムを記述します。サンプルとして、以下のファイル
390: が含まれていますので、参考にしてください。
391:
392: usermain_t2ex.c
393: アプリケーションの初期タスクで実行されるプログラムです。
394: デバイスドライバ、およびT2EX機能の初期化処理を実行して、appl_main() を
395: 呼び出します。
396:
397: appl_main.c
398: カレンダ時刻のRTCハードウェアとの同期処理、およびデバッグコンソールから
399: の入力によるコマンド処理を行います。
400:
401: command.c
402: 日付時刻やファイルに関する基本的なコマンドの処理を行います。
403: また、T-Kernelのリソースの状態を表示する機能も入っています。
404: "?" によりコマンドの簡単なヘルプを表示します。
405:
406: ref_command.c
407: T-Kernelのリソースの状態を表示する ref コマンドの処理部分です。
408: command.c にインクルードされます。
409:
410: network_sample/*
411: T2EX ネットワーク機能をテストするためのサンプルプログラムです。
412: "net" コマンドにより実行できます。実行の際は、インターネットに接続可能
413: な DHCP サーバのあるネットワーク環境に接続する必要があります。
414:
415: 本パッケージで実装されている T2EX の各機能の詳細説明や制限事項などにつきまして
416: は、「T2EX実装仕様書」を参照してください。
417:
418:
419: 以上