int32_t serial_send_stream_dma (serial_t *obj, char *ptxbuf, uint32_t len) { PHAL_RUART_OP pHalRuartOp; PHAL_RUART_ADAPTER pHalRuartAdapter=(PHAL_RUART_ADAPTER)&(obj->hal_uart_adp); u8 uart_idx = pHalRuartAdapter->UartIndex; int32_t ret; pHalRuartOp = &(obj->hal_uart_op); if ((serial_dma_en[uart_idx] & SERIAL_TX_DMA_EN)==0) { PUART_DMA_CONFIG pHalRuartDmaCfg; pHalRuartDmaCfg = &obj->uart_gdma_cfg; #if 0 pHalRuartOp->HalRuartTxGdmaLoadDef (pHalRuartAdapter, pHalRuartDmaCfg); pHalRuartOp->HalRuartDmaInit (pHalRuartAdapter); InterruptRegister(&pHalRuartDmaCfg->TxGdmaIrqHandle); InterruptEn(&pHalRuartDmaCfg->TxGdmaIrqHandle); serial_dma_en[uart_idx] |= SERIAL_TX_DMA_EN; #else if (HAL_OK == HalRuartTxGdmaInit(pHalRuartOp, pHalRuartAdapter, pHalRuartDmaCfg)) { serial_dma_en[uart_idx] |= SERIAL_TX_DMA_EN; } else { return HAL_BUSY; } #endif } ret = pHalRuartOp->HalRuartDmaSend(pHalRuartAdapter, (u8*)ptxbuf, len); return (ret); }
int32_t serial_send_stream_dma (serial_t *obj, char *ptxbuf, uint32_t len) { PHAL_RUART_OP pHalRuartOp; PHAL_RUART_ADAPTER pHalRuartAdapter=(PHAL_RUART_ADAPTER)&(obj->hal_uart_adp); u8 uart_idx = pHalRuartAdapter->UartIndex; int32_t ret; pHalRuartOp = &(obj->hal_uart_op); if ((serial_dma_en[uart_idx] & SERIAL_TX_DMA_EN)==0) { PUART_DMA_CONFIG pHalRuartDmaCfg; pHalRuartDmaCfg = &obj->uart_gdma_cfg; if (HAL_OK == HalRuartTxGdmaInit(pHalRuartOp, pHalRuartAdapter, pHalRuartDmaCfg)) { serial_dma_en[uart_idx] |= SERIAL_TX_DMA_EN; } else { return HAL_BUSY; } } obj->tx_len = len; HalRuartEnterCritical(pHalRuartAdapter); ret = pHalRuartOp->HalRuartDmaSend(pHalRuartAdapter, (u8*)ptxbuf, len); HalRuartExitCritical(pHalRuartAdapter); return (ret); }
// return the byte count received before timeout, or error(<0) int32_t serial_recv_stream_timeout (serial_t *obj, char *prxbuf, uint32_t len, uint32_t timeout_ms, void *force_cs) { PHAL_RUART_OP pHalRuartOp; PHAL_RUART_ADAPTER pHalRuartAdapter=(PHAL_RUART_ADAPTER)&(obj->hal_uart_adp); uint32_t TimeoutCount=0, StartCount; int ret; void (*task_yield)(void); task_yield = NULL; pHalRuartOp = &(obj->hal_uart_op); HalRuartEnterCritical(pHalRuartAdapter); ret = pHalRuartOp->HalRuartIntRecv(pHalRuartAdapter, (u8*)prxbuf, len); HalRuartExitCritical(pHalRuartAdapter); if ((ret == HAL_OK) && (timeout_ms > 0)) { TimeoutCount = (timeout_ms*1000/TIMER_TICK_US); StartCount = HalTimerOp.HalTimerReadCount(1); task_yield = (void (*)(void))force_cs; while (pHalRuartAdapter->State & HAL_UART_STATE_BUSY_RX) { if (HAL_TIMEOUT == RuartIsTimeout(StartCount, TimeoutCount)) { ret = pHalRuartOp->HalRuartStopRecv((VOID*)pHalRuartAdapter); ret = pHalRuartOp->HalRuartResetRxFifo((VOID*)pHalRuartAdapter); pHalRuartAdapter->Status = HAL_UART_STATUS_TIMEOUT; break; } if (NULL != task_yield) { task_yield(); } } return (len - pHalRuartAdapter->RxCount); } else { return (-ret); } }
void serial_free(serial_t *obj) { PHAL_RUART_ADAPTER pHalRuartAdapter; PHAL_RUART_OP pHalRuartOp; #ifdef CONFIG_GDMA_EN u8 uart_idx; PUART_DMA_CONFIG pHalRuartDmaCfg; #endif pHalRuartAdapter = &(obj->hal_uart_adp); pHalRuartOp = &(obj->hal_uart_op); pHalRuartOp->HalRuartDeInit(pHalRuartAdapter); #ifdef CONFIG_GDMA_EN uart_idx = pHalRuartAdapter->UartIndex; pHalRuartDmaCfg = &obj->uart_gdma_cfg; if (serial_dma_en[uart_idx] & SERIAL_RX_DMA_EN) { HalRuartRxGdmaDeInit(pHalRuartDmaCfg); serial_dma_en[uart_idx] &= ~SERIAL_RX_DMA_EN; } if (serial_dma_en[uart_idx] & SERIAL_TX_DMA_EN) { HalRuartTxGdmaDeInit(pHalRuartDmaCfg); serial_dma_en[uart_idx] &= ~SERIAL_TX_DMA_EN; } #endif // TODO: recovery Pin Mux }
int32_t serial_send_stream (serial_t *obj, char *ptxbuf, uint32_t len) { PHAL_RUART_OP pHalRuartOp; PHAL_RUART_ADAPTER pHalRuartAdapter=(PHAL_RUART_ADAPTER)&(obj->hal_uart_adp); int ret; pHalRuartOp = &(obj->hal_uart_op); ret = pHalRuartOp->HalRuartIntSend(pHalRuartAdapter, (u8*)ptxbuf, len); return (ret); }
void serial_baud(serial_t *obj, int baudrate) { PHAL_RUART_ADAPTER pHalRuartAdapter; PHAL_RUART_OP pHalRuartOp; pHalRuartAdapter = &(obj->hal_uart_adp); pHalRuartOp = &(obj->hal_uart_op); pHalRuartAdapter->BaudRate = baudrate; pHalRuartOp->HalRuartInit(pHalRuartAdapter); }
void serial_clear(serial_t *obj) { PHAL_RUART_ADAPTER pHalRuartAdapter; PHAL_RUART_OP pHalRuartOp; pHalRuartAdapter = &(obj->hal_uart_adp); pHalRuartOp = &(obj->hal_uart_op); pHalRuartOp->HalRuartResetRxFifo(pHalRuartAdapter); }
int32_t serial_recv_stream (serial_t *obj, char *prxbuf, uint32_t len) { PHAL_RUART_OP pHalRuartOp; PHAL_RUART_ADAPTER pHalRuartAdapter=(PHAL_RUART_ADAPTER)&(obj->hal_uart_adp); int ret; pHalRuartOp = &(obj->hal_uart_op); obj->rx_len = len; ret = pHalRuartOp->HalRuartIntRecv(pHalRuartAdapter, (u8*)prxbuf, len); return (ret); }
// Blocked(busy wait) send, return transmitted bytes count int32_t serial_send_blocked (serial_t *obj, char *ptxbuf, uint32_t len, uint32_t timeout_ms) { PHAL_RUART_OP pHalRuartOp; PHAL_RUART_ADAPTER pHalRuartAdapter=(PHAL_RUART_ADAPTER)&(obj->hal_uart_adp); int ret; pHalRuartOp = &(obj->hal_uart_op); obj->tx_len = len; ret = pHalRuartOp->HalRuartSend(pHalRuartAdapter, (u8*)ptxbuf, len, timeout_ms); return (ret); }
void serial_clear(serial_t *obj) { PHAL_RUART_ADAPTER pHalRuartAdapter; PHAL_RUART_OP pHalRuartOp; char temp; pHalRuartAdapter = &(obj->hal_uart_adp); pHalRuartOp = &(obj->hal_uart_op); pHalRuartOp->HalRuartResetRxFifo(pHalRuartAdapter); while (HAL_OK == pHalRuartOp->HalRuartGetC(pHalRuartAdapter, &temp)); }
int32_t serial_recv_stream_abort (serial_t *obj) { PHAL_RUART_OP pHalRuartOp; PHAL_RUART_ADAPTER pHalRuartAdapter=(PHAL_RUART_ADAPTER)&(obj->hal_uart_adp); int ret; pHalRuartOp = &(obj->hal_uart_op); ret = pHalRuartOp->HalRuartStopRecv((VOID*)pHalRuartAdapter); ret = pHalRuartOp->HalRuartResetRxFifo((VOID*)pHalRuartAdapter); return (ret); }
void serial_init(serial_t *obj, PinName tx, PinName rx) { uint32_t uart_tx, uart_rx; uint32_t uart_sel; uint8_t uart_idx; PHAL_RUART_OP pHalRuartOp; PHAL_RUART_ADAPTER pHalRuartAdapter; // Determine the UART to use (UART0, UART1, or UART3) uart_tx = pinmap_peripheral(tx, PinMap_UART_TX); uart_rx = pinmap_peripheral(rx, PinMap_UART_RX); uart_sel = pinmap_merge(uart_tx, uart_rx); uart_idx = RTL_GET_PERI_IDX(uart_sel); if (unlikely(uart_idx == (uint8_t)NC)) { DBG_UART_ERR("%s: Cannot find matched UART\n", __FUNCTION__); return; } pHalRuartOp = &(obj->hal_uart_op); pHalRuartAdapter = &(obj->hal_uart_adp); if ((NULL == pHalRuartOp) || (NULL == pHalRuartAdapter)) { DBG_UART_ERR("%s: Allocate Adapter Failed\n", __FUNCTION__); return; } HalRuartOpInit((VOID*)pHalRuartOp); pHalRuartOp->HalRuartAdapterLoadDef(pHalRuartAdapter, uart_idx); pHalRuartAdapter->PinmuxSelect = RTL_GET_PERI_SEL(uart_sel); pHalRuartAdapter->BaudRate = 9600; // Configure the UART pins // TODO: // pinmap_pinout(tx, PinMap_UART_TX); // pinmap_pinout(rx, PinMap_UART_RX); // pin_mode(tx, PullUp); // pin_mode(rx, PullUp); pHalRuartOp->HalRuartInit(pHalRuartAdapter); pHalRuartOp->HalRuartRegIrq(pHalRuartAdapter); pHalRuartOp->HalRuartIntEnable(pHalRuartAdapter); #ifdef CONFIG_MBED_ENABLED // For stdio management if (uart_idx == STDIO_UART) { stdio_uart_inited = 1; memcpy(&stdio_uart, obj, sizeof(serial_t)); } #endif }
int32_t serial_recv_stream_dma_timeout (serial_t *obj, char *prxbuf, uint32_t len, uint32_t timeout_ms, void *force_cs) { PHAL_RUART_OP pHalRuartOp; PHAL_RUART_ADAPTER pHalRuartAdapter=(PHAL_RUART_ADAPTER)&(obj->hal_uart_adp); u8 uart_idx = pHalRuartAdapter->UartIndex; uint32_t TimeoutCount=0, StartCount; int ret; void (*task_yield)(void); pHalRuartOp = &(obj->hal_uart_op); if ((serial_dma_en[uart_idx] & SERIAL_RX_DMA_EN)==0) { PUART_DMA_CONFIG pHalRuartDmaCfg; pHalRuartDmaCfg = &obj->uart_gdma_cfg; if (HAL_OK == HalRuartRxGdmaInit(pHalRuartOp, pHalRuartAdapter, pHalRuartDmaCfg)) { serial_dma_en[uart_idx] |= SERIAL_RX_DMA_EN; } else { return HAL_BUSY; } } HalRuartEnterCritical(pHalRuartAdapter); ret = pHalRuartOp->HalRuartDmaRecv(pHalRuartAdapter, (u8*)prxbuf, len); HalRuartExitCritical(pHalRuartAdapter); if ((ret == HAL_OK) && (timeout_ms > 0)) { TimeoutCount = (timeout_ms*1000/TIMER_TICK_US); StartCount = HalTimerOp.HalTimerReadCount(1); task_yield = (void (*)(void))force_cs; pHalRuartAdapter->Status = HAL_UART_STATUS_OK; while (pHalRuartAdapter->State & HAL_UART_STATE_BUSY_RX) { if (HAL_TIMEOUT == RuartIsTimeout(StartCount, TimeoutCount)) { ret = pHalRuartOp->HalRuartStopRecv((VOID*)pHalRuartAdapter); ret = pHalRuartOp->HalRuartResetRxFifo((VOID*)pHalRuartAdapter); pHalRuartAdapter->Status = HAL_UART_STATUS_TIMEOUT; break; } if (NULL != task_yield) { task_yield(); } } if (pHalRuartAdapter->Status == HAL_UART_STATUS_TIMEOUT) { return (len - pHalRuartAdapter->RxCount); } else { return len; } } else { return (-ret); } // return (ret); }
// Blocked(busy wait) receive, return received bytes count int32_t serial_recv_blocked (serial_t *obj, char *prxbuf, uint32_t len, uint32_t timeout_ms) { PHAL_RUART_OP pHalRuartOp; PHAL_RUART_ADAPTER pHalRuartAdapter=(PHAL_RUART_ADAPTER)&(obj->hal_uart_adp); int ret; pHalRuartOp = &(obj->hal_uart_op); obj->rx_len = len; HalRuartEnterCritical(pHalRuartAdapter); ret = pHalRuartOp->HalRuartRecv(pHalRuartAdapter, (u8*)prxbuf, len, timeout_ms); HalRuartExitCritical(pHalRuartAdapter); return (ret); }
void serial_irq_set(serial_t *obj, SerialIrq irq, uint32_t enable) { #ifdef CONFIG_MBED_ENABLED if (obj->index == UART_3) { if (irq == RxIrq) { log_uart_irq_set(&stdio_uart_log, IIR_RX_RDY, enable); } else { log_uart_irq_set(&stdio_uart_log, IIR_THR_EMPTY, enable); } return; } #endif PHAL_RUART_ADAPTER pHalRuartAdapter; PHAL_RUART_OP pHalRuartOp; u8 uart_idx; pHalRuartAdapter = &(obj->hal_uart_adp); pHalRuartOp = &(obj->hal_uart_op); uart_idx = pHalRuartAdapter->UartIndex; if (enable) { if (irq == RxIrq) { pHalRuartAdapter->Interrupts |= RUART_IER_ERBI | RUART_IER_ELSI; serial_irq_en[uart_idx] |= SERIAL_RX_IRQ_EN; HalRuartSetIMRRtl8195a (pHalRuartAdapter); } else { serial_irq_en[uart_idx] |= SERIAL_TX_IRQ_EN; } pHalRuartOp->HalRuartRegIrq(pHalRuartAdapter); //log_uart pHalRuartOp->HalRuartIntEnable(pHalRuartAdapter); } else { // disable if (irq == RxIrq) { pHalRuartAdapter->Interrupts &= ~(RUART_IER_ERBI | RUART_IER_ELSI); serial_irq_en[uart_idx] &= ~SERIAL_RX_IRQ_EN; } else { pHalRuartAdapter->Interrupts &= ~RUART_IER_ETBEI; serial_irq_en[uart_idx] &= ~SERIAL_TX_IRQ_EN; } HalRuartSetIMRRtl8195a (pHalRuartAdapter); if (pHalRuartAdapter->Interrupts == 0) { InterruptUnRegister(&pHalRuartAdapter->IrqHandle); InterruptDis(&pHalRuartAdapter->IrqHandle); } } }
/** * Load UART HAL GDMA default setting * * Call this function to load the default setting for UART GDMA * * */ VOID HalRuartTxGdmaInit( PRUART_ADAPTER pRuartAdapter ) { PHAL_RUART_OP pHalRuartOp; PHAL_RUART_ADAPTER pHalRuartAdapter; PUART_DMA_CONFIG pUartGdmaConfig; PHAL_GDMA_ADAPTER pHalGdmaAdapter; if (NULL == pRuartAdapter) { return; } pHalRuartOp = pRuartAdapter->pHalRuartOp; pHalRuartAdapter = pRuartAdapter->pHalRuartAdapter; pUartGdmaConfig = pRuartAdapter->pHalRuartDmaCfg; if ((NULL == pHalRuartOp) || (NULL == pHalRuartAdapter) || (NULL == pUartGdmaConfig)) { return; } // Load default setting if (pHalRuartOp->HalRuartTxGdmaLoadDef != NULL) { HalGdmaOpInit((VOID*) (pUartGdmaConfig->pHalGdmaOp)); pHalRuartOp->HalRuartTxGdmaLoadDef (pHalRuartAdapter, pUartGdmaConfig); } else { // Initial your GDMA setting here } // Start to patch the default setting pHalGdmaAdapter = (PHAL_GDMA_ADAPTER)pUartGdmaConfig->pTxHalGdmaAdapter; pHalGdmaAdapter->GdmaIndex = 0; // GDMA0 pHalGdmaAdapter->ChNum = 4; // GDMA Channel pHalGdmaAdapter->ChEn = GdmaCh4; // GDMA Channel Enable // pUartGdmaConfig->TxGdmaIrqHandle.Data = pHalRuartAdapter; pUartGdmaConfig->TxGdmaIrqHandle.IrqNum = GDMA0_CHANNEL4_IRQ; // pUartGdmaConfig->TxGdmaIrqHandle.IrqFun = (IRQ_FUN)_UartTxDmaIrqHandle pUartGdmaConfig->TxGdmaIrqHandle.Priority = 0x20; pHalRuartOp->HalRuartDmaInit (pHalRuartAdapter); InterruptRegister(&pUartGdmaConfig->TxGdmaIrqHandle); InterruptEn(&pUartGdmaConfig->TxGdmaIrqHandle); }
void serial_free(serial_t *obj) { PHAL_RUART_ADAPTER pHalRuartAdapter; PHAL_RUART_OP pHalRuartOp; pHalRuartAdapter = &(obj->hal_uart_adp); pHalRuartOp = &(obj->hal_uart_op); pHalRuartOp->HalRuartDeInit(pHalRuartAdapter); // TODO: recovery Pin Mux #if 0 RtlMfree((unsigned char *)(obj->uart_adp.pHalRuartOp), sizeof(HAL_RUART_OP)); RtlMfree((unsigned char *)(obj->uart_adp.pHalRuartAdapter), sizeof(HAL_RUART_ADAPTER)); obj->uart_adp.pHalRuartOp = NULL; obj->uart_adp.pHalRuartAdapter = NULL; #endif }
int32_t serial_recv_stream_abort (serial_t *obj) { PHAL_RUART_OP pHalRuartOp; PHAL_RUART_ADAPTER pHalRuartAdapter=(PHAL_RUART_ADAPTER)&(obj->hal_uart_adp); int ret; pHalRuartOp = &(obj->hal_uart_op); HalRuartEnterCritical(pHalRuartAdapter); ret = pHalRuartOp->HalRuartStopRecv((VOID*)pHalRuartAdapter); HalRuartExitCritical(pHalRuartAdapter); if (HAL_OK != ret) { return -ret; } // pHalRuartOp->HalRuartResetRxFifo((VOID*)pHalRuartAdapter); ret = obj->rx_len - pHalRuartAdapter->RxCount; return (ret); }
/** * Load UART HAL default setting * * Call this function to load the default setting for UART HAL adapter * * */ VOID HalRuartAdapterInit( PRUART_ADAPTER pRuartAdapter, u8 UartIdx ) { PHAL_RUART_OP pHalRuartOp; PHAL_RUART_ADAPTER pHalRuartAdapter; if (NULL == pRuartAdapter) { return; } pHalRuartOp = pRuartAdapter->pHalRuartOp; pHalRuartAdapter = pRuartAdapter->pHalRuartAdapter; if ((NULL == pHalRuartOp) || (NULL == pHalRuartAdapter)) { return; } // Load default setting if (pHalRuartOp->HalRuartAdapterLoadDef != NULL) { pHalRuartOp->HalRuartAdapterLoadDef (pHalRuartAdapter, UartIdx); } else { // Initial your UART HAL adapter here } // Start to modify the defualt setting pHalRuartAdapter->PinmuxSelect = RUART0_MUX_TO_GPIOC; pHalRuartAdapter->BaudRate = 38400; // pHalRuartAdapter->IrqHandle.IrqFun = (IRQ_FUN)_UartIrqHandle; // pHalRuartAdapter->IrqHandle.Data = (void *)pHalRuartAdapter; // pHalRuartAdapter->IrqHandle.Priority = 0x20; // Register IRQ InterruptRegister(&pHalRuartAdapter->IrqHandle); }
void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) { PHAL_RUART_ADAPTER pHalRuartAdapter; PHAL_RUART_OP pHalRuartOp; pHalRuartAdapter = &(obj->hal_uart_adp); pHalRuartOp = &(obj->hal_uart_op); if (data_bits == 8) { pHalRuartAdapter->WordLen = RUART_WLS_8BITS; } else { pHalRuartAdapter->WordLen = RUART_WLS_7BITS; } switch (parity) { case ParityOdd: case ParityForced0: pHalRuartAdapter->Parity = RUART_PARITY_ENABLE; pHalRuartAdapter->ParityType = RUART_ODD_PARITY; break; case ParityEven: case ParityForced1: pHalRuartAdapter->Parity = RUART_PARITY_ENABLE; pHalRuartAdapter->ParityType = RUART_EVEN_PARITY; break; default: // ParityNone pHalRuartAdapter->Parity = RUART_PARITY_DISABLE; break; } if (stop_bits == 1) { pHalRuartAdapter->StopBit = RUART_1_STOP_BIT; } else { pHalRuartAdapter->StopBit = RUART_NO_STOP_BIT; } pHalRuartOp->HalRuartInit(pHalRuartAdapter); }
void serial_irq_set(serial_t *obj, SerialIrq irq, uint32_t enable) { PHAL_RUART_ADAPTER pHalRuartAdapter; PHAL_RUART_OP pHalRuartOp; u8 uart_idx; pHalRuartAdapter = &(obj->hal_uart_adp); pHalRuartOp = &(obj->hal_uart_op); uart_idx = pHalRuartAdapter->UartIndex; if (enable) { if (irq == RxIrq) { pHalRuartAdapter->Interrupts |= RUART_IER_ERBI | RUART_IER_ELSI; serial_irq_en[uart_idx] |= SERIAL_RX_IRQ_EN; HalRuartSetIMRRtl8195a (pHalRuartAdapter); } else { serial_irq_en[uart_idx] |= SERIAL_TX_IRQ_EN; } pHalRuartOp->HalRuartRegIrq(pHalRuartAdapter); pHalRuartOp->HalRuartIntEnable(pHalRuartAdapter); } else { // disable if (irq == RxIrq) { pHalRuartAdapter->Interrupts &= ~(RUART_IER_ERBI | RUART_IER_ELSI); serial_irq_en[uart_idx] &= ~SERIAL_RX_IRQ_EN; } else { pHalRuartAdapter->Interrupts &= RUART_IER_ETBEI; serial_irq_en[uart_idx] &= ~SERIAL_TX_IRQ_EN; } HalRuartSetIMRRtl8195a (pHalRuartAdapter); if (pHalRuartAdapter->Interrupts == 0) { InterruptUnRegister(&pHalRuartAdapter->IrqHandle); InterruptDis(&pHalRuartAdapter->IrqHandle); } } }
void serial_init(serial_t *obj, PinName tx, PinName rx) { uint32_t uart_tx, uart_rx; uint32_t uart_sel; uint8_t uart_idx; PHAL_RUART_OP pHalRuartOp; PHAL_RUART_ADAPTER pHalRuartAdapter; #ifdef CONFIG_GDMA_EN PUART_DMA_CONFIG pHalRuartDmaCfg; PHAL_GDMA_OP pHalGdmaOp=&UartGdmaOp; #endif // Determine the UART to use (UART0, UART1, or UART3) uart_tx = pinmap_peripheral(tx, PinMap_UART_TX); uart_rx = pinmap_peripheral(rx, PinMap_UART_RX); uart_sel = pinmap_merge(uart_tx, uart_rx); uart_idx = RTL_GET_PERI_IDX(uart_sel); if (unlikely(uart_idx == (uint8_t)NC)) { DBG_UART_ERR("%s: Cannot find matched UART\n", __FUNCTION__); return; } #ifdef CONFIG_MBED_ENABLED else if (uart_idx == UART_3) { obj->index = UART_3; goto init_stdio; } #endif pHalRuartOp = &(obj->hal_uart_op); pHalRuartAdapter = &(obj->hal_uart_adp); if ((NULL == pHalRuartOp) || (NULL == pHalRuartAdapter)) { DBG_UART_ERR("%s: Allocate Adapter Failed\n", __FUNCTION__); return; } HalRuartOpInit((VOID*)pHalRuartOp); #ifdef CONFIG_GDMA_EN HalGdmaOpInit((VOID*)pHalGdmaOp); pHalRuartDmaCfg = &obj->uart_gdma_cfg; pHalRuartDmaCfg->pHalGdmaOp = pHalGdmaOp; pHalRuartDmaCfg->pTxHalGdmaAdapter = &obj->uart_gdma_adp_tx; pHalRuartDmaCfg->pRxHalGdmaAdapter = &obj->uart_gdma_adp_rx; pHalRuartDmaCfg->pTxDmaBlkList = &obj->gdma_multiblk_list_tx; pHalRuartDmaCfg->pRxDmaBlkList = &obj->gdma_multiblk_list_rx; _memset((void*)(pHalRuartDmaCfg->pTxHalGdmaAdapter), 0, sizeof(HAL_GDMA_ADAPTER)); _memset((void*)(pHalRuartDmaCfg->pRxHalGdmaAdapter), 0, sizeof(HAL_GDMA_ADAPTER)); _memset((void*)(pHalRuartDmaCfg->pTxDmaBlkList), 0, sizeof(UART_DMA_MULTIBLK)); _memset((void*)(pHalRuartDmaCfg->pRxDmaBlkList), 0, sizeof(UART_DMA_MULTIBLK)); #endif pHalRuartOp->HalRuartAdapterLoadDef(pHalRuartAdapter, uart_idx); pHalRuartAdapter->PinmuxSelect = RTL_GET_PERI_SEL(uart_sel); pHalRuartAdapter->BaudRate = 9600; pHalRuartAdapter->IrqHandle.Priority = 6; if (HalRuartInit(pHalRuartAdapter) != HAL_OK) { DBG_UART_ERR("serial_init Err!\n"); return; } pHalRuartOp->HalRuartRegIrq(pHalRuartAdapter); pHalRuartOp->HalRuartIntEnable(pHalRuartAdapter); #ifdef CONFIG_MBED_ENABLED init_stdio: // For stdio management if (uart_idx == STDIO_UART) { // default setting to 38400 if (stdio_uart_inited) return; log_uart_init(&stdio_uart_log, 38400, 8, ParityNone, 1); stdio_uart_inited = 1; memcpy(&stdio_uart, obj, sizeof(serial_t)); } #endif }