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 是佬在负责这块吗
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 接收线出现状态中断时:
于是 RX line status 被误判为 TX 中断,随后在 libraries/drivers/drv_uart_v2.c:767 对空的 serial_tx 触发断言。
Other additional context
@helloeagleyang 是佬在负责这块吗