Computación (sat)

Solo disponible en BuenasTareas
  • Páginas : 19 (4671 palabras )
  • Descarga(s) : 0
  • Publicado : 30 de octubre de 2010
Leer documento completo
Vista previa del texto
Breve tutorial para escribir drivers en Linux
Xavier Calbet
GULIC (Grupo de Usuarios de LInux de Canarias) xcalbet@yahoo.es

“Do you pine for the nice days of Minix-1.1, when men were men and wrote their own device drivers?” Linus Torvalds Licencia Copyright (C) 2001 Xavier Calbet. Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia deDocumentación Libre GNU, Versión 1.1 o cualquier otra versión posterior publicada por la Free Software Foundation. Puede consultar una copia de la licencia en: http://www.gnu.org/copyleft/fdl.html

1. Requisitos preliminares
Para realizar drivers para Linux es necesario unos conocimientos previos mínimos que son:


Programar en C. Es necesario conocer de forma relativamente profunda laprogramación en C como los punteros, funciones de manipulación de bits, etc. Nociones de funcionamiento de los microprocesadores. Es necesario tener nociones del funcionamiento interno de los microordenadores tales como el direccionamiento



1

Breve tutorial para escribir drivers en Linux de memoria, interrupciones, etc. Sabiendo programar en ensamblador todos estos conceptos resultarán familiares.Existen varios tipos de dispositivos diferentes en Linux. Por sencillez, en este breve tutorial veremos los dispositivos tipo char cargados como módulos. Se utilizará la versión del kernel 2.2.x (en concreto la 2.2.14), aunque los módulos funcionarán con modificaciones pequeñas o nulas en la versión 2.4.x.

2. Espacio de usuario (“user space”) y espacio de kernel (“kernel space”)
Cuando seescriben drivers es importante distinguir entre el espacio de usuario (“user space”) y el espacio de kernel (“kernel space”).


Espacio del kernel (“kernel space”). El sistema operativo Linux y en especial su kernel se ocupan de gestionar los recursos de hardware de la máquina de una forma eficiente y sencilla, ofreciendo al usuario una interfaz de programación simple y uniforme. El kernel, y enespecial sus drivers, constituyen así un puente o interfase entre el programador de aplicaciones para el usuario final y el hardware. Toda subrutina que forma parte del kernel tales como los módulos o drivers se consideran que están en el espacio del kernel (“kernel space”). Espacio de usuario (“user space”). Los programas que utiliza el usuario final, tales como las “shell” u otras aplicaciones conventanas como por ejemplo “kpresenter”, residen en el espacio de usuario (“user space”). Como es lógico estas aplicaciones necesitan interaccionar con el hardware del sistema, pero no lo hacen directamente, sino a través de las funciones que soporta el kernel.



Todo esto se puede visualizar en la Fig. 1.

2

Breve tutorial para escribir drivers en Linux

Figura 1. Espacio de usuariodonde residen las aplicaciones y espacio de kernel donde residen los módulos o drivers.

3. Funciones de intercambio entre el espacio de usuario y el espacio de kernel
El kernel ofrece una serie de subrutinas o funciones en el espacio de usuario que permiten al programador de aplicaciones finales interaccionar con el hardware. Habitualmente, en sistemas UNIX o Linux, este diálogo se hace a travésde las funciones o subrutinas para leer y escribir en ficheros, ya que en estos sistemas los propios dispositivos se ven desde el punto de vista del usuario como ficheros. Por otro lado, en el espacio del kernel, Linux también ofrece una serie de funciones o subrutinas para por un lado interaccionar directamente, a bajo nivel, con los dispositivos hardware y por otro permite el paso de informacióndesde el kernel al espacio de usuario. Es común que para cada función en el espacio de usuario que permite el uso de dispositivos o ficheros haya su equivalente en el espacio de kernel que permite el

3

Breve tutorial para escribir drivers en Linux trasvase de información del espacio de kernel al de usuario y viceversa. Esto se puede apreciar en la Tabla 1, la cual de momento se quedará...
tracking img