asm/uart.h#

asm/uart.h文件中定义了AXI UART 16550相关的常量

Author

Shihong Wang (jack4shihong@gamil.com)

Version

0.1

Date

2023-04-09

Copyright

Copyright Shihong Wang (c) 2023 with GNU Public License V3.0

Note

关于AXI UART 16550相关常量, 参考AXI UART 16550编程手册(Programming Table): http://byterunner.com/16550.html

Warning

asm/uart.h仅提供AXI UART 16550相关常量的定义, UART相关功能定义在uart.h

Defines

UART16550_CLOCK#

AXI UART 16550芯片的时钟频率, 设置波特率时将根据时钟频率计算除数

UART_MMIO_SIZE#

CLINT中断控制器的寄存器MMIO后的占用内存字节数

Note

该值参考SiFive FU740手册P80Memory Map

UART_BASE_ADDR#

UART设备在内存中映射的起始单元

UART_END_ADDR#

UART设备在内存中映射的起始单元

_UART_REG(offset)#

根据UART寄存器的偏移量计算在内存中的地址

UART_DAT#

UART的数据寄存器(Data Register), 在发送模式和接受模式下有不同的作用

UART_THR#

UART的发送数据寄存器(Transmit Holding Register), UART设备处于发送模式时候存储要发送的数据

UART_RHR#

UART的接受数据寄存器(Receiving Holding Register), UART设备处于接收模式时候存储要接受的数据

UART_IER#

UART的中断使能寄存器(Interrupt Enable Register)

Note

16550支持四种中断, 优先级从高到低依次为:

  • 接受出错中断

  • 接受缓冲区满中断

  • 发送缓冲区空中断

  • Modem状态变化中断 四种中断源的使能状态由IER寄存器中的控制

UART_ISR#

UART的中断状态寄存器(Interrupt Status Register)

Note

16550的四种中断源共用一条中断请求线INTRCPU申请中断, 因此在CPU响应中断之后, 需要判断是那一个中断. 因此16550使用ISR寄存器表明有无中断和当前最高级别的中断

UART_FCR#

UART的FIFO控制寄存器(FIFO Control Register)

Note

UART设备每次通信发送/接受1bit数据, 因此16550内部设置了缓冲区, 将发送/接受的数据保存在缓冲区中, 缓冲区空/满之后再向CPU发送中断. 16550的缓冲区最大为16字节, 可以通过设置FCR设置使用的缓冲区的大小

UART_LCR#

UART的线路控制寄存器(Line Control Register)

UART_MCR#

UARTModen控制寄存器(Modem Control Register)

UART_LSR#

UART的线路状态寄存器(Line Status Register)

UART_MSR#

UARTModen状态寄存器(Modem Status Register)

UART_DL_LSB#

UART的除数寄存器低八位(Least Significant Bits, LSB of Divisor Latch), 用于进行预分频, 即设置波特率

UART_DL_MSB#

UART的除数寄存器高八位(Most Significant Bits, MSB of Divisor Latch), 用于进行预分频, 即设置波特率

UART_LSR_ERR#

传输出错, FIFO Error

UART_LSR_TSE#

传输缓冲区(FIFO)和移位寄存器为空, Transmit Empty

UART_LSR_THE#

传输缓冲区(FIFO)为空, Transmit Holding Empty

UART_LSR_BKI#

传输被打断, Break Interrupt

UART_LSR_FME#

接受帧出错, 没有接收到停止位的帧, Framing Error

UART_LSR_PRE#

奇偶校验出错, Parity Error

UART_LSR_ORE#

数据溢出, Overrun Error

UART_LSR_RDR#

FIFO有数据, Receive Data Ready