📄 hal_diag.h
字号:
#define HAL_DIAG_INIT() \
{ \
cyg_uint32 _ver_; \
cyg_uint32 _baud_; \
\
_ver_ = HAL_CT216_SUBVERSION & *HAL_CT216_SYS_CONF; \
\
switch(_ver_) { \
case CYGHWR_HAL_SPARC_CPU_CT216X: \
_baud_=(CYGHWR_HAL_SPARC_CPU_FREQ*1000000) / 2 / (16*CYGNUM_HAL_CONSOLE_CHANNEL_BAUD); \
*HAL_CT216X_GPIO_C_MUX = 0x01; \
\
*HAL_CT216X_UART_0_FCR &= ~HAL_CT216X_UART_FIFO_EN; \
*HAL_CT216X_UART_0_LCR |= HAL_CT216X_UART_DLAB|HAL_CT216X_UART_DLS_8; \
*HAL_CT216X_UART_0_DLL = (_baud_&0xff); \
*HAL_CT216X_UART_0_DLH = (_baud_>>8); \
*HAL_CT216X_UART_0_LCR &= ~HAL_CT216X_UART_DLAB; \
break; \
case CYGHWR_HAL_SPARC_CPU_CT909: \
case CYGHWR_HAL_SPARC_CPU_CT909S: \
case CYGHWR_HAL_SPARC_CPU_CT909P: \
case CYGHWR_HAL_SPARC_CPU_CT909G: \
_baud_=((CYGHWR_HAL_SPARC_CPU_FREQ*1000000) / (16*CYGNUM_HAL_CONSOLE_CHANNEL_BAUD)) - 1; \
*HAL_LEON_UART_RLD = _baud_; \
*HAL_LEON_UART_CTRL = 0; \
*HAL_LEON_UART_CTRL |= HAL_LEON_UART_RXEN|HAL_LEON_UART_TXEN; \
break; \
default: \
break; \
} \
}
#define HAL_DIAG_WRITE_CHAR(_c_) \
{ \
cyg_uint32 _ver_; \
\
_ver_ = HAL_CT216_SUBVERSION & *HAL_CT216_SYS_CONF; \
switch(_ver_) { \
case CYGHWR_HAL_SPARC_CPU_CT216X: \
if( 1 || _c_ != '\r' ) \
{ \
while( (HAL_CT216X_UART_BUSY & *HAL_CT216X_UART_0_USR) == HAL_CT216X_UART_BUSY ) \
continue; \
while( (HAL_CT216X_UART_THRE & *HAL_CT216X_UART_0_LSR) != HAL_CT216X_UART_THRE ) \
continue; \
*HAL_CT216X_UART_0_THR = HAL_CT216_UART_IO(_c_); \
} \
break; \
case CYGHWR_HAL_SPARC_CPU_CT909: \
case CYGHWR_HAL_SPARC_CPU_CT909S: \
case CYGHWR_HAL_SPARC_CPU_CT909P: \
case CYGHWR_HAL_SPARC_CPU_CT909G: \
if( 1 || _c_ != '\r' ) \
{ \
while( (HAL_LEON_UART_TXAMASK & *HAL_LEON_UART_STATUS) == 0 ) \
continue; \
*HAL_LEON_UART_A_TX = HAL_CT216_UART_IO(_c_); \
} \
break; \
default: \
break; \
} \
}
#define HAL_DIAG_READ_CHAR(_c_) \
{ \
cyg_uint32 _ver_; \
\
_ver_ = HAL_CT216_SUBVERSION & *HAL_CT216_SYS_CONF; \
switch(_ver_) { \
case CYGHWR_HAL_SPARC_CPU_CT216X: \
while( (HAL_CT216X_UART_DR & *HAL_CT216X_UART_0_LSR) != HAL_CT216X_UART_DR ) \
continue; \
_c_ = (char)*HAL_CT216X_UART_0_RBR; \
break; \
case CYGHWR_HAL_SPARC_CPU_CT909: \
case CYGHWR_HAL_SPARC_CPU_CT909S: \
case CYGHWR_HAL_SPARC_CPU_CT909P: \
case CYGHWR_HAL_SPARC_CPU_CT909G: \
while( (HAL_LEON_UART_RXAMASK & *HAL_LEON_UART_STATUS) == 0 ) \
continue; \
_c_ = (char)*HAL_LEON_UART_A_RX; \
break; \
default: \
break; \
} \
}
#define XHAL_DIAG_WRITE_CHAR(_c_) \
{ \
cyg_uint32 _ver_; \
\
_ver_ = HAL_CT216_SUBVERSION & *HAL_CT216_SYS_CONF; \
switch(_ver_) { \
case CYGHWR_HAL_SPARC_CPU_CT216X: \
if( _c_ != '\r' ) \
{ \
*HAL_CT216X_UART_0_THR = HAL_CT216_UART_IO(_c_); \
} \
break; \
case CYGHWR_HAL_SPARC_CPU_CT909: \
case CYGHWR_HAL_SPARC_CPU_CT909S: \
case CYGHWR_HAL_SPARC_CPU_CT909P: \
case CYGHWR_HAL_SPARC_CPU_CT909G: \
if( _c_ != '\r' ) \
{ \
*HAL_LEON_UART_A_TX = HAL_CT216_UART_IO(_c_); \
} \
break; \
default: \
break; \
} \
}
#define XHAL_DIAG_READ_CHAR(_c_) \
{ \
cyg_uint32 _ver_; \
\
_ver_ = HAL_CT216_SUBVERSION & *HAL_CT216_SYS_CONF; \
switch(_ver_) { \
case CYGHWR_HAL_SPARC_CPU_CT216X: \
_c_ = (char)*HAL_CT216X_UART_0_RBR; \
break; \
case CYGHWR_HAL_SPARC_CPU_CT909: \
case CYGHWR_HAL_SPARC_CPU_CT909S: \
case CYGHWR_HAL_SPARC_CPU_CT909P: \
case CYGHWR_HAL_SPARC_CPU_CT909G: \
_c_ = (char)*HAL_LEON_UART_A_RX; \
break; \
default: \
break; \
} \
}
#else
/*---------------------------------------------------------------------------*/
/* There is no diagnostic output on LEON processor */
#define HAL_DIAG_INIT()
#define HAL_DIAG_WRITE_CHAR(_c_)
#define HAL_DIAG_READ_CHAR(_c_) (_c_) = 0
#endif
/*---------------------------------------------------------------------------*/
/* end of hal_diag.h */
#endif /* CYGONCE_HAL_HAL_DIAG_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -