source: anotherchoice/tags/jsp-1.4.4-full-UTF8/config/nios2/nios2.h@ 26

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

initial

File size: 9.1 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) 2005 by Embedded and Real-Time Systems Laboratory
7 * Graduate School of Information Science, Nagoya Univ., JAPAN
8 *
9 * 上記著作権者
10は,以下の (1)〜(4) の条件か,Free Software Foundation
11 * によってå…
12¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
13 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
14 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
15å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
16 * 利用と呼ぶ)することを無償で許諾する.
17 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
18 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19 * スコード中に含まれていること.
20 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
21 * 用できる形で再é…
22å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
23å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
24 * 者
25マニュアルなど)に,上記の著作権表示,この利用条件および下記
26 * の無保証規定を掲載すること.
27 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
28 * 用できない形で再é…
29å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
30 * と.
31 * (a) 再é…
32å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
33マニュアルなど)に,上記の著
34 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
35 * (b) 再é…
36å¸ƒã®å½¢æ…
37‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
38 * 報告すること.
39 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
40 * 害からも,上記著作権者
41およびTOPPERSプロジェクトをå…
42è²¬ã™ã‚‹ã“と.
43 *
44 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
45お
46 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
47 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
48 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
49 *
50 * @(#) $Id: nios2.h,v 1.5 2005/03/11 07:37:57 honda Exp $
51 */
52
53#ifndef _NIOSII_H_
54#define _NIOSII_H_
55
56#ifndef _MACRO_ONLY
57#include <itron.h>
58#endif /* _MACRO_ONLY */
59
60/*
61 * 割込みビット
62 */
63#define STATUS_U 0x02
64#define STATUS_PIE 0x01
65
66/*
67 * 割込みの数
68 */
69#define MAX_INT_NUM 32
70
71/*
72 * 例外の個数
73 */
74#define MAX_EXC_NUM 32
75
76
77/*
78 * Timer
79 * Full-featuredサポート
80 */
81
82/*
83 * オフセット値
84 */
85#define TIM_STATUS_OFFSET 0x00
86#define TIM_CONTROL_OFFSET 0x04
87#define TIM_PERIODL_OFFSET 0x08
88#define TIM_PERIODH_OFFSET 0x0C
89#define TIM_SNAPL_OFFSET 0x10
90#define TIM_SNAPH_OFFSET 0x14
91
92#define TIM_STATUS_RUN 0x02
93#define TIM_STATUS_TO 0x01
94
95#define TIM_CONTROL_STOP 0x08
96#define TIM_CONTROL_START 0x04
97#define TIM_CONTROL_COUNT 0x02
98#define TIM_CONTROL_ITO 0x01
99
100/*
101 *
102 */
103#define TIM_STATUS (TIM_BASE + TIM_STATUS_OFFSET)
104#define TIM_CONTROL (TIM_BASE + TIM_CONTROL_OFFSET)
105#define TIM_PERIODL (TIM_BASE + TIM_PERIODL_OFFSET)
106#define TIM_PERIODH (TIM_BASE + TIM_PERIODH_OFFSET)
107#define TIM_SNAPL (TIM_BASE + TIM_SNAPL_OFFSET)
108#define TIM_SNAPH (TIM_BASE + TIM_SNAPH_OFFSET)
109
110
111/*
112 * UART
113 */
114#define UART_RXDATA_OFFSET 0x00
115#define UART_TXDATA_OFFSET 0x04
116#define UART_STATUS_OFFSET 0x08
117#define UART_CONTROL_OFFSET 0x0C
118#define UART_DIVISOR_OFFSET 0x10
119#define UART_ENDOFPACKET_OFFSET 0x1C
120
121#define UART_STATUS_EOP 0x1000
122#define UART_STATUS_CTS 0x0800
123#define UART_STATUS_DCTS 0x0400
124#define UART_STATUS_E 0x0100
125#define UART_STATUS_RRDY 0x0080
126#define UART_STATUS_TRDY 0x0040
127#define UART_STATUS_TMT 0x0020
128#define UART_STATUS_TOE 0x0010
129#define UART_STATUS_ROE 0x0008
130#define UART_STATUS_BRK 0x0004
131#define UART_STATUS_FE 0x0002
132#define UART_STATUS_PE 0x0001
133
134#define UART_CONTROL_IEOP 0x1000
135#define UART_CONTROL_RTS 0x0800
136#define UART_CONTROL_IDCTS 0x0400
137#define UART_CONTROL_TRDK 0x0200
138#define UART_CONTROL_IE 0x0100
139#define UART_CONTROL_IRRDY 0x0080
140#define UART_CONTROL_ITRD 0x0040
141#define UART_CONTROL_ITMT 0x0020
142#define UART_CONTROL_ITOE 0x0010
143#define UART_CONTROL_IROE 0x0008
144#define UART_CONTROL_IBRK 0x0004
145#define UART_CONTROL_IFE 0x0002
146#define UART_CONTROL_IPE 0x0001
147
148#define UART_RXDATA (UART_BASE + UART_RXDATA_OFFSET)
149#define UART_TXDATA (UART_BASE + UART_TXDATA_OFFSET)
150#define UART_STATUS (UART_BASE + UART_STATUS_OFFSET)
151#define UART_CONTROL (UART_BASE + UART_CONTROL_OFFSET)
152#define UART_DIVISOR (UART_BASE + UART_DIVISOR_OFFSET)
153#define UART_ENDOFPACKET (UART_BASE + UART_ENDOFPACKET_OFFSET)
154
155
156/*
157 * JTAG UART関連
158 */
159#define JTAG_UART_DATA_OFFSET 0x00
160#define JTAG_UART_CONTROL_OFFSET 0x04
161
162#define JTAG_UART_DATA_RVALID 0x8000
163
164#define JTAG_UART_CONTROL_RIE 0x01
165#define JTAG_UART_CONTROL_WIE 0x02
166#define JTAG_UART_CONTROL_RIP 0x04
167#define JTAG_UART_CONTROL_WIP 0x08
168#define JTAG_UART_CONTROL_WSAPCE 0x0ffff0000
169
170#define JTAG_UART_DATA (UART_BASE + JTAG_UART_DATA_OFFSET)
171#define JTAG_UART_CONTROL (UART_BASE + JTAG_UART_CONTROL_OFFSET)
172
173
174#ifndef _MACRO_ONLY
175
176/*
177 * 内
178蔵UART用 簡易SIOドライバ
179 */
180
181/*
182 * シリアルI/Oポート初期化ブロック
183 */
184typedef struct sio_port_initialization_block {
185
186} SIOPINIB;
187
188/*
189 * シリアルI/Oポート管理ブロック
190 */
191typedef struct sio_port_control_block {
192 const SIOPINIB *siopinib; /* シリアルI/Oポート初期化ブロック */
193 VP_INT exinf; /* 拡張情
194å ± */
195 BOOL openflag; /* オープン済みフラグ */
196 BOOL sendflag; /* 送信割込みイネーブルフラグ */
197 BOOL getready; /* 文字を受信した状æ…
198‹ */
199 BOOL putready; /* 文字を送信できる状æ…
200‹ */
201} SIOPCB;
202
203extern SIOPCB siopcb_table[];
204
205#define uart_openflag (siopcb_table[0].openflag)
206
207Inline void
208uart_putc(unsigned char c){
209#ifndef USE_JTAG_UART
210 while(!(sil_rew_mem((VP)UART_STATUS) & UART_STATUS_TRDY));
211 sil_wrw_mem((VP)UART_TXDATA, c);
212#else
213 while(!((sil_rew_mem((VP)JTAG_UART_CONTROL) & JTAG_UART_CONTROL_WSAPCE) > 0));
214 sil_wrw_mem((VP)JTAG_UART_DATA, c);
215#endif /* USE_JTAG_UART */
216}
217
218Inline unsigned char
219uart_getc(void){
220#ifndef USE_JTAG_UART
221 while(!(sil_rew_mem((VP)UART_STATUS) & UART_STATUS_RRDY));
222 return (char)(sil_rew_mem((VP)UART_RXDATA));
223#else
224 int tmp;
225 do{
226 tmp = sil_rew_mem((VP)JTAG_UART_DATA);
227 }while((tmp &JTAG_UART_DATA_RVALID) == 0);
228
229 return (char)tmp;
230#endif /* USE_JTAG_UART */
231}
232
233/*
234 * コールバックルーチンの識別番号
235 * OPB_UARTLITE は,送受信割込みが分かれていないため,意味はない.
236 */
237#define SIO_ERDY_SND 1u /* 送信可能コールバック */
238#define SIO_ERDY_RCV 2u /* 受信通知コールバック */
239
240
241/*
242 * SIOドライバの初期化ルーチン
243 */
244extern void uart_initialize(void);
245
246
247/*
248 * シリアルI/Oポートのオープン
249 */
250extern SIOPCB *uart_opn_por(ID siopid, VP_INT exinf);
251
252/*
253 * シリアルI/Oポートのクローズ
254 */
255extern void uart_cls_por(SIOPCB *siopcb);
256
257/*
258 * シリアルI/Oポートへの文字送信
259 */
260extern BOOL uart_snd_chr(SIOPCB *siopcb, INT chr);
261
262/*
263 * シリアルI/Oポートからの文字受信
264 */
265extern INT uart_rcv_chr(SIOPCB *siopcb);
266
267
268/*
269 * シリアルI/Oポートからのコールバックの許可
270 */
271extern void uart_ena_cbr(SIOPCB *siopcb, UINT cbrtn);
272
273
274/*
275 * シリアルI/Oポートからのコールバックの禁止
276 */
277extern void uart_dis_cbr(SIOPCB *siopcb, UINT cbrtn);
278
279
280/*
281 * SIOの割込みサービスルーチン
282 */
283extern void uart_isr(void);
284
285
286/*
287 * シリアルI/Oポートからの送信可能コールバック
288 */
289extern void uart_ierdy_snd(VP_INT exinf);
290
291
292/*
293 * シリアルI/Oポートからの受信通知コールバック
294 */
295extern void uart_ierdy_rcv(VP_INT exinf);
296
297#endif /* _MACRO_ONLY */
298
299#endif /* _NIOSII_H_ */
300
Note: See TracBrowser for help on using the repository browser.