Font Size: a A A

The Design And Implementation Of A Method Of Remote PCI Device Driver

Posted on:2013-09-04Degree:MasterType:Thesis
Country:ChinaCandidate:A LiFull Text:PDF
GTID:2248330371487938Subject:Software engineering
Abstract/Summary:PDF Full Text Request
Though device drivers take the software form, they deal with hardware directly. No matter the simple embedded systems without operating systems, or servers with very complicated operating systems, they all need device drivers to control their peripherals. Traditionally, drivers and devices are on the same machine, which complies with the close connection between them. However, there is an abuse in this mechanism, that is, the local machine must have the device drivers installed. We have to implement the application programs if we want devices of multiple machines to interact with each other.This paper makes an innovative improvement against this abuse, and brings up the idea of separating the drivers and devices:in this way the drivers and devices don’t have to be on the same machine, the devices end only contains device operating interface, and the information of real devices is on another machine, that is, separate the main control logic of the driver from the local machine. The benefits of this approach is that the applications for local use can control the remote device in a remote driving way without modification, and turn to network applications, which extends the functions of varieties of application programs.This paper introduces the design and implementation of a prototype system based on this idea. The system uses the device driver on the local QEMU virtual machine to control the PCI NIC on another machine via network of other NICs. First, we analyse the differences between remote drivers and traditional drivers, and decide to use QEMU virtual machine in order to intercept the device operations, and emulate PCI devices. Then we discuss the overall design of the system, and divide it into local device stub and remote driver stub:the local device stub is implemented in accordance with QEMU device model, and the remote driver stub is implemented under the UIO driver framework in order to make I/O data access more efficient. Next we analyse the three main aspects of implementing the remote driver, that is, I/O, interrupt and DMA, and give the solutions to each of them, especially the DMA operations. Now we implement the control of the remote PCI NIC, and the basic send/receive functions of network packets only with the aid of the local driver in a remote driving way.
Keywords/Search Tags:Device driver, Remote driver, QEMU, PCI device
PDF Full Text Request
Related items