source: anotherchoice/tags/jsp-1.4.4-full-UTF8/doc/xstormy16.txt@ 363

Last change on this file since 363 was 363, checked in by ykominami, 5 years ago

add tags/jsp-1.4.4-full-UTF8

  • Property svn:executable set to *
File size: 18.3 KB
Line 
1
2 = TOPPERS/JSPカーネル ユーザズマニュアル =
3 (Xstormy16 ターゲット依存部)
4
5 (Release 1.4.4対応,最終更新: 07-Dec-2010)
6
7------------------------------------------------------------------------
8 TOPPERS/JSP Kernel
9 Toyohashi Open Platform for Embedded Real-Time Systems/
10 Just Standard Profile Kernel
11
12 Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
13 Toyohashi Univ. of Technology, JAPAN
14 Copyright (C) 2004-2010 by Embedded and Real-Time Systems Laboratory
15 Graduate School of Information Science, Nagoya Univ., JAPAN
16
17 上記著作権者
18は,以下の (1)〜(3) の条件を満たす場合に限り,本ドキュメ
19 ント(本ドキュメントを改変したものを含む.以下同じ)を使用・複製・改
20 変・再é…
21å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
22 (1) 本ドキュメントを利用する場合には,上記の著作権表示,この利用条件
23 および下記の無保証規定が,そのままの形でドキュメント中に含まれて
24 いること.
25 (2) 本ドキュメントを改変する場合には,ドキュメントを改変した旨の記述
26 を,改変後のドキュメント中に含めること.ただし,改変後のドキュメ
27 ントが,TOPPERSプロジェクト指定の開発成果物である場合には,この限
28 りではない.
29 (3) 本ドキュメントの利用により直接的または間接的に生じるいかなる損害
30 からも,上記著作権者
31およびTOPPERSプロジェクトをå…
32è²¬ã™ã‚‹ã“と.また,
33 本ドキュメントのユーザまたはエンドユーザからのいかなる理由に基づ
34 く請求からも,上記著作権者
35およびTOPPERSプロジェクトをå…
36è²¬ã™ã‚‹ã“と.
37
38 本ドキュメントは,無保証で提供されているものである.上記著作権者
39およ
40 びTOPPERSプロジェクトは,本ドキュメントに関して,特定の使用目的に対す
41 る適合性も含めて,いかなる保証も行わない.また,本ドキュメントの利用
42 により直接的または間接的に生じたいかなる損害に関しても,その責任を負
43 わない.
44
45------------------------------------------------------------------------
46
471.Xstormy16 ターゲット依存部の概要
48
491.1 ターゲットシステムと開発環境
50
51TOPPSER/JSPå…
52¬å¼å…
53¬é–‹ç‰ˆã§ã®Xstormy16プロセッサのターゲットシステムとして
54は、「三洋マイコン 開発ツール(Xstormy16シリーズ)」のEVAデバッガのエミュ
55レーション環境をサポートしている。
56「三洋マイコン 開発ツール(Xstormy16シリーズ)」は以下からå…
57¥æ‰‹ã§ãã‚‹ã€‚
58http://semicon.sanyo.com/jp/micon/index.php
59この中にCコンパイラ等も含まれる。
60Xstormy16シリーズの各CPUに対応したTOPPERS/JSP関連のファイルは、上記に随
61時追加されるので、非エミュレーション環境での動作や実際の製品開発を行う
62場合は、上記からå…
63¥æ‰‹ã§ãã‚‹æœ€æ–°ç‰ˆã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’使用する必
64要がある。
65また、上記開発ツール中には、TOPPERS/JSPをベースにいくつかの修正を行った
66ものが、ソースおよびコンパイル済みのライブラリの形で納められているので、
67カーネル自身を修正・再コンパイルする必
68要がないのであれば、上記開発ツー
69ルをダウンロード・インストールするのみで、TOPPERS/JSPを利用できる。
70
711.2 サポートする機能の概要
72
73Xstormy16では、JSPで拡張された以下の機能はサポートしていない。
74(1) 割込みマスクの変更・参ç…
75§(chg_ixx/get_ixx)
76(2) 割込みの禁止と許可(dis_int/ena_int)
77(3) 性能評価用システム時刻参ç…
78§æ©Ÿèƒ½(vxget_tim)
79Xstormy16では、割り込みの許可・禁止およびレベル(優å…
80ˆåº¦)がSFR(IL1L-IL2H)
81で管理されているため、上記APIに適合しない。これらの変更はSFRへの設定に
82よって変更する必
83要がある。
84
851.3 他のターゲットへのポーティング
86
87Xstormy16シリーズの(LC590200を除く)å…
88¨ã¦ã®CPUではCPUコア自身の機能および
89タイムスティック供給用のタイマは同一の仕様で実装
90されている。またSIOも実
91装
92されている機種ではå…
93¨ã¦åŒä¸€ã®ä»•æ§˜ã¨ãªã£ã¦ã„るので、他のターゲットへの
94ポーティングを行う時に、カーネル自身は修正する必
95要はない。
96実装
97されているメモリサイズに応じたリンカースクリプト等、ターゲット毎に
98修正が必
99要なファイルは、上記「三洋マイコン 開発ツール(Xstormy16シリーズ)」
100に含まれているので、これを使用する。
101
1021.4 シリアルポート (UART)
103
104EVAデバッガでは、エミュレーション環境・非エミュレーション環境ともにUART0
105とUART1の2本のシリアルポートを持つ。また、実CPUでも同様の仕様でUARTを持
106つ機種がある。
107TOPPERS/JSPのログ出力、およびprintf()/scanf()等の標準å…
108¥å‡ºåŠ›ã«ã¯ã€ã“の内
109
110UART0を用いる。(sys_config.hのLOGTASK_PORTIDで変更可能)
111シリアルポートの設定を以下に示す。
112 ・ボーレイト、57600Baud
113 ・データ長、8 ビット
114 ・ストップビット、1 ビット
115 ・パリティなし
116 ・フロー制御なし
117
1182.Xstormy16 プロセッサ依存部の機能
119
120この節では、カーネルおよびシステムサービスの機能の中で、Xstormy16依存の
121部分について解説する。
122
1232.1 データ型
124
125signed int型および unsigned int型のサイズは 16ビットである。
126
1272.2 割込み管理機能と割込みハンドラ
128
1292.2.1 カーネル管理外の割り込み
130
131「Xstormy16プログラマーズガイド」2.4章に記述された方法で定義された割り
132込み処理ルーチンは、カーネル管理外の割り込みとして機能する。
133カーネル管理外の割り込みはカーネルに関連した余分なオーバーヘッドが少な
134く高速である利点がある反面、以下の点に注意する必
135要がある。
136(1) カーネル管理外の割り込みの優å…
137ˆåº¦ã¯ã€å…
138¨ã¦ã®ã‚«ãƒ¼ãƒãƒ«ç®¡ç†ã®å‰²ã‚Šè¾¼ã¿ã®
139 優å…
140ˆåº¦ã‚ˆã‚Šã‚‚高くなければならない。(カーネル管理外の割り込み処理中に
141 カーネル管理の割り込みを受け付けると、そこでディスパッチが発生し、
142 カーネル管理外の割り込みの処理が途中で中断してしまう可能性があるた
143 め。)
144 「三洋マイコン 開発ツール(Xstormy16シリーズ)」に含まれる版では、"非
145 タスクコンテキストからのサービスコールの遅
146延実行"を採用しているため、
147 この制限はない。
148(2) カーネル管理外の割り込みの割り込み処理ルーチンでは、カーネルサービ
149 スを呼び出してはならない。
150(3) カーネル管理外の割り込みでは、その発生時のスタックをそのまま用いる
151 ため、å…
152¨ã¦ã®ã‚¿ã‚¹ã‚¯ã®ã‚¹ã‚¿ãƒƒã‚¯ã®å®¹é‡ã«ãã®å¿…
153要分をå…
154¥ã‚Œã¦ãŠãå¿…
155要があ
156 る。
157(4) カーネル管理外の割り込みも、CPUロック状æ…
158‹ã§ã¯å—け付けられない。
159 å…
160¬å¼å…
161¬é–‹ç‰ˆã®Xstormy16用TOPPERS/JSPでは、大部分のサービスコールが内
162
163 部ではCPUロック状æ…
164‹ã¨ãªã£ã¦ã„るので注意が必
165要。
166 「三洋マイコン 開発ツール(Xstormy16シリーズ)」に含まれる版では、サー
167 ビスコール内
168でCPUをロックしない。割り込みハンドラのå…
169¥ã‚Šå£ãƒ»å‡ºå£å‡¦ç†
170 等で最大12クロックのCPUロックの区間がある。
171
1722.2.2 割込みハンドラ番号
173
174DEF_INH で指定する割込みハンドラ番号(inhno)は、Xstormy16 での割り込み
175ベクタ番号を表し、そのデータ型(INHNO)は unsigned int型に定義されている。
176割り込みハンドラ番号には、0-16が指定でき、EVAデバッガのエミュレーション
177環境では、以下が実装
178されている。
179 1 : Base Timer (アプリケーションで使用可)
180 2 : Timer0 (タイムスティック供給用に使用)
181 3 : Timer1 (アプリケーションで使用可)
182 16 : UART (ログ出力・標準å…
183¥å‡ºåŠ›ã§ä½¿ç”¨)
184実CPUで使用可能な割り込みと例外ベクタ番号については、それぞれのマイコン
185のユーザーズマニュアルを参ç…
186§ã€‚
187
1882.2.3 個々
189の割り込みの許可・禁止と優å…
190ˆåº¦
191
192Xstormy16では、個々
193の割り込みの許可・禁止と優å…
194ˆåº¦ã¯ã‚«ãƒ¼ãƒãƒ«ã§ã¯ç®¡ç†ã—な
195い。これらの制御はIL1L/IL1H/IL2L/IL2Hへの設定で行う。
196
1972.3 CPU例外管理機能とCPU例外ハンドラ
198
199DEF_EXC で指定する割込みハンドラ番号のデータ型(EXCNO)は unsigned int
200型に定義されている。以下の番号が指定可能である。
201 0 : 未定義命令の実行
202 1 : 奇数番地へのワードアクセス
203 2 : ROM/RAM未実装
204エリアへのアクセス
205
2062.4 スタートアップモジュール
207
208Xstormy16依存のスタートアップモジュール(start.S)では、次の初期化処理を
209行う。
210(1) スタックポインタの初期化
211(2) .bssセクションの初期化
212(3) .dataセクションの初期化
213(4) カーネルの起動(kernel_startへ分岐)
214
2152.5 非タスクコンテキストの使用するスタック
216
217Xstormy16では、割り込みハンドラを含む非タスクコンテキスト用のスタックと
218して、静的変数やタスク用スタックを確保した後の残りのRAMを使用する。
219タスク実行中に割り込みが発生した場合、割り込みハンドラが呼び出される前
220にカーネル内
221でスタックポインタを非コンテキスト用のスタックに切り替える
222ため、各タスク用のスタックの必
223要なサイズを決める時に割り込みハンドラ内
224
225で使用されるスタックを考æ…
226®ã™ã‚‹å¿…
227要はない。
228しかし、割り込み発生時のPCとPSWおよびR0-R2までの保存はスタックの切り替
229え前に行われるため、12バイト分のエリアはタスク用のスタックで確保してお
230く必
231要がある。
232ワーストケースとなるのは、レベル1の割り込みでスタックを切り替える直前
233にレベル2の割り込みが発生、さらにレベル2割り込みでのスタック切り替え直
234前にレベル3割り込み発生・・・となるような場合で、その必
235要なエリアは、
23612 × (ネストして発生する可能性のある割り込みレベルの数) になる。この分
237のエリアはタスクのスタックに確保しておく必
238要がる。
239
2403. システム依存部の機能
241
2423.1 システムクロックドライバ
243
244システムクロックドライバに使用するTIMER0のオシレータはデフォルトでは
245Xstormy16内
246臓のRC発信を用いている。(約1MHz)
247システムクロックドライバが isig_tim を呼び出す周期は、sys_defs.h 中の
248TIC_NUME と TIC_DENO で定義されている(標準は 5ミリ秒周期)。
249内
250臓RC発信を用いて5ミリ秒周期でタイムティックを供給するドライバはカー
251ネルライブラリ中(ソースはhw_timer.c)に含まれており、デフォルトではこれ
252がリンクされるが、ユーザープログラム側でhw_timer.cを修正したものを作成
253しリンクすることで、使用するオシレータ・割り込みの周期を任意に変更する
254ことができる。この場合、呼び出し周期がCPUクロックに対して十分に長い必
255
256要がある。(目安として、呼び出し周期 >2000/CPUクロック)
257Xstormy16内
258臓のRC発信は、その周波数の精度が低いため、タイマの精度が必
259要
260な場合は、外部X'talオシレータ等に切り替える必
261要がある。
262
2633.2 シリアルインタフェースドライバ
264
265システム依存部のシリアルインターフェースドライバは、UART0/UART1の2つの
266シリアルインターフェースをサポートしている。ポートID=1がUART0、ポートID=2
267がUART1に対応している。
268システムログ等で用いるデフォルトのシリアルポートは、UART0に設定している。
269
2703.3 メモリマップ
271
272EVAデバッガのエミュレーション環境のメモリマップは以下のとおりである。
273 00000-077FF : RAM
274 07E00-07FFF : SFR(Special Function Register)
275 08000-7FFFF : ROM
276カーネル用のデータ領域・ユーザープログラム用のデータ領域、およびタスク
277用のスタックを00000番地から確保し、残りのRAMを非タスクコンテキスト用の
278スタック(下位より)、およびヒープメモリ(上位より)として使用する。
279
2804.開発環境の構築
281
2824.1 三洋提供のファイルを利用する場合
283
284「三洋マイコン 開発ツール(Xstormy16シリーズ)」には、コンパイル済みのラ
285イブラリ形式のJPSカーネルを含む、コンパイラ・デバッガ・統合開発環境等、
286Windows下で開発に必
287要なå…
288¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒå«ã¾ã‚Œã¦ã„るので、通常は、これを
289ダウンロード・インストールすることでTOPERS/JSPを利用できる。
290「三洋マイコン 開発ツール(Xstormy16シリーズ)」は
291http://semicon.sanyo.com/jp/micon/index.php
292からダウンロードできる。
293開発ツールに含まれる下記のドキュメントを参ç…
294§ã®ã“と。
295 ・TOPPERS/JSPユーザーのためのファーストステップガイド
296 ・Xstormy16 プログラマーズガイド
297
2984.2 このå…
299¬å¼å…
300¬é–‹ç‰ˆã‚’利用する場合
301
302このå…
303¬å¼å…
304¬é–‹ç‰ˆã‚’利用する場合、以下の手順で開発環境を構築する。
305
306Step1 三洋マイコン 開発ツール(Xstormy16シリーズ)のインストール
307[å…
308¥æ‰‹å…
309ƒ]
310http://semicon.sanyo.com/jp/micon/index.php
311[インストール手順]
312(1) アーカイブを解凍し、インストーラを実行する。
313(2) インストーラからの問い合わせには、å…
314¨ã¦ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«
315(3) インストールされたIDEを起動
316(4) IDEのメニュー[ツール]->[DOSプロンプト]を起動
317(5) DOSプロンプト内
318で、コマンド"Prepare_perl.bat"を実行(インストール後
319 一度だけ実行すれば良い)
320
321Step2 TOPPERS/JSPのå…
322¥æ‰‹ã¨æº–å‚™
323[å…
324¥æ‰‹å…
325ƒ]
326http://www.toppers.jp/
327ここより、TOPPERS/JSP Ver1.4.4のソースコード(SJIS版)をダウンロード。
328[手順]
329(1) ソースアーカイブを任意のディレクトリ(ここではC:\jspとする)に解凍
330(2) Step1でインストールした、下記のディレクトリにあるcfg.exeとchk.exe
331 をC:\jsp\cfgにコピーしておく
332 C:\Program Files\SanyoX16\Gcc\for_toppers\bin
333(3) 解凍したディレクトリの下に作業用ディレクトリobj(ここではC:\jsp\obj)
334 を作成
335
336Step3 JSPカーネルとサンプルプログラムのコンパイル
337(1) Step1(4)で開いたDOSプロンプトで、Step2(3)で作成したディレクトリ
338 (C:\jsp\obj)に移動する。
339(2) 以下のコマンドを実行
340 正常に実行されれば、C:\jsp\obj\jsp.elf が作成される
341 perl ../configure -C xstormy16 -S simulator
342 make depend
343 make
344(3) DOSプロンプトを閉じる
345
346Step4 EVAデバッガエミュレーション環境での実行
347[手順]
348(1) Windowsに戻り、Step3(2)で作成されたC:\jsp\obj\jsp.elfをダブルクリ
349 ックしてEVAデバッガを起動する。
350(2) 「エミュレーションモードで起動します」の問いに「はい」をクリックで
351 EVAデバッガをエミュレーションモードで起動
352(3) F5を押してプログラムを開始すると、USERウィンドウに以下の表示が出れ
353 ば正常に動作している
354 JSP Kernel Release......
355 : 中略
356 task1 is running (001). |
357 task1 is running (002). |
358 :
359(4) USERウィンドウ下のコマンドå…
360¥åŠ›æ¬„に以下のコマンドをå…
361¥åŠ›
362 < t[Enter] ('<'と't'の間にスペースが必
363要)
364 task1がter_tskされ、task2が動き出す。
365 (サンプルプログラムで使用できる't'以外のコマンドについては、sample1.c
366 頭のコメント参ç…
367§)
368
3695.その他
370
3715.1 ディレクトリ・ファイル構成
372
373Xstormy16 ターゲット依存部の各ファイルの概要は次の通り。
374
375 config/xstormy16/
376 Makefile.config Makefile の Xstormy16依存定義
377 cpu_config.c プロセッサ依存部の関数
378 cpu_config.h プロセッサ依存部の構成定義
379 cpu_context.h コンテキスト操作
380 cpu_defs.h プロセッサ依存部のアプリケーション用定義
381 cpu_insn.h インラインアセンブラルーチンの定義
382 cpu_rename.def カーネルの内
383部識別名のリネーム定義
384 cpu_rename.h カーネルの内
385部識別名のリネーム
386 cpu_unrename.h カーネルの内
387部識別名のリネーム解除
388 cpu_sfrs.h カーネル内
389で使用するSFRの定義
390 cpu_stdio.h 標準å…
391¥å‡ºåŠ›ã‚µãƒãƒ¼ãƒˆã®ãŸã‚ã®é–¢æ•°
392 cpu_support.S プロセッサ依存部のサブルーチン
393 hw_serial.h SIOドライバの構成定義
394 hw_serial.c SIOドライバの関数
395 hw_serial.cfg SIOドライバのコンフィギュレーションファイル
396 hw_timer.h タイマドライバの構成定義
397 hw_timer.c タイマドライバの関数
398 offset.h アセンブラからC構造体アクセスのための定義
399 start.S スタートアップモジュール
400 tool_config.h 開発環境依存部の構成定義
401 tool_defs.h 開発環境依存部のアプリケーション用定義
402 config/xstormy16/simulator/
403 Makefile.config Makefile の システム依存定義
404 LC88F0099.ld エミュレーション環境用リンカースクリプト
405 LC88F0099.S EVAデバッガのための機種情
406å ±
407 sys_config.c システム依存部の関数
408 sys_config.h システム依存部の構成定義
409 sys_defs.h システム依存部のアプリケーション用定義
410 sys_rename.def カーネルの内
411部識別名のリネーム定義
412 sys_rename.h カーネルの内
413部識別名のリネーム
414 sys_unrename.h カーネルの内
415部識別名のリネーム解除
416
417以上
Note: See TracBrowser for help on using the repository browser.