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

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

initial

File size: 13.5 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-2010 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.16 2007/03/23 07:22:15 honda Exp $
56 */
57
58/*
59 * ターゲットシステム依存モジュール
60 *
61 * このインクルードファイルは,t_config.h のみからインクルードされる.
62 * 他のファイルから直接インクルードしてはならない.
63 */
64
65#ifndef _SYS_CONFIG_H_
66#define _SYS_CONFIG_H_
67
68/*
69 * カーネルの内
70部識別名のリネーム
71 */
72
73#include <sys_rename.h>
74
75/*
76 * ターゲットシステムのハードウェア資源の定義
77 */
78
79#include <h8.h>
80#include <h8_3069f.h>
81
82/*
83 * 起動メッセージのターゲット名
84 */
85
86#define TARGET_NAME "AKI-H8/3069F"
87
88
89/*
90 * chg_ipmをサポートするかどうかの定義
91 */
92#define SUPPORT_CHG_IPM
93
94/*
95 * vxget_tim をサポートするかどうかの定義
96 */
97#define SUPPORT_VXGET_TIM
98
99/*
100 * スタック領域の定義
101 */
102
103 /* 非タスクコンテキスト用スタックの初期値 */
104#ifdef REDBOOT
105#define STACKTOP (0x50fff0)
106#else /* REDBOOT */
107#define STACKTOP (H8IN_RAM_BASE + H8IN_RAM_SIZE)
108#endif /* #ifdef REDBOOT */
109
110#define str_STACKTOP _TO_STRING(STACKTOP)
111
112/* RedbootがRAM上に持つベクタテーブルのå…
113ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ */
114#define VECTOR_TABLE_ADDR 0x00fffd20
115
116#ifndef _MACRO_ONLY
117
118/*
119 * ターゲットシステム依存の初期化
120 */
121
122extern void sys_initialize(void);
123
124/*
125 * ターゲットシステムの終了
126 *
127 * システムを終了する時に使う.ROMモニタ呼出しで実現することを想定し
128 * ている.
129 */
130
131extern void sys_exit(void);
132
133/*
134 * ターゲットシステムの文字出力
135 *
136 * システムの低レベルの文字出力ルーチン.ROMモニタ呼出しで実現するこ
137 * とを想定している.
138 */
139
140extern void cpu_putc(char c);
141
142Inline void
143sys_putc(char c)
144{
145 cpu_putc(c);
146};
147
148#endif /* _MACRO_ONLY */
149
150/*
151 * (1) シリアルポートの設定
152 * (2) タイマーの設定
153 * (3) 外部アドレス空間制御
154 */
155
156/*
157 * サポートするシリアルディバイスの数は最大 3。
158 *
159 * サンプルプログラムを動かす場合は
160 * sys_defs.hにあるTASK_PORTIDの定義にも注意
161 */
162#define TNUM_PORT 2
163
164#define CONSOLE_PORTID SYSTEM_PORTID /* コンソールに用いるシリアルポート番号 */
165#define LOGTASK_PORTID SYSTEM_PORTID /* システムログを出力するシリアルポート番号 */
166
167#define H8_MIN_BAUD_RATE 9600 /* SCI をクローズする前の待
168ち時間の計算に使用する。*/
169
170/* エラー割り込みを、å…
171¥åŠ›å‰²ã‚Šè¾¼ã¿ã¨åˆ¥ã«æ“ä½œã™ã‚‹å ´åˆã¯ã‚³ãƒ¡ãƒ³ãƒˆã‚’はずす。*/
172#if 0
173#define H8_CFG_SCI_ERR_HANDLER
174#endif
175
176/*
177 * SYSTEM 用 SCI の設定値
178 */
179
180#define SYSTEM_SCI H8SCI1
181
182#define SYSTEM_SCI_IPR H8IPRB
183#define SYSTEM_SCI_IP_BIT H8IPR_SCI1_BIT
184
185#define SYSTEM_SCI_SMR 0
186 /* 送受信フォーマット */
187 /* 調歩同期式 */
188 /* キャラクタレングス:8ビット */
189 /* パリティなし */
190 /* ストップビットレングス:1 */
191 /* クロックセレクト(分周比):1 */
192
193#define SYSTEM_BAUD_RATE 38400 /* bps */
194
195#define SYSTEM_PORTID 1
196
197#define INHNO_SERIAL_IN IRQ_RXI1
198#define INHNO_SERIAL_OUT IRQ_TXI1
199#define INHNO_SERIAL_ERR IRQ_ERI1
200
201#if TNUM_PORT >= 2
202
203#define USER_SCI H8SCI0
204
205#define USER_SCI_IPR H8IPRB
206#define USER_SCI_IP_BIT H8IPR_SCI0_BIT
207
208#define USER_SCI_SMR 0
209 /* 送受信フォーマット */
210 /* 調歩同期式 */
211 /* キャラクタレングス:8ビット */
212 /* パリティなし */
213 /* ストップビットレングス:1 */
214 /* クロックセレクト(分周比):1 */
215
216#define USER_BAUD_RATE 38400 /* bps */
217
218#define USER_PORTID 2
219
220#define INHNO_SERIAL2_IN IRQ_RXI0
221#define INHNO_SERIAL2_OUT IRQ_TXI0
222#define INHNO_SERIAL2_ERR IRQ_ERI0
223
224#endif /* of #if TNUM_PORT >= 2 */
225
226
227#if TNUM_PORT >= 3
228
229#define USER2_SCI H8SCI2
230
231#define USER2_SCI_IPR H8IPRB
232#define USER2_SCI_IP_BIT H8IPR_SCI2_BIT
233
234#define USER2_SCI_SMR 0
235 /* 送受信フォーマット */
236 /* 調歩同期式 */
237 /* キャラクタレングス:8ビット */
238 /* パリティなし */
239 /* ストップビットレングス:1 */
240 /* クロックセレクト(分周比):1 */
241
242#define USER2_BAUD_RATE 38400 /* bps */
243
244#define USER2_PORTID 3
245
246#define INHNO_SERIAL3_IN IRQ_RXI2
247#define INHNO_SERIAL3_OUT IRQ_TXI2
248#define INHNO_SERIAL3_ERR IRQ_ERI2
249
250#endif /* of #if TNUM_PORT >= 3 */
251
252
253
254/* プライオリティレベル設定用のデータ */
255
256/* 割込み要求のレベル設定 */
257#define SYSTEM_SCI_IPM IPM_LEVEL0
258#define USER_SCI_IPM IPM_LEVEL0
259#define USER2_SCI_IPM IPM_LEVEL0
260
261/*
262 * 割込みハンドラ実行中の割込みマスクの値
263 *   他の割込みをマスクするための設定
264 *   自分と同じレベルの割込み要求をブロックするため、
265 *   上記の割込み要求レベルより1つ高いレベルに設定する。
266 */
267
268/* ポート1:システム・ポート */
269#if SYSTEM_SCI_IPM == IPM_LEVEL0
270#define sio_in_handler_intmask IPM_LEVEL1
271#elif SYSTEM_SCI_IPM == IPM_LEVEL1
272#define sio_in_handler_intmask IPM_LEVEL2
273#endif /* SYSTEM_SCI_IPM == IPM_LEVEL0 */
274
275
276/* ポート2:ユーザー・ポート */
277#if TNUM_PORT >= 2
278#if USER_SCI_IPM == IPM_LEVEL0
279#define sio_in2_handler_intmask IPM_LEVEL1
280#elif USER_SCI_IPM == IPM_LEVEL1
281#define sio_in2_handler_intmask IPM_LEVEL2
282#endif /* USER_SCI_IPM == IPM_LEVEL0 */
283#endif /* of #if TNUM_PORT >= 2 */
284
285/* ポート3:ユーザー・ポート2 */
286#if TNUM_PORT >= 3
287#if USER2_SCI_IPM == IPM_LEVEL0
288#define sio_in3_handler_intmask IPM_LEVEL1
289#elif USER2_SCI_IPM == IPM_LEVEL1
290#define sio_in3_handler_intmask IPM_LEVEL2
291#endif /* USER2_SCI_IPM == IPM_LEVEL0 */
292#endif /* of #if TNUM_PORT >= 3 */
293
294
295#define sio_out_handler_intmask sio_in_handler_intmask
296#define sio_err_handler_intmask sio_in_handler_intmask
297#define sio_out2_handler_intmask sio_in2_handler_intmask
298#define sio_err2_handler_intmask sio_in2_handler_intmask
299#define sio_out3_handler_intmask sio_in3_handler_intmask
300#define sio_err3_handler_intmask sio_in3_handler_intmask
301
302
303/*
304 * タイマの設定
305 */
306
307#define SYSTEM_TIMER H816TU0
308
309#define SYSTEM_TIMER_CNT (SYSTEM_TIMER + H8TCNT)
310#define SYSTEM_TIMER_TCR (SYSTEM_TIMER + H8TCR)
311#define SYSTEM_TIMER_TIOR (SYSTEM_TIMER + H8TIOR)
312#define SYSTEM_TIMER_IER H816TU_TISRA
313#define SYSTEM_TIMER_IFR H816TU_TISRA
314#define SYSTEM_TIMER_TSTR H816TU_TSTR
315#define SYSTEM_TIMER_GR (SYSTEM_TIMER + H8GRA)
316
317#define SYSTEM_TIMER_STR H8TSTR_STR0
318#define SYSTEM_TIMER_STR_BIT H8TSTR_STR0_BIT
319#define SYSTEM_TIMER_IE H8TISRA_IMIEA0 /* interrupt mask */
320#define SYSTEM_TIMER_IE_BIT H8TISRA_IMIEA0_BIT
321#define SYSTEM_TIMER_IF H8TISRA_IMFA0 /* match flag */
322#define SYSTEM_TIMER_IF_BIT H8TISRA_IMFA0_BIT
323
324#define INHNO_TIMER IRQ_IMIA0
325
326#define SYSTEM_TIMER_TCR_BIT (H8TCR_CCLR0 | H8TCR_TPSC1 | H8TCR_TPSC0)
327#define SYSTEM_TIMER_TIOR_BIT (0)
328
329#define TIMER_CLOCK ((CPU_CLOCK)/8000)
330 /* 20MHz / 8 = 2.5MHz = 2500KHz */
331
332/* プライオリティレベル設定用のデータ */
333
334/* 割込み要求のレベル設定 */
335#define SYSTEM_TIMER_IPR H8IPRA
336#define SYSTEM_TIMER_IP_BIT H8IPR_ITU0_BIT
337#define SYSTEM_TIMER_IPM IPM_LEVEL1
338
339/*
340 * 割込みハンドラ実行中の割込みマスクの値
341 *   他の割込みをマスクするための設定
342 *   自分と同じレベルの割込み要求をブロックするため、
343 *   上記の割込み要求レベルより1つ高いレベルに設定する。
344 */
345#if SYSTEM_TIMER_IPM == IPM_LEVEL0
346#define timer_handler_intmask IPM_LEVEL1
347#elif SYSTEM_TIMER_IPM == IPM_LEVEL1
348#define timer_handler_intmask IPM_LEVEL2
349#endif /* SYSTEM_TIMER_IPM == IPM_LEVEL0 */
350
351
352/*
353 * 外部アドレス空間制御
354 */
355
356#define ENABLE_P8_CS (H8P8DDR_CS0|H8P8DDR_CS1|H8P8DDR_CS2|H8P8DDR_CS3)
357
358#if 0
359
360#define ENABLE_LOWER_DATA
361#define ENABLE_PB_CS (H8PADDR_CS4|H8PADDR_CS5|H8PADDR_CS6|H8PBDDR_CS7)
362
363#endif /* of #if 0 */
364
365
366/*
367 * 微少時間待
368ちのための定義
369 */
370
371#if defined(ROM)
372
373/* ROM化(外部RAM使用) */
374#define SIL_DLY_TIM1 2350
375#define SIL_DLY_TIM2 530
376
377#elif defined(INMEM_ONLY)
378
379/* ROM化(内
380蔵メモリのみ使用) */
381#define SIL_DLY_TIM1 1668
382#define SIL_DLY_TIM2 519
383
384#else /* of #if defined(ROM) */
385
386/* 簡易モニタ(ユーザープログラムは外部RAM上にダウンロード) */
387#define SIL_DLY_TIM1 3914
388#define SIL_DLY_TIM2 1110
389
390#endif /* of #if defined(ROM) */
391
392
393/*
394 * DDRの初期値の定義
395 */
396#ifdef INMEM_ONLY /* ROM化かつ外部DRAMなし */
397
398/* モードによってはDDRの初期値が異なるので、注意 */
399#define H8P1DDR0 0x00 /* ポート1 */
400#define H8P2DDR0 0x00 /* ポート2 */
401#define H8P3DDR0 0x00 /* ポート3 */
402#define H8P4DDR0 0x00 /* ポート4 */
403#define H8P5DDR0 0x00 /* ポート5 */
404#define H8P6DDR0 0x00 /* ポート6 */
405
406/* ポート7はå…
407¥åŠ›å°‚用でDDRレジスタがないため、省略している。 */
408
409#ifdef SUPPORT_ETHER
410#define H8P8DDR0 (H8P8DDR_CS1 | H8P8DDR_CS2) /* ポート8 */
411#else /* SUPPORT_ETHER */
412#define H8P8DDR0 0x00 /* ポート8 */
413#endif /* SUPPORT_ETHER */
414
415#define H8P9DDR0 0x00 /* ポート9 */
416#define H8PADDR0 0x00 /* ポートA */
417#define H8PBDDR0 0x00 /* ポートB */
418
419#else /* of #ifdef INMEM_ONLY */
420
421#define H8P1DDR0 0xff /* ポート1 */
422#define H8P2DDR0 0xff /* ポート2 */
423#define H8P3DDR0 0xff /* ポート3 */
424#define H8P4DDR0 DUMMY /* ポート4 */
425#define H8P5DDR0 H8P5DDR_A16 /* ポート5 */
426#define H8P6DDR0 DUMMY /* ポート6 */
427
428/* ポート7はå…
429¥åŠ›å°‚用でDDRレジスタがないため、省略している。 */
430
431#define H8P8DDR0 (H8P8DDR_CS1 | H8P8DDR_CS2) /* ポート8 */
432#define H8P9DDR0 DUMMY /* ポート9 */
433#define H8PADDR0 DUMMY /* ポートA */
434#define H8PBDDR0 H8PBDDR_UCAS /* ポートB */
435
436#endif /* of #ifdef INMEM_ONLY */
437
438
439#ifdef REDBOOT
440/*
441 * 割込みプライオリティの初期値の定義
442 *  Redbootの場合、IRQ5を使用する。
443 */
444#define H8IPRA_INI H8IPR_IRQ5_BIT
445
446/*
447 * Redbootが使用する割込みベクタの退避と復å…
448ƒ
449 */
450
451/* ベクタテーブルの内
452、trapa命令用に確保しているチャネル数 */
453#define TRAP_VECTOR_SIZE 4
454
455#ifndef _MACRO_ONLY
456/* 退避スペースのデータ型定義 */
457typedef struct {
458 UW trap_vector[TRAP_VECTOR_SIZE];
459 UW irq5;
460} TMP_VECTOR;
461
462/* 割込みベクタの退避 */
463extern void load_vector(TMP_VECTOR *p);
464/* 割込みベクタの復å…
465ƒ */
466extern void save_vector(TMP_VECTOR *p);
467
468#endif /* _MACRO_ONLY */
469
470#endif /* of #ifdef REDBOOT */
471
472
473#endif /* _SYS_CONFIG_H_ */
Note: See TracBrowser for help on using the repository browser.