平臺 :MT8227LGO
現象: 系統運行測試案例 通過串口1 讀取子設備端不斷髮來的數據,發現程序運行的時候在read 函數阻塞了2分鐘
左右纔開始正常讀取數據
分析 :1.串口驅動是使用 tty的模式註冊的 所以函數的調用 tty_read -> n_tty_read-> copy_from_read_buf,數據是通過read_buf
這個buf 傳輸的
2. read_buf 的數據 通過中斷函數mtk_uart_rx_handler 獲取的,通過測試發現兩分鐘內無法讀取數據是由於mtk_uart_irq 中斷沒被觸發也就沒調用mtk_uart_rx_handler 導致阻塞的
進一步排查 中斷爲什麼在兩分鐘內沒被觸發
串口1 的接受模式爲 UART_RX_VFIFO_DMA ,此模式設置導致了此問題,改爲 UART_NON_DMA 即可