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

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

initial

File size: 9.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-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, 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: microblaze.h,v 1.6 2004/02/05 09:16:25 honda Exp $
51 */
52
53#ifndef _MICROBLAZE_H_
54#define _MICROBLAZE_H_
55
56
57
58#ifndef _MACRO_ONLY
59#include <itron.h>
60#include <sil.h>
61#endif /* _MACRO_ONLY */
62
63
64/*
65 * MSRのビット
66 */
67#define MSR_CC 0x80000000
68#define MSR_DCE 0x80
69#define MSR_DZ 0x40
70#define MSR_ICE 0x20
71#define MSR_FSL 0x10
72#define MSR_BIP 0x08
73#define MSR_C 0x04
74#define MSR_IE 0x02
75#define MSR_BE 0x01
76
77
78/*
79 * INTC Registers
80 */
81#define INTC_INT_STATUS_REG 0x00
82#define INTC_INT_PENDING_REG 0x04
83#define INTC_INT_ENABLE_REG 0x08
84#define INTC_INT_ACK_REG 0x0c
85#define INTC_SET_INT_ENABLE 0x10
86#define INTC_CLEAR_INT_ENABLE 0x14
87#define INTC_INT_VECTOR_REG 0x18
88#define INTC_MASTER_ENABLE_REG 0x1c
89
90/*
91 * Masks for the INTC Registers
92 */
93#define INTC_HIE_MASK 0x2
94#define INTC_ME_MASK 0x1
95
96
97
98#define INTC_ISR (INTC_BASE + INTC_INT_STATUS_REG)
99#define INTC_IPR (INTC_BASE + INTC_INT_PENDING_REG)
100#define INTC_IER (INTC_BASE + INTC_INT_ENABLE_REG)
101#define INTC_IAR (INTC_BASE + INTC_INT_ACK_REG)
102#define INTC_SIE (INTC_BASE + INTC_SET_INT_ENABLE)
103#define INTC_CIE (INTC_BASE + INTC_CLEAR_INT_ENABLE)
104#define INTC_IVR (INTC_BASE + INTC_INT_VECTOR_REG)
105#define INTC_MER (INTC_BASE + INTC_MASTER_ENABLE_REG)
106
107#ifndef _MACRO_ONLY
108/*
109 * INTC操作関数
110 */
111Inline void
112intc_start(void){
113 sil_wrw_mem((VP)INTC_MER, INTC_HIE_MASK | INTC_ME_MASK);
114}
115
116Inline void
117intc_disable_allinterrupt(){
118 sil_wrw_mem((VP)INTC_MER, 0);
119}
120
121Inline void
122intc_enable_interrupt(UW mask)
123{
124 sil_wrw_mem((VP)INTC_SIE, mask);
125}
126
127Inline void
128intc_disable_interrupt(UW mask)
129{
130 sil_wrw_mem((VP)INTC_CIE, mask);
131}
132
133Inline void
134intc_ack_interrupt(UW mask)
135{
136 sil_wrw_mem((VP)INTC_IAR, mask);
137}
138
139#endif /* _MACRO_ONLY */
140
141
142
143/*
144 * タイマドライバ用のマクロ定義
145 */
146
147
148/*
149 * Masks for the control/status register
150 */
151#define TIMER_ENABLE_ALL 0x400
152#define TIMER_PWM 0x200
153#define TIMER_INTERRUPT 0x100
154#define TIMER_ENABLE 0x080
155#define TIMER_ENABLE_INTR 0x040
156#define TIMER_RESET 0x020
157#define TIMER_RELOAD 0x010
158#define TIMER_EXT_CAPTURE 0x008
159#define TIMER_EXT_COMPARE 0x004
160#define TIMER_DOWN_COUNT 0x002
161#define TIMER_CAPTURE_MODE 0x001
162
163#define TIMER_CONTROL_STATUS_0 0x0
164#define TIMER_COMPARE_CAPTURE_0 0x4
165#define TIMER_COUNTER_0 0x8
166#define TIMER_CONTROL_STATUS_1 0x10
167#define TIMER_COMPARE_CAPTURE_1 0x14
168#define TIMER_COUNTER_1 0x18
169
170
171#define TIMER_TCSR0 (TIMER_BASE + TIMER_CONTROL_STATUS_0)
172#define TIMER_TCCR0 (TIMER_BASE + TIMER_COMPARE_CAPTURE_0)
173#define TIMER_TCR0 (TIMER_BASE + TIMER_COUNTER_0)
174#define TIMER_TCSR1 (TIMER_BASE + TIMER_CONTROL_STATUS_1)
175#define TIMER_TCCR1 (TIMER_BASE + TIMER_COMPARE_CAPTURE_1)
176#define TIMER_TCR1 (TIMER_BASE + TIMER_COUNTER_1)
177
178
179/*
180 * UARTドライバ用のマクロ定義
181 */
182
183/*
184 * Error condition masks
185 */
186#define UARTLITE_PAR_ERROR 0x80
187#define UARTLITE_FRAME_ERROR 0x40
188#define UARTLITE_OVERRUN_ERROR 0x20
189
190
191/*
192 * Other status bit masks
193 */
194#define UARTLITE_INTR_ENABLED 0x10
195#define UARTLITE_TX_FIFO_FULL 0x08
196#define UARTLITE_TX_FIFO_EMPTY 0x04
197#define UARTLITE_RX_FIFO_FULL 0x02
198#define UARTLITE_RX_FIFO_VALID_DATA 0x01
199
200/*
201 * Control bit masks
202 */
203#define UARTLITE_ENABLE_INTR 0x10
204#define UARTLITE_RST_RX_FIFO 0x02
205#define UARTLITE_RST_TX_FIFO 0x01
206
207/*
208 * UARTLITE Registers
209 */
210#define UARTLITE_RECEIVE_REG 0x0
211#define UARTLITE_TRANSMIT_REG 0x4
212#define UARTLITE_STATUS_REG 0x8
213#define UARTLITE_CONTROL_REG 0xc
214
215
216#define UARTLITE_RXREG (UART_BASE + UARTLITE_RECEIVE_REG)
217#define UARTLITE_TXREG (UART_BASE + UARTLITE_TRANSMIT_REG)
218#define UARTLITE_SRREG (UART_BASE + UARTLITE_STATUS_REG)
219#define UARTLITE_CTREG (UART_BASE + UARTLITE_CONTROL_REG)
220
221
222
223#ifndef _MACRO_ONLY
224/*
225 * 内
226蔵UART用 簡易SIOドライバ
227 */
228
229/*
230 * シリアルI/Oポート初期化ブロック
231 */
232typedef struct sio_port_initialization_block {
233
234} SIOPINIB;
235
236/*
237 * シリアルI/Oポート管理ブロック
238 */
239typedef struct sio_port_control_block {
240 const SIOPINIB *siopinib; /* シリアルI/Oポート初期化ブロック */
241 VP_INT exinf; /* 拡張情
242å ± */
243 BOOL openflag; /* オープン済みフラグ */
244 BOOL sendflag; /* 送信割込みイネーブルフラグ */
245 BOOL getready; /* 文字を受信した状æ…
246‹ */
247 BOOL putready; /* 文字を送信できる状æ…
248‹ */
249} SIOPCB;
250
251extern SIOPCB siopcb_table[];
252
253#define uart_openflag (siopcb_table[0].openflag)
254
255Inline void
256uart_putc(unsigned char c){
257 while(sil_rew_mem((VP)UARTLITE_SRREG) & UARTLITE_TX_FIFO_FULL);
258 sil_wrw_mem((VP)UARTLITE_TXREG, c);
259}
260
261Inline unsigned char
262uart_getc(void){
263 while(!(sil_rew_mem((VP)UARTLITE_SRREG) & UARTLITE_RX_FIFO_VALID_DATA));
264 return (char)(sil_rew_mem((VP)UARTLITE_RXREG));
265}
266
267/*
268 * コールバックルーチンの識別番号
269 * OPB_UARTLITE は,送受信割込みが分かれていないため,意味はない.
270 */
271#define SIO_ERDY_SND 1u /* 送信可能コールバック */
272#define SIO_ERDY_RCV 2u /* 受信通知コールバック */
273
274
275/*
276 * SIOドライバの初期化ルーチン
277 */
278extern void uart_initialize(void);
279
280
281/*
282 * シリアルI/Oポートのオープン
283 */
284extern SIOPCB *uart_opn_por(ID siopid, VP_INT exinf);
285
286/*
287 * シリアルI/Oポートのクローズ
288 */
289extern void uart_cls_por(SIOPCB *siopcb);
290
291/*
292 * シリアルI/Oポートへの文字送信
293 */
294extern BOOL uart_snd_chr(SIOPCB *siopcb, INT chr);
295
296/*
297 * シリアルI/Oポートからの文字受信
298 */
299extern INT uart_rcv_chr(SIOPCB *siopcb);
300
301
302/*
303 * シリアルI/Oポートからのコールバックの許可
304 */
305extern void uart_ena_cbr(SIOPCB *siopcb, UINT cbrtn);
306
307
308/*
309 * シリアルI/Oポートからのコールバックの禁止
310 */
311extern void uart_dis_cbr(SIOPCB *siopcb, UINT cbrtn);
312
313
314/*
315 * SIOの割込みサービスルーチン
316 */
317extern void uart_isr(void);
318
319
320/*
321 * シリアルI/Oポートからの送信可能コールバック
322 */
323extern void uart_ierdy_snd(VP_INT exinf);
324
325
326/*
327 * シリアルI/Oポートからの受信通知コールバック
328 */
329extern void uart_ierdy_rcv(VP_INT exinf);
330
331
332
333
334#endif /* _MACRO_ONLY */
335
336#endif /* _MICROBLAZE_H_*/
337
Note: See TracBrowser for help on using the repository browser.