我一直在阅读Linux设备驱动程序第3版,并且已在QEMU中运行linux 2.6。但是,我需要真正的硬件。我试图在QEMU中模拟一个paralleport连接器而没有运气。主机没有并行端口连接器。
qemu-system-x86_64 -parallel file:outputfile --enable-kvm -smp 2 -initrd initramfs.igz -kernel arch/x86/boot/bzImage -m 1024 -append "console=ttyS0 loglevel=8" -nographic
然后我编写了一个模块来通过request_region(0x378,1,"parallelport");
访问并行端口连接器。但是,每当我尝试写入ioport区域时,文件" outputfile"中都没有看到输出。在QEMU启动的工作目录中。我还在内核中添加了CONFIG_PARPORT
选项并添加了一些相关的CONFIG(即CONFIG_PARPORT_PC ...),它们似乎只添加了linux内置驱动程序或注册了IRQ处理程序。有了这个,我仍然无法写入parallelport" outputfile"在主机上。
但是,我可以读写ioport区域(意思是我用outb
写的任何内容都可以用inb
读取。但是,它不会被写入并行端口{{1这让我相信某些事情仍然是错误的。
我想知道我是否可以就我可能做错了什么或如何开始这个问题得到一些建议?我发现的唯一研究是qemu的不同paralleport选项(使用主机设备,udp等等),我试过没有运气。此外,使用outputfile选项或任何不需要主机并行端口的选项,是否可以模拟中断?
更新:在玩了一下之后,似乎从ioport写入和阅读的操作正在运行(仍然没有出现在输出文件中)。这是因为当我做outfile
时,我可以获得ioport并写入它,但是从中读取会产生不可打印的字符(不是我输入的字符)。默认情况下不会发生这种情况(指定无-parallel none
选项或-parallel
时。
Update2:从QEMU -parallel file:outputfile
文档中我发现-device
是遗留的。所以我将命令改为:
-parallel
然后加载驱动程序并创建一个chardev / dev / parallel0。但是,这仍然没有用。