nios2.c

#include <s_services.h>
#include <nios2.h>

nios2.cのインクルード依存関係図

ソースコードを見る。

マクロ定義

#define INDEX_SIOP(siopid)   ((UINT)((siopid) - 1))
#define get_siopcb(siopid)   (&(siopcb_table[INDEX_SIOP(siopid)]))

関数

Inline BOOL uart_getready (SIOPCB *siopcb)
Inline BOOL uart_putready (SIOPCB *siopcb)
Inline UB uart_getchar (SIOPCB *siopcb)
Inline void uart_putchar (SIOPCB *siopcb, UB c)
Inline void uart_enable_send (SIOPCB *siopcb)
Inline void uart_disable_send (SIOPCB *siopcb)
Inline void uart_enable_rcv (SIOPCB *siopcb)
Inline void uart_disable_rcv (SIOPCB *siopcb)
void uart_initialize ()
SIOPCBuart_opn_por (ID siopid, VP_INT exinf)
void uart_cls_por (SIOPCB *siopcb)
BOOL uart_snd_chr (SIOPCB *siopcb, INT chr)
INT uart_rcv_chr (SIOPCB *siopcb)
void uart_ena_cbr (SIOPCB *siopcb, UINT cbrtn)
void uart_dis_cbr (SIOPCB *siopcb, UINT cbrtn)
static void uart_isr_siop (SIOPCB *siopcb)
void uart_isr ()

変数

const SIOPINIB siopinib_table [TNUM_SIOP] = {{}}
SIOPCB siopcb_table [TNUM_SIOP]


マクロ定義

#define get_siopcb siopid   )     (&(siopcb_table[INDEX_SIOP(siopid)]))
 

nios2.c64 行で定義されています。

参照元 uart_opn_por().

#define INDEX_SIOP siopid   )     ((UINT)((siopid) - 1))
 

nios2.c63 行で定義されています。


関数

void uart_cls_por SIOPCB siopcb  ) 
 

nios2.c246 行で定義されています。

参照先 FALSEJTAG_UART_CONTROLsio_port_control_block::openflagsio_port_control_block::sendflagsil_wrw_mem()UART_CONTROL.

参照元 sio_cls_por().

00246                             {
00247 #ifndef USE_JTAG_UART
00248     /* 割込み禁止 */
00249     sil_wrw_mem((VP)UART_CONTROL, 0x00);
00250 #else
00251     sil_wrw_mem((VP)JTAG_UART_CONTROL,0x00);
00252 #endif /* USE_JTAG_UART */
00253     siopcb->openflag = FALSE;
00254     siopcb->sendflag = FALSE;
00255 }

関数の呼び出しグラフ:

void uart_dis_cbr SIOPCB siopcb,
UINT  cbrtn
 

nios2.c314 行で定義されています。

参照先 SIO_ERDY_RCVSIO_ERDY_SNDuart_disable_rcv()uart_disable_send().

00315 {
00316     switch (cbrtn) {
00317       case SIO_ERDY_SND:
00318         uart_disable_send(siopcb);
00319         break;
00320       case SIO_ERDY_RCV:
00321         uart_disable_rcv(siopcb);
00322         break;
00323     }
00324 }

関数の呼び出しグラフ:

Inline void uart_disable_rcv SIOPCB siopcb  ) 
 

nios2.c186 行で定義されています。

参照先 JTAG_UART_CONTROLJTAG_UART_CONTROL_RIEsil_rew_mem()sil_wrw_mem()UART_CONTROLUART_STATUS_RRDY.

参照元 uart_dis_cbr().

00187 {
00188 #ifndef USE_JTAG_UART
00189     sil_wrw_mem((VP)UART_CONTROL,
00190                 sil_rew_mem((VP)UART_CONTROL)&~UART_STATUS_RRDY);
00191 #else
00192     sil_wrw_mem((VP)JTAG_UART_CONTROL,
00193                 sil_rew_mem((VP)JTAG_UART_CONTROL)&~JTAG_UART_CONTROL_RIE);
00194 #endif /* USE_JTAG_UART */
00195 }

関数の呼び出しグラフ:

Inline void uart_disable_send SIOPCB siopcb  ) 
 

nios2.c153 行で定義されています。

参照先 JTAG_UART_CONTROLJTAG_UART_CONTROL_WIEsil_rew_mem()sil_wrw_mem()UART_CONTROLUART_CONTROL_ITRD.

参照元 uart_dis_cbr().

00154 {
00155 #ifndef USE_JTAG_UART
00156     sil_wrw_mem((VP)UART_CONTROL,
00157                 sil_rew_mem((VP)UART_CONTROL)&~UART_CONTROL_ITRD);
00158 #else
00159     sil_wrw_mem((VP)JTAG_UART_CONTROL,
00160                 sil_rew_mem((VP)JTAG_UART_CONTROL)&~JTAG_UART_CONTROL_WIE);
00161 #endif /* USE_JTAG_UART */
00162 }

関数の呼び出しグラフ:

void uart_ena_cbr SIOPCB siopcb,
UINT  cbrtn
 

nios2.c297 行で定義されています。

参照先 SIO_ERDY_RCVSIO_ERDY_SNDuart_enable_rcv()uart_enable_send().

00298 {
00299     switch (cbrtn) {
00300       case SIO_ERDY_SND:
00301         uart_enable_send(siopcb);
00302         break;
00303       case SIO_ERDY_RCV:
00304         uart_enable_rcv(siopcb);
00305         break;
00306     }
00307 
00308 }

関数の呼び出しグラフ:

Inline void uart_enable_rcv SIOPCB siopcb  ) 
 

nios2.c171 行で定義されています。

参照先 JTAG_UART_CONTROLJTAG_UART_CONTROL_RIEsil_rew_mem()sil_wrw_mem()UART_CONTROLUART_STATUS_RRDY.

参照元 uart_ena_cbr().

00172 {
00173 #ifndef USE_JTAG_UART
00174     sil_wrw_mem((VP)UART_CONTROL,
00175                 sil_rew_mem((VP)UART_CONTROL)|UART_STATUS_RRDY);
00176 #else
00177     sil_wrw_mem((VP)JTAG_UART_CONTROL,
00178                 sil_rew_mem((VP)JTAG_UART_CONTROL)|JTAG_UART_CONTROL_RIE);
00179 #endif /* USE_JTAG_UART */
00180 }

関数の呼び出しグラフ:

Inline void uart_enable_send SIOPCB siopcb  ) 
 

nios2.c138 行で定義されています。

参照先 JTAG_UART_CONTROLJTAG_UART_CONTROL_WIEsil_rew_mem()sil_wrw_mem()UART_CONTROLUART_CONTROL_ITRD.

参照元 uart_ena_cbr().

00139 {
00140 #ifndef USE_JTAG_UART
00141     sil_wrw_mem((VP)UART_CONTROL,
00142                 sil_rew_mem((VP)UART_CONTROL)|UART_CONTROL_ITRD);
00143 #else
00144     sil_wrw_mem((VP)JTAG_UART_CONTROL,
00145                 sil_rew_mem((VP)JTAG_UART_CONTROL)|JTAG_UART_CONTROL_WIE);
00146 #endif /* USE_JTAG_UART */
00147 }

関数の呼び出しグラフ:

Inline UB uart_getchar SIOPCB siopcb  ) 
 

nios2.c109 行で定義されています。

参照先 JTAG_UART_DATAsil_rew_mem()UART_RXDATA.

参照元 uart_rcv_chr().

00110 {
00111 #ifndef USE_JTAG_UART
00112     return((UB)(sil_rew_mem((VP)UART_RXDATA)));
00113 #else
00114     return((UB)(sil_rew_mem((VP)JTAG_UART_DATA)));
00115 #endif /* USE_JTAG_UART */
00116 }

関数の呼び出しグラフ:

Inline BOOL uart_getready SIOPCB siopcb  ) 
 

nios2.c79 行で定義されています。

参照先 JTAG_UART_DATAJTAG_UART_DATA_RVALIDsil_rew_mem()UART_STATUSUART_STATUS_RRDY.

参照元 uart_isr_siop()uart_rcv_chr().

00080 {
00081 #ifndef USE_JTAG_UART
00082     return((sil_rew_mem((VP)UART_STATUS) &
00083             UART_STATUS_RRDY) != 0);
00084 #else
00085     UW tmp = sil_rew_mem((VP)JTAG_UART_DATA);
00086     jtag_uart_buf = (UB)tmp;    
00087     return ((tmp & JTAG_UART_DATA_RVALID) != 0);
00088 #endif /* USE_JTAG_UART */
00089 }

関数の呼び出しグラフ:

void uart_initialize void   ) 
 

nios2.c202 行で定義されています。

参照先 FALSEsio_port_control_block::openflagsio_port_control_block::sendflagsiopcb_tablesio_port_control_block::siopinibsiopinib_tableTNUM_SIOP.

00203 {
00204     SIOPCB  *siopcb;
00205     UINT    i;
00206 
00207     /*
00208      *  シリアルI/Oポート管理ブロックの初期化
00209      */
00210     for (siopcb = siopcb_table, i = 0; i < TNUM_SIOP; siopcb++, i++) {
00211         siopcb->siopinib = &(siopinib_table[i]);
00212         siopcb->openflag = FALSE;
00213         siopcb->sendflag = FALSE;
00214     }
00215 }

void uart_isr void   ) 
 

nios2.c351 行で定義されています。

参照先 siopcb_tableuart_isr_siop().

00352 {
00353     if (siopcb_table[0].openflag) {
00354         uart_isr_siop(&(siopcb_table[0]));
00355     }
00356 }

関数の呼び出しグラフ:

static void uart_isr_siop SIOPCB siopcb  )  [static]
 

nios2.c330 行で定義されています。

参照先 sio_port_control_block::exinfuart_getready()uart_ierdy_rcv()uart_ierdy_snd()uart_putready().

参照元 uart_isr().

00331 {
00332     if (uart_getready(siopcb)) {
00333         /*
00334          *  受信通知コールバックルーチンを呼び出す.
00335          */
00336         uart_ierdy_rcv(siopcb->exinf);
00337     }
00338 
00339     if (uart_putready(siopcb)) {
00340         /*
00341          *  送信可能コールバックルーチンを呼び出す.
00342          */
00343         uart_ierdy_snd(siopcb->exinf);
00344     }
00345 }

関数の呼び出しグラフ:

SIOPCB* uart_opn_por ID  siopid,
VP_INT  exinf
 

nios2.c218 行で定義されています。

参照先 sio_port_control_block::exinfFALSEget_siopcbsio_port_control_block::getreadyJTAG_UART_CONTROLJTAG_UART_CONTROL_RIEsio_port_control_block::openflagsio_port_control_block::putreadysil_wrw_mem()sio_port_control_block::siopinibTRUEUART_CONTROLUART_STATUSUART_STATUS_RRDY.

参照元 sio_opn_por().

00218                                      {
00219 
00220     SIOPCB  *siopcb;
00221     const SIOPINIB  *siopinib;
00222 
00223     siopcb = get_siopcb(siopid);
00224     siopinib = siopcb->siopinib;
00225 
00226 #ifndef USE_JTAG_UART
00227 //  sil_wrw_mem(UART_DIVISOR, UART_DIVISOR_VAL);
00228     sil_wrw_mem((VP)UART_STATUS, 0x00);
00229     
00230     /*
00231      *  受信割り込み許可
00232      */
00233     sil_wrw_mem((VP)UART_CONTROL, UART_STATUS_RRDY);
00234 #else
00235     sil_wrw_mem((VP)JTAG_UART_CONTROL,JTAG_UART_CONTROL_RIE);
00236 #endif /* USE_JTAG_UART */
00237     
00238     siopcb->exinf = exinf;
00239     siopcb->getready = siopcb->putready = FALSE;
00240     siopcb->openflag = TRUE;
00241 
00242     return(siopcb);
00243 }

関数の呼び出しグラフ:

Inline void uart_putchar SIOPCB siopcb,
UB  c
 

nios2.c122 行で定義されています。

参照先 JTAG_UART_DATAsil_wrw_mem()UART_TXDATA.

参照元 uart_snd_chr().

00123 {
00124 #ifndef USE_JTAG_UART
00125     sil_wrw_mem((VP)UART_TXDATA, c);
00126 #else
00127     sil_wrw_mem((VP)JTAG_UART_DATA,c);
00128 #endif /* USE_JTAG_UART */
00129 }

関数の呼び出しグラフ:

Inline BOOL uart_putready SIOPCB siopcb  ) 
 

nios2.c95 行で定義されています。

参照先 JTAG_UART_CONTROLJTAG_UART_CONTROL_WSAPCEsil_rew_mem()UART_STATUSUART_STATUS_TRDY.

参照元 uart_isr_siop()uart_snd_chr().

00096 {
00097 #ifndef USE_JTAG_UART
00098     return((sil_rew_mem((VP)UART_STATUS) & UART_STATUS_TRDY) != 0);
00099 #else
00100     return((sil_rew_mem(
00101         (VP)JTAG_UART_CONTROL) & JTAG_UART_CONTROL_WSAPCE) > 0);
00102 #endif /* USE_JTAG_UART */
00103 }

関数の呼び出しグラフ:

INT uart_rcv_chr SIOPCB siopcb  ) 
 

nios2.c274 行で定義されています。

参照先 uart_getchar()uart_getready().

00275 {
00276 #ifndef USE_JTAG_UART
00277     if (uart_getready(siopcb)) {
00278         return((INT)(UB) uart_getchar(siopcb));
00279     }
00280     return(-1);
00281 #else
00282      UB tmp;
00283     
00284     if (jtag_uart_buf != -1) {
00285         tmp = jtag_uart_buf;
00286         jtag_uart_buf = -1;
00287         return tmp;
00288     }
00289     return(-1);
00290 #endif /* USE_JTAG_UART */
00291 }

関数の呼び出しグラフ:

BOOL uart_snd_chr SIOPCB siopcb,
INT  chr
 

nios2.c261 行で定義されています。

参照先 FALSETRUEuart_putchar()uart_putready().

00262 {
00263     if(uart_putready(siopcb)){
00264         uart_putchar(siopcb, (UB) chr);
00265         return(TRUE);
00266     }
00267     return(FALSE);
00268 }

関数の呼び出しグラフ:


変数

SIOPCB siopcb_table[TNUM_SIOP]
 

nios2.c58 行で定義されています。

参照元 uart_initialize()uart_isr().

const SIOPINIB siopinib_table[TNUM_SIOP] = {{}}
 

nios2.c53 行で定義されています。

参照元 uart_initialize().


Copyright © 2006 by TAKAGI Nobuhisa.
このページは Mon Apr 3 23:49:17 2006 に Doxygen によって生成されました。