更好的 UART 驱动程序
事实上,PL011 具有 很多额外的寄存器,但通过添加偏移量构建指针的方式来访问这些寄存器,既容易出错又难以读取。此外,其中有些寄存器是位字段,非常便于以结构化方式访问。
偏移 | 寄存器名称 | 宽度 |
---|---|---|
0x00 | DR | 12 |
0x04 | RSR | 4 |
0x18 | FR | 9 |
0x20 | ILPR | 8 |
0x24 | IBRD | 16 |
0x28 | FBRD | 6 |
0x2c | LCR_H | 8 |
0x30 | CR | 16 |
0x34 | IFLS | 6 |
0x38 | IMSC | 11 |
0x3c | RIS | 11 |
0x40 | MIS | 11 |
0x44 | ICR | 11 |
0x48 | DMACR | 3 |
- 为简洁起见,我们省略了一些 ID 寄存器。