Do you pine for the nice days of Minix-1.1, when men were men and wrote their own device drivers?” Linus Torvalds
In order to develop Linux device drivers, it is necessary to have an understanding of the following:
There are several different devices in Linux. For simplicity, this brief tutorial will only cover type char
devices loaded as modules. Kernel 2.6.x will be used (in particular, kernel 2.6.8 under Debian Sarge, which is now Debian Stable).
When you write device drivers, it’s important to make the distinction between “user space” and “kernel space”.
shell
or other GUI based applications (kpresenter
for example), are part of the user space. Obviously, these applications need to interact with the system’s hardware . However, they don’t do so directly, but through the kernel supported functions.All of this is shown in figure 1.
The kernel offers several subroutines or functions in user space, which allow the end-user application programmer to interact with the hardware. Usually, in UNIX or Linux systems, this dialogue is performed through functions or subroutines in order to read and write files. The reason for this is that in Unix devices are seen, from the point of view of the user, as files.
On the other hand, in kernel space Linux also offers several functions or subroutines to perform the low level interactions directly with the hardware, and allow the transfer of information from kernel to user space.
Usually, for each function in user space (allowing the use of devices or files), there exists an equivalent in kernel space (allowing the transfer of information from the kernel to the user and vice-versa). This is shown in Table 1, which is, at this point, empty. It will be filled when the different device drivers concepts are introduced.
Events | User functions | Kernel functions |
Load module | ||
Open device | ||
Read device | ||
Write device | ||
Close device | ||
Remove module |
There are also functions in kernel space which control the device or exchange information between the kernel and the hardware. Table 2 illustrates these concepts. This table will also be filled as the concepts are introduced.
联系客服