QEMU 能够模拟拥有多个串行端口的ARM系统,比如 Versatile PB。它可以将这些串行端口定向到多种类型的主机资源,比如标准输入输出、伪终端或者 telnet 端口。在 Versatile PB 的手册中,有一个部分叫做“内存映射”,它包含了外围设备的绝对地址映射。例如,UART 0、1 和 2 接口分别位于地址 0x101F1000、0x101F2000 和 0x101F3000。手册中提到,UART 外围设备的程序员模型建议参考 ARM PrimeCell UART(PL011)技术参考手册。在 PL011 手册中,可以找到 UART 内存映射寄存器的详细描述。根据这些描述,实现了一个 C 语言结构体,使得串行端口更易于使用。以下是完整的程序:
#include <stdint.h>
typedef