更好的 UART 驱动程序

事实上,PL011 具有 很多额外的寄存器,但通过添加偏移量构建指针的方式来访问这些寄存器,既容易出错又难以读取。此外,其中有些寄存器是位字段,非常便于以结构化方式访问。

偏移寄存器名称宽度
0x00DR12
0x04RSR4
0x18FR9
0x20ILPR8
0x24IBRD16
0x28FBRD6
0x2cLCR_H8
0x30CR16
0x34IFLS6
0x38IMSC11
0x3cRIS11
0x40MIS11
0x44ICR11
0x48DMACR3
  • 为简洁起见,我们省略了一些 ID 寄存器。