Skip to content

[Bug] [HPM] [uart_v2] 驱动判断 TX 中断时混用了“中断 ID”和“中断使能掩码” #11687

Description

@kaidegit

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 是佬在负责这块吗

Metadata

Metadata

Assignees

No one assigned

    Labels

    Arch: RISC-VBSP related with risc-vBSPBSP: HPMicroBSP related with HPMicrobugThis PR/issue is a bug in the current code.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions