### RT-Thread Version master ### Affected area Board Support Package (BSP) ### Hardware/BSP vendor HPMicro ### Architecture RISC-V ### Board and hardware details hpm6364 ### Develop Toolchain GCC ### Describe the bug 错误代码位于 libraries/drivers/drv_uart_v2.c:763: if ((irq_id & uart_intr_tx_slot_avail) && (stat & uart_stat_tx_slot_avail)) { irq_id 应与 uart_intr_id_tx_slot_avail 比较: if ((irq_id == uart_intr_id_tx_slot_avail) && (stat & uart_stat_tx_slot_avail)) { 当前 UART6 配置为 TX_BUFSIZE=0,RT-Thread 会采用轮询发送,不创建 serial_tx。当 UART 接收线出现状态中断时: - uart_intr_id_rx_line_stat = 0x6 - uart_intr_tx_slot_avail 掩码值包含 0x2 - 0x6 & 0x2 != 0 于是 RX line status 被误判为 TX 中断,随后在 libraries/drivers/drv_uart_v2.c:767 对空的 serial_tx 触发断言。 ### Other additional context @helloeagleyang 是佬在负责这块吗
Activity
github-actions commentedon Aug 5, 2026
如需认领并处理此 Issue,请评论
/claim。To claim and work on this issue, comment
/claim.kaidegit commentedon Aug 7, 2026
串口的dma似乎也有问题
rtconfig.h:RT_SERIAL_USING_DMA+RT_SERIAL_BUF_STRATEGY_OVERWRITE+BSP_UART6_RX_USING_DMA,BSP_UART6_RX_BUFSIZE=256。drv_uart_v2.c:1328-1339):config = RT_SERIAL_CONFIG_DEFAULT(rx_bufsz=64,dma_ping_bufsz = RT_SERIAL_RX_MINBUFSZ/2 = 32,见dev_serial_v2.h:245-259),rx_bufsz被覆盖为 256,dma_ping_bufsz保持 32。hpm_soc_ip_feature.h没有HPM_IP_FEATURE_UART_RX_IDLE_DETECT(只有 5E00/5300/6200 有)。因此驱动uart_rx_done/hpm_uart_dma_config/hpm_uart_receive_dma_next全部走 else 分支(老式 DMA):rx_fifo->rb.buffer_ptr,长度 =config.rx_bufsz(256);RT_SERIAL_EVENT_RX_DMADONE | (rx_bufsz << 8),即内核收到的rx_length = 256。rt_hw_serial_isr的RX_DMADONE处理(dev_serial_v2.c:2055-2100)假定:DMA 写的是rx_fifo->dma_ping_rb(32B),事件携带的是实际接收字节数(≤ dma_ping_bufsz)。于是:rt_serial_update_write_index(&dma_ping_rb, 256)→ 256 > 32 → 打印The serial buffer (len 32) is overflow.(打印的就是rb->buffer_size=32,与日志 len 32 完全吻合);dma_ping_rb取出 32B 垃圾rt_ringbuffer_put_force进rx_fifo->rb→ 应用读到垃圾 → lwgps 校验失败。helloeagleyang commentedon Aug 9, 2026
这个问题会在后续修复
dongly commentedon Oct 23, 2026
#11871
修复了?
@helloeagleyang
kaidegit commentedon Oct 26, 2026
似乎tx中断误判修了,串口idle没修。
helloeagleyang commentedon Oct 26, 2026
后续会专门针对的修一版