Advertisement
Guest User

translation

a guest
Jan 17th, 2012
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. Writing device drivers in Linux: A brief tutorial
  2. Short URL: http://fsmsh.com/1238
  3. Wed, 2006-04-26 11:03 -- Xavier Calbet
  4. “Do you pine for the nice days of Minix-1.1, when men were men and wrote their own device drivers?” Linus Torvalds
  5.  
  6. Pre-requisites
  7. In order to develop Linux device drivers, it is necessary to have an understanding of the following:
  8. C programming. Some in-depth knowledge of C programming is needed, like pointer usage, bit manipulating functions, etc.
  9. Microprocessor programming. It is necessary to know how microcomputers work internally: memory addressing, interrupts, etc. All of these concepts should be familiar to an assembler programmer.
  10. 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).
  11. User space and kernel space
  12. When you write device drivers, it’s important to make the distinction between “user space” and “kernel space”.
  13. Kernel space. Linux (which is a kernel) manages the machine's hardware in a simple and efficient manner, offering the user a simple and uniform programming interface. In the same way, the kernel, and in particular its device drivers, form a bridge or interface between the end-user/programmer and the hardware. Any subroutines or functions forming part of the kernel (modules and device drivers, for example) are considered to be part of kernel space.
  14. User space. End-user programs, like the UNIX 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.
  15. All of this is shown in figure 1.
  16. Figure 1: User space where applications reside, and kernel space where modules or device drivers reside
  17. Interfacing functions between user space and kernel space
  18. 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.
  19. 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.
  20. 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.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement