source: anotherchoice/tags/jsp-1.4.4-full-UTF8/doc/tms320c54x.txt@ 26

Last change on this file since 26 was 26, checked in by ykominami, 12 years ago

initial

File size: 15.1 KB
Line 
1
2 = TOPPERS/JSPカーネル ユーザズマニュアル =
3 (TMS320C5402 ターゲット依存部)
4
5 (Release 1.4対応,最終更新: 20-Dec-2003)
6
7------------------------------------------------------------------------
8 TOPPERS/JSP Kernel
9 Toyohashi Open Platform for Embedded Real-Time Systems/
10 Just Standard Profile Kernel
11
12 Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
13 Toyohashi Univ. of Technology, JAPAN
14
15 上記著作権者
16は,以下の (1)〜(4) の条件か,Free Software Foundation
17 によってå…
18¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
19 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
20 を改変したものを含む.以下同じ)を使用・複製・改変・再é…
21å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
22 利用と呼ぶ)することを無償で許諾する.
23 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
24 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
25 スコード中に含まれていること.
26 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
27 用できる形で再é…
28å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
29å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
30 者
31マニュアルなど)に,上記の著作権表示,この利用条件および下記
32 の無保証規定を掲載すること.
33 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
34 用できない形で再é…
35å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
36 と.
37 (a) 再é…
38å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
39マニュアルなど)に,上記の著
40 作権表示,この利用条件および下記の無保証規定を掲載すること.
41 (b) 再é…
42å¸ƒã®å½¢æ…
43‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
44 報告すること.
45 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
46 害からも,上記著作権者
47およびTOPPERSプロジェクトをå…
48è²¬ã™ã‚‹ã“と.
49
50 本ソフトウェアは,無保証で提供されているものである.上記著作権者
51お
52 よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
53 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
54 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
55
56 @(#) $Id: tms320c54x.txt,v 1.12 2003/12/24 07:43:20 honda Exp $
57------------------------------------------------------------------------
58
59
601.C54x ターゲット依存部の概要
61
621.1 ターゲットシステムと開発環境
63
64TMS320C54x DSP のターゲットシステムとしては,TMS320VC5402 DSP を搭載
65したTEXAS INSTRUMENTS製の TMS320VC5402 DSP スタータ・キット(DSK) を
66サポートしている.
67開発環境には,DSKにバンドルされている統合開発環境 Code Composer Studio 2.0
68(CCS 2.0) を用い,オブジェクトファイルフォーマットは COFF となっている.
69
70
711.2 サポートする機能の概要
72
73TMS320VC5402 の依存の機能として,性能評価用システム時刻参ç…
74§æ©Ÿèƒ½(vxget_tim)を
75サポートしている.割込みの禁止と許可(dis_int, ena_int)はサポートしていない.
76
77
781.3 他のターゲットへのポーティング
79
80現バージョンでは,TMS320C54x をサポートしている.
81
82
831.5 シリアルポート
84
85DSKボードに搭載されているシリアルポートは,カーネルのログ出力用に使用する.
86シリアルポートの設定は,データ : 8bit,Parity : none,Stop : 1bit である.
87
88 カーネルログ用
89・TMS320VC5402 DSK COM : 1152000bps
90
91
921.6 ファーコールについて
93
94ファーコールについては,現在はサポートしていない.そのため,ディスパッチ,
95割込みå…
96¥ã‚Šå£å‡¦ç†ã«ãŠã„て,拡張プログラムカウンタ(XPC)の保存,退避は行って
97いない.
98
99
1002.TMS320VC5402 DSP 依存部の機能
101
102この説では,カーネルおよびシステムサービスの機能の中で,TMS320VC5402 DSP
103依存の部分について解説する.
104
1052.1 データ型
106
107TMS320C54x では,16ビット,32ビット 長のデータ型をサポートしている.
108int型および char型,short型のサイズは 16ビットである.long型は 32ビットである.
1098ビット のデータ型がないため B, UB, VB が 16ビットになっており,注意が必
110要で
111ある.
112
113
1142.2 オフセットファイルの生成
115
116アセンブリ言語で記述されるプログラムから,C言語の構造体にアクセスする場合に
117必
118要となるオフセット値をファイルに出力するために,JSPカーネルでは,
119genoffset を用意している.しかしながら,TMS320C54x では genoffset を使用する
120ことができないため,TCB 中のタスクコンテキストブロック(tskctxb)に含まれる
121 pc 及び sp フィールドのオフセット値は固定となっている.そのため,TCB 中の
122ビットフィールドやデータ型に修正を加える場合, pc 及び sp のオフセット値に
123注意が必
124要である.これは,2.1 データ型 の説明文と併せて考æ…
125®ã™ã‚‹ï¼Ž
126
127
1282.3 割込み管理機能と割込みハンドラ
129
130カーネル管理外の割込みとしては, NMI がある.よって,CPUロック状æ…
131‹ã‚„初期化
132ルーチン内
133では,NMI以外の割込みはすべて禁止されている.å…
134·ä½“的には,
135ST1(ステータスレジスタ1)のマスカブル割込み禁止ビット(INTM : bit 11)が 1
136に設定される.
137
138DEF_INH で指定する割込みハンドラ番号(inhno)は,C5402 では,割込みベクタポインタ
139(IPTR)からの各割込みベクタのオフセット値を右に2ビットシフト(4で除算)した値である.
140データ型(INHNO)は unsigned int型に定義されている.
141
142
1432.4 CPU例外管理機能とCPU例外ハンドラ
144
145TMS320C54x DSPにはCPU例外がない.
146
147
1482.5 スタートアップモジュール
149
150C5402 DSP 依存のスタートアップモジュール(start.S)では,次の初期化処理を行う.
151
152(A) ステータスレジスタの初期化とスタックポインタの初期化
153
154最初に,マスカブル割込みの禁止する.
155
156次に,直接アドレッシングにスタックポインタ(SP)を用いるコンパイラ互換モード
157に設定し,Cプログラムをサポートする.
158
159次に,スタックポインタを STACKTOP に設定する.ここで割込みスタックポインタ
160に設定されたスタック領域は,カーネル起動後は非タスクコンテキスト用のスタック
161領域として使われる.STACKTOP は,sys_surpport.S 部で定義することを定義して
162いる.
163
164(B) hardware_init_hook の呼出し
165
166hardware_init_hook が 0 でない場合には,hardware_init_hook を呼び出す.
167hardware_init_hook は,カーネルが起動される前に行う必
168要があるターゲット
169依存の初期化を行うために用意している.hardware_init_hook がどこでも定義
170されていない場合,リンカでこのシンボルを 0 に定義する(リンカコマンドファ
171イル c5402dsk.cmd 内
172に記述あり).
173
174(C) bssセクションと cinitセクションの初期化
175
176bssセクションをゼロクリアする.また,dataセクションを初期化
177
178(D) software_init_hook の呼出し
179
180software_init_hook が 0 でない場合には,software_init_hook を呼び出す.
181software_init_hook は,カーネルが起動される前に行う必
182要があるソフトウェア
183環境(å…
184·ä½“的には,ライブラリ)依存の初期化を行うために用意している.
185software_init_hook がどこでも定義されていない場合,リンカでこのシンボルを
1860 に定義する(リンカコマンドファイル内
187に記述あり).
188
189(E) カーネルの起動
190
191kernel_start へ分岐し,カーネルを起動する.kernel_start からリターンして
192くることは想定していない.
193
194
1953.システム依存部の機能
196
1973.1 システムクロックドライバ
198
199システムクロックドライバが isig_tim を呼び出す周期は,sys_defs.h 中 の
200TIC_NUME と TIC_DENO で定義されている(標準は 1 ミリ秒周期).この定義を
201変更することで,isig_tim を呼び出す周期を変更することができる.ただし,
202タイマの精度が 1μ秒であるため,1μ秒単位で端数になる値を設定した場合
203には,isig_tim の呼出し周期に誤差が生じることになる.
204
205
2063.2 性能評価用システム時刻参ç…
207§æ©Ÿèƒ½
208
209TMS320VC5402 DSP 依存部では,性能評価用システム時刻参ç…
210§æ©Ÿèƒ½(vxget_tim)を
211サポートしている.性能評価用システム時刻の精度は,1μ秒単位である.なお,
212SYSUTIM型は UW型(32ビットの符号無し整数型)に定義している.
213
2143.3 シリアルインタフェースドライバ
215
216TMS320VC5402 DSK シリアルインタフェースドライバは,DSK ボード上の
217TL16C550CFN のUARTをサポートしている.
218
2193.4 メモリマップ
220
221・C5402 DSK
222依存部では,コード領域を 0x4000 〜 0xFFFF 約96KB,データ領域を 0x0080 〜
2230x3FFF 約32KB,非タスクコンテキスト用のスタック領域を 〜 0x3FFF に確保し
224ている.コード領域の 0xFF80 〜 0xFFFF は,割込みベクタテーブル領域として
225使用している.また,0x0060 〜 0x007F をスクラッチパッド領域として確保して
226いる.スクラッチパッド領域では,メモリ マップド レジスタ アドレッシング
227を使用することができる.
228
229
2304.開発環境の構築
231
232開発環境には,統合開発環境 CCS (2.0) と Windows シミュレーション環境を用
233いる.それぞれの開発環境の構築方法については,CCS のドキュメントおよび,
234Windows シミュレーション環境構築マニュアルを参ç…
235§ã®ã“と.なお,CCS (2.0)
236のインストールは c:\ti のディレクトリに行うことを前提として説明を行う.
237
2384.1 開発環境の概要
239
2404.1.1 ライブラリ関数
241
242TMS320C54x では,除算,32ビット乗算にライブラリ関数を用いている.しかし,
243ライブラリをプロジェクトに組み込んでビルドすると,start.S のスタートアップ
244ルーチンが使用できなくなる.そのため,ライブラリのソース (rts.src) からい
245くつかの関数のソース・ファイルを抽出してプロジェクトに追加する必
246要が生じる
247場合がある.以下のコマンドでソース・ファイルを抽出することができる。
248
249 ar500 -x rts.src xxx.asm yyy.asm zzz.asm
250
251 c:\ti\c5400\cgtools\bin\
252 ar500.exe
253 c:\ti\c5400\cgtools\lib\
254 rts.src
255
256サンプルプログラムでは,ldiv.asm, udiv.asm, lmpy.asm の3つのファイルが
257必
258要となる.これらのファイルの抽出例が jsp\C5402DSK\configure.vbs にあ
259るので参考にしてほしい.
260
2614.1.1 コンフィギュレータのビルド
262
263コンフィギュレータは,Windowsシミュレーション環境の cfg.exe を用いる.
264cfg.exe のビルド方法は Windows環境の方を参ç…
265§ã•ã‚ŒãŸã—
266
2674.1.3 コンフィギュレータの制限事項
268
269
270CCS では空のオブジェクトは作れないため,cfg のオプションとして
271
272 --ZERO "x y[1]"
273
274を指定する必
275要がある.サンプル以外のコンフィギュレーションファイルを利
276用する場合,コンフィギュレータに kernel_id.h と kernel_cfg.c を作成さ
277せる必
278要がある.å…
279·ä½“的なオプションについては,Windows シミュレーション
280環境構築マニュアルを参ç…
281§ã®ã“と.
282
283なお,コンフィギュレータのå…
284·ä½“的な使用例が jsp\C5402DSK\configure.vbs
285にあるので参考にしてほしい.
286
2874.1.2 Code Composer Studio 2.0 (CCS 2.0) における TOPPERS/JSP のビルド
288
289まず,jsp のアーカイブファイルを c:\ti\myprojects\ に展開する.次に
290c:\ti\myprojects\jsp\C5402DSK (以下ここを\jsp\C5402DSKとする)にあるス
291クリプトファイル,
292
293 c:\ti\myprojects\jsp\C5402DSK> configure.vbs
294
295を実行することにより,sample1.cfg, sample1.h, sample1.cコピー,コンフィ
296ギュレータによるkernel_id.h, kernel_cfg.cの生成,さらに ldiv.asm,
297lmpy.asm, udiv.asm の抽出が行われる.これらのファイルは \jsp\tools\C5402DSK
298に作成される.
299
300\jsp\tools\C5402DSK\ccs_project 内
301にあるサンプルプログラムのプロジェクトファ
302 イル TOPPERS.pjt を CCS から開くと,既にビルドに必
303要な設定を終えた状
304 æ…
305‹ã«ãªã£ã¦ã„る.
306
307CCS からビルドを行うと \jsp\tools\C5402DSK に TOPPERS.out が生成されるので,こ
308れをターゲットボードにダウンロードすれば実行可能となる.ターゲットとの
309シリアル通信の速度は 115200bps である.
310
311
3125.その他
313
3145.1 ディレクトリ・ファイル構成
315
316 c:\ti\myprojects\jsp\tools\C5402DSK
317 configure.vbs kernel_cfg.c kernel_id.h 生成のためのバッチファイル
318 \ccs_project\ccs_project.pjt CCS 2.0 プロジェクトファイル
319
320 c:\ti\myprojects\jsp\config\tms320c54x
321 c54x.h TMS320C54x の定義
322 cpu_support.S プロセッサ依存部のサブルーチン
323 cpu_config.c プロセッサ依存部の関数
324 cpu_config.h プロセッサ依存部の構成定義
325 cpu_context.h コンテキスト操作
326 cpu_defs.h プロセッサ依存部のアプリケーション用定義
327 start.S スタートアップモジュール
328 vectors.S 割込みベクタテーブル
329 hw_timer.h タイマ操作ルーチン
330 cpu_insn.h 低レベルプロセッサ操作ルーチン
331 cpu_rename.def カーネルの内
332部識別名のリネーム定義
333 cpu_rename.h カーネルの内
334部識別名のリネーム
335 cpu_unrename.h カーネルの内
336部識別名のリネーム解除
337 tool_defs.h 開発環境依存部のアプリケーション用定義
338 tool_config.h 開発環境依存部の構成定義
339 api.h APIガード通過用定義ファイル
340
341 c:\ti\myprojects\jsp\config\tms320c54x\c5402dsk
342 c5402dsk.cmd リンカコマンドファイル
343 hw_serial.h シリアルインタフェースデバイス操作ルーチン
344 hw_serial.cfg SIOドライバのコンフィギュレーションファイル
345 c5402dsk.h C5402 DSK ハードウェア定義
346 sys_config.c システム依存部の関数
347 sys_config.h システム依存部の構成定義
348 sys_defs.h システム依存部のアプリケーション用定義
349 sys_support.S システム依存部のサブルーチン
350 sys_rename.def カーネルの内
351部識別名のリネーム定義
352 sys_rename.h カーネルの内
353部識別名のリネーム
354 sys_unrename.h カーネルの内
355部識別名のリネーム解除
356 tl16c550cfn.c 簡易SIOドライバ
357 tl16c550cfn.h 簡易SIOドライバ関連の定義
Note: See TracBrowser for help on using the repository browser.