第 13 章:UART 模拟
学习目标
- 模拟 UART 设备
- 实现寄存器读写
- 连接标准输入输出
13.1 思考:如何模拟 UART?
真实的 UART 连接串口线,模拟器怎么办?
答案:连接到终端!
程序写 UART → 模拟器 → printf 到终端
终端输入 → 模拟器 → 程序读 UART
13.2 UART 寄存器
typedef struct {
uint8_t thr; // 发送
uint8_t rhr; // 接收
uint8_t lsr; // 状态
} UART;
UART uart;
13.3 实现
uint32_t uart_read(uint32_t addr) {
switch (addr & 0xFF) {
case 0: return getchar(); // RHR
case 5: return 0x60; // LSR (ready)
}
}
void uart_write(uint32_t addr, uint32_t data) {
if ((addr & 0xFF) == 0) {
putchar(data); // THR
}
}