小弟同时开两个线程,一个线程每10ms接收200个字节(4ms接受完,再休眠10ms),另外一个线程存储数据到SATA。此时串口在不停地丢数,串口波特率为115200或者614400.但是只运行串口程序,不存储就不丢。请问各位大神有什么思路可以解决呢?
/*static inline void mx6q_sabresd_init_uart(void){
imx6q_add_imx_uart(0, NULL);
imx6q_add_imx_uart(1, NULL);
imx6q_add_imx_uart(2, &uart2_data);
imx6q_add_imx_uart(3, NULL);
imx6q_add_imx_uart(4, NULL);
}*/
/*add by chengsi*/
static const struct imxuart_platform_data mx6_sd_uart2_data __initconst = {
.flags = IMXUART_HAVE_RTSCTS | IMXUART_SDMA,
.dma_req_rx = MX6Q_DMA_REQ_UART2_RX,
.dma_req_tx = MX6Q_DMA_REQ_UART2_TX,
};
static inline void mx6q_sabresd_init_uart(void){
imx6q_add_imx_uart(0, NULL);
imx6q_add_imx_uart(1, NULL);
imx6q_add_imx_uart(2, &uart2_data);
}
以上注释部分是原来的,下面是我改的,请问这个DMA方式为什么也不管用呢? |