經改良的 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 暫存器。