qemu虚拟并口重定向
qemu可以使用参数 “-parallel dev” 将虚拟并口重定向至PC上的设备。比如重定向至一个打开的伪终端: -parallel /dev/pts/2
或者重定向至PC上的文件: -parallel file:/path/to/file
以下测试使用qemu运行并将并口重定向至文件 pptest.txt 。
使用/dev/port
linux内核提供 /dev/port 设备以供用户空间以常规文件读写方式直接访问IO端口。比如要读取地址为100的16位端口,只需seek到文件的100字节处并读取2字节数据,写端口数据亦然。
以并口为例,以下代码发送一串字符至地址为0x378的并口:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#define PORT_FILE "/dev/port"
#define PORT_ADDR 0x378
#define PORT_DATA (PORT_ADDR + 0)
#define PORT_STAT (PORT_ADDR + 1)
#define PORT_CTRL (PORT_ADDR + 2)
static int fd = -1;
static unsigned char io_read(unsigned int port)
{
unsigned char data;
lseek(fd, port, SEEK_SET);
read(fd, &data, 1);
return data;
}
static void io_write(unsigned int port, unsigned char data)
{
lseek(fd, port, SEEK_SET);
write(fd, &data, 1);