source: anotherchoice/tags/jsp-1.4.4-full-UTF8/config/h8/nkev_010h8/sys_config.h@ 26

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

initial

File size: 11.9 KB
Line 
1/*
2 * TOPPERS/JSP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2004 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2001-2007 by Industrial Technology Institute,
9 * Miyagi Prefectural Government, JAPAN
10 * Copyright (C) 2001-2004 by Dep. of Computer Science and Engineering
11 * Tomakomai National College of Technology, JAPAN
12 * Copyright (C) 2001-2004 by Kunihiko Ohnaka
13 *
14 * 上記著作権者
15は,以下の (1)〜(4) の条件か,Free Software Foundation
16 * によってå…
17¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
18 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
19 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
20å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
21 * 利用と呼ぶ)することを無償で許諾する.
22 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
23 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
24 * スコード中に含まれていること.
25 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
26 * 用できる形で再é…
27å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
28å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
29 * 者
30マニュアルなど)に,上記の著作権表示,この利用条件および下記
31 * の無保証規定を掲載すること.
32 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
33 * 用できない形で再é…
34å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
35 * と.
36 * (a) 再é…
37å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
38マニュアルなど)に,上記の著
39 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
40 * (b) 再é…
41å¸ƒã®å½¢æ…
42‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
43 * 報告すること.
44 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
45 * 害からも,上記著作権者
46およびTOPPERSプロジェクトをå…
47è²¬ã™ã‚‹ã“と.
48 *
49 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
50お
51 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
52 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
53 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
54 *
55 * @(#) $Id: sys_config.h,v 1.3 2007/03/23 07:22:15 honda Exp $
56 */
57
58#ifndef _SYS_CONFIG_H_
59#define _SYS_CONFIG_H_
60
61/*
62 * カーネルの内
63部識別名のリネーム
64 */
65
66#include <sys_rename.h>
67
68/*
69 * ターゲットシステムのハードウェア資源の定義
70 */
71
72#include <h8_3069f.h>
73
74/*
75 * 起動メッセージのターゲット名
76 */
77
78#define TARGET_NAME "NKEV-010H8"
79
80/*
81 * chg_ipmをサポートするかどうかの定義
82 */
83#define SUPPORT_CHG_IPM
84
85/*
86 * vxget_tim をサポートするかどうかの定義
87 */
88
89#define SUPPORT_VXGET_TIM
90
91/*
92 * スタック領域の定義
93 */
94
95#define STACKTOP (H8IN_RAM_BASE + H8IN_RAM_SIZE) /* タスク独立部用スタックの初期値 */
96#define str_STACKTOP _TO_STRING(STACKTOP)
97
98#ifndef _MACRO_ONLY
99
100/*
101 * ターゲットシステム依存の初期化
102 */
103
104extern void sys_initialize(void);
105
106/*
107 * ターゲットシステムの終了
108 *
109 * システムを終了する時に使う.ROMモニタ呼出しで実現することを想定し
110 * ている.
111 */
112
113extern void sys_exit(void);
114
115/*
116 * ターゲットシステムの文字出力
117 *
118 * システムの低レベルの文字出力ルーチン.ROMモニタ呼出しで実現するこ
119 * とを想定している.
120 */
121
122extern void cpu_putc(char c);
123
124Inline void
125sys_putc(char c)
126{
127#ifndef GDB_STUB
128
129 cpu_putc(c);
130
131#else /* of #ifndef GDB_STUB */
132
133/* GDB STUBを使う場合に低レベル出力をGDBのコンソールへ出力 */
134 asm (" push.l er1 \n"\
135 " mov.l er0, er1 \n"\
136 " sub.l er0, er0 \n"\
137 " trapa #1 \n"\
138 " pop.l er1 \n"\
139 );
140
141#endif /* of #ifndef GDB_STUB */
142
143 };
144
145#endif /* _MACRO_ONLY */
146
147
148/*
149 * (1) シリアルポートの設定
150 * (2) タイマーの設定
151 * (3) 外部アドレス空間制御
152 */
153
154/*
155 * サポートするシリアルディバイスの数は最大 3。
156 * ただし、現在は 2 まで定義している。
157 *
158 * サンプルプログラムを動かす場合は
159 * sys_defs.hにあるTASK_PORTIDの定義にも注意
160 */
161
162#ifdef GDB_STUB
163
164/* GDB stubを使用するときは強制的にTNUM_POTR = 1にする */
165#define TNUM_PORT 1
166
167#else /* of #ifdef GDB_STUB */
168
169#define TNUM_PORT 2
170
171#endif /* of #ifdef GDB_STUB */
172
173#define CONSOLE_PORTID SYSTEM_PORTID /* コンソールに用いるシリアルポート番号 */
174#define LOGTASK_PORTID SYSTEM_PORTID /* システムログを出力するシリアルポート番号 */
175
176#define H8_MIN_BAUD_RATE 9600 /* SCI をクローズする前の待
177ち時間の計算に使用する。*/
178
179/* エラー割り込みを、å…
180¥åŠ›å‰²ã‚Šè¾¼ã¿ã¨åˆ¥ã«æ“ä½œã™ã‚‹å ´åˆã¯ã‚³ãƒ¡ãƒ³ãƒˆã‚’はずす。*/
181/*#define H8_CFG_SCI_ERR_HANDLER*/
182
183/*
184 * SYSTEM 用 SCI の設定値
185 */
186
187#ifdef GDB_STUB
188
189/* GDB stubを使用する時はSYSTEM_SCIはSCI0を使用する */
190#define SYSTEM_SCI H8SCI0
191#define SYSTEM_SCI_IPR H8IPRB
192#define SYSTEM_SCI_IP_BIT H8IPR_SCI0_BIT
193
194#else /* of #ifdef GDB_STUB */
195
196#define SYSTEM_SCI H8SCI1
197#define SYSTEM_SCI_IPR H8IPRB
198#define SYSTEM_SCI_IP_BIT H8IPR_SCI1_BIT
199
200#endif /* of #ifdef GDB_STUB */
201
202#define SYSTEM_SCI_SMR 0
203 /* 送受信フォーマット */
204 /* 調歩同期式 */
205 /* キャラクタレングス:8ビット */
206 /* パリティなし */
207 /* ストップビットレングス:1 */
208 /* クロックセレクト(分周比):1 */
209
210#define SYSTEM_BAUD_RATE 38400 /* bps */
211
212#if TNUM_PORT == 1
213
214#define SYSTEM_PORTID 1
215
216#ifdef GDB_STUB
217
218#define INHNO_SERIAL_IN IRQ_RXI0
219#define INHNO_SERIAL_OUT IRQ_TXI0
220#define INHNO_SERIAL_ERR IRQ_ERI0
221
222#else /* #ifdef GDB_STUB */
223
224#define INHNO_SERIAL_IN IRQ_RXI1
225#define INHNO_SERIAL_OUT IRQ_TXI1
226#define INHNO_SERIAL_ERR IRQ_ERI1
227
228#endif /* #ifdef GDB_STUB */
229
230#elif TNUM_PORT == 2 /* of #if TNUM_PORT == 1 */
231
232#define USER_SCI H8SCI0
233
234#define USER_SCI_IPR H8IPRB
235#define USER_SCI_IP_BIT H8IPR_SCI0_BIT
236
237#define USER_SCI_SMR 0
238 /* 送受信フォーマット */
239 /* 調歩同期式 */
240 /* キャラクタレングス:8ビット */
241 /* パリティなし */
242 /* ストップビットレングス:1 */
243 /* クロックセレクト(分周比):1 */
244
245#define USER_BAUD_RATE 38400 /* bps */
246
247#define USER_PORTID 1
248#define SYSTEM_PORTID 2
249
250#define INHNO_SERIAL_IN IRQ_RXI0
251#define INHNO_SERIAL_OUT IRQ_TXI0
252#define INHNO_SERIAL_ERR IRQ_ERI0
253
254#define INHNO_SERIAL2_IN IRQ_RXI1
255#define INHNO_SERIAL2_OUT IRQ_TXI1
256#define INHNO_SERIAL2_ERR IRQ_ERI1
257
258#else /* of #if TNUM_PORT == 1 */
259
260#error TNUM_PORT <= 2
261
262#endif /* of #if TNUM_PORT == 1 */
263
264/* プライオリティレベル設定用のデータ */
265
266/* 割込み要求のレベル設定 */
267#define SYSTEM_SCI_IPM IPM_LEVEL0
268#define USER_SCI_IPM IPM_LEVEL0
269
270/*
271 * 割込みハンドラ実行中の割込みマスクの値
272 *   他の割込みをマスクするための設定
273 *   自分と同じレベルの割込み要求をブロックするため、
274 *   上記の割込み要求レベルより1つ高いレベルに設定する。
275 */
276#if TNUM_PORT == 1 /* ポート1:システム・ポート */
277
278/* システム・ポート */
279#if SYSTEM_SCI_IPM == IPM_LEVEL0
280#define sio_in_handler_intmask IPM_LEVEL1
281#elif SYSTEM_SCI_IPM == IPM_LEVEL1
282#define sio_in_handler_intmask IPM_LEVEL2
283#endif /* SYSTEM_SCI_IPM == IPM_LEVEL0 */
284
285
286#elif TNUM_PORT == 2 /* of #if TNUM_PORT == 1 */
287 /* ポート1:ユーザー・ポート */
288 /* ポート2:システム・ポート */
289/* ユーザー・ポート */
290#if USER_SCI_IPM == IPM_LEVEL0
291#define sio_in_handler_intmask IPM_LEVEL1
292#elif USER_SCI_IPM == IPM_LEVEL1
293#define sio_in_handler_intmask IPM_LEVEL2
294#endif /* USER_SCI_IPM == IPM_LEVEL0 */
295
296/* システム・ポート */
297#if SYSTEM_SCI_IPM == IPM_LEVEL0
298#define sio_in2_handler_intmask IPM_LEVEL1
299#elif SYSTEM_SCI_IPM == IPM_LEVEL1
300#define sio_in2_handler_intmask IPM_LEVEL2
301#endif /* SYSTEM_SCI_IPM == IPM_LEVEL0 */
302
303#endif /* of #if TNUM_PORT == 1 */
304
305#define sio_out_handler_intmask sio_in_handler_intmask
306#define sio_err_handler_intmask sio_in_handler_intmask
307
308#ifndef GDB_STUB
309
310#define sio_out2_handler_intmask sio_in2_handler_intmask
311#define sio_err2_handler_intmask sio_in2_handler_intmask
312
313#endif
314/*
315 * タイマの設定
316 */
317
318#define SYSTEM_TIMER H816TU0
319
320#define SYSTEM_TIMER_CNT (SYSTEM_TIMER + H8TCNT)
321#define SYSTEM_TIMER_TCR (SYSTEM_TIMER + H8TCR)
322#define SYSTEM_TIMER_TIOR (SYSTEM_TIMER + H8TIOR)
323#define SYSTEM_TIMER_IER H816TU_TISRA
324#define SYSTEM_TIMER_IFR H816TU_TISRA
325#define SYSTEM_TIMER_TSTR H816TU_TSTR
326#define SYSTEM_TIMER_GR (SYSTEM_TIMER + H8GRA)
327
328#define SYSTEM_TIMER_STR H8TSTR_STR0
329#define SYSTEM_TIMER_STR_BIT H8TSTR_STR0_BIT
330#define SYSTEM_TIMER_IE H8TISRA_IMIEA0 /* interrupt mask */
331#define SYSTEM_TIMER_IE_BIT H8TISRA_IMIEA0_BIT
332#define SYSTEM_TIMER_IF H8TISRA_IMFA0 /* match flag */
333#define SYSTEM_TIMER_IF_BIT H8TISRA_IMFA0_BIT
334
335#define INHNO_TIMER IRQ_IMIA0
336
337#define SYSTEM_TIMER_TCR_BIT (H8TCR_CCLR0 | H8TCR_TPSC1 | H8TCR_TPSC0)
338#define SYSTEM_TIMER_TIOR_BIT (0)
339
340#define TIMER_CLOCK ((CPU_CLOCK)/8000) /* 20MHz / 8 = 2.5MHz = 2500KHz */
341
342/* プライオリティレベル設定用のデータ */
343
344/* 割込み要求のレベル設定 */
345#define SYSTEM_TIMER_IPR H8IPRA
346#define SYSTEM_TIMER_IP_BIT H8IPR_ITU0_BIT
347#define SYSTEM_TIMER_IPM IPM_LEVEL1
348
349/*
350 * 割込みハンドラ実行中の割込みマスクの値
351 *   他の割込みをマスクするための設定
352 *   自分と同じレベルの割込み要求をブロックするため、
353 *   上記の割込み要求レベルより1つ高いレベルに設定する。
354 */
355#if SYSTEM_TIMER_IPM == IPM_LEVEL0
356#define timer_handler_intmask IPM_LEVEL1
357#elif SYSTEM_TIMER_IPM == IPM_LEVEL1
358#define timer_handler_intmask IPM_LEVEL2
359#endif /* SYSTEM_TIMER_IPM == IPM_LEVEL0 */
360
361/*
362 * 外部アドレス空間制御
363 */
364
365#define ENABLE_P8_CS (H8P8DDR_CS0|H8P8DDR_CS1|H8P8DDR_CS2|H8P8DDR_CS3)
366
367#if 0
368
369#define ENABLE_LOWER_DATA
370#define ENABLE_PB_CS (H8PADDR_CS4|H8PADDR_CS5|H8PADDR_CS6|H8PBDDR_CS7)
371
372#endif /* of #if 0 */
373
374#define HEAP_TOP 0x600000UL
375
376/*
377 * 微少時間待
378ちのための定義
379 */
380
381#if defined(ROM)
382
383/* ROM化(命令が内
384蔵フラッシュROM上にé…
385ç½®ã•ã‚Œã¦ã„る) */
386#define SIL_DLY_TIM1 4540
387#define SIL_DLY_TIM2 529
388
389#elif defined(INMEM_ONLY)
390
391/* ROM化、内
392蔵メモリのみ使用 */
393#define SIL_DLY_TIM1 2800
394#define SIL_DLY_TIM2 521
395
396#else /* of #if defined(ROM) */
397
398/* 命令が外部RAM上にé…
399ç½®ã•ã‚Œã¦ã„ã‚‹ */
400#define SIL_DLY_TIM1 8290
401#define SIL_DLY_TIM2 1693
402
403#endif /* of #if defined(ROM) */
404
405
406/*
407 * DDRの初期値の定義
408 */
409
410#define H8P1DDR0 0xff /* ポート1 */
411#define H8P2DDR0 0xff /* ポート2 */
412#define H8P3DDR0 DUMMY /* ポート3 */
413#define H8P4DDR0 DUMMY /* ポート4 */
414#define H8P5DDR0 0xff /* ポート5 */
415#define H8P6DDR0 DUMMY /* ポート6 */
416
417/* ポート7はå…
418¥åŠ›å°‚用でDDRレジスタがないため、省略している。 */
419
420#define H8P8DDR0 (H8P8DDR_CS1 | H8P8DDR_CS2 | H8P8DDR_CS3)
421 /* ポート8 */
422#define H8P9DDR0 DUMMY /* ポート9 */
423#define H8PADDR0 DUMMY /* ポートA */
424#define H8PBDDR0 DUMMY /* ポートB */
425
426#endif /* _SYS_CONFIG_H_ */
Note: See TracBrowser for help on using the repository browser.