31.2. Descripción detallada de PCMCIA

En las secciones siguientes se describe lo que ocurre en el sistema Linux cuando un dispositivo PCMCIA se conecta al equipo. Los componentes interactúan unos con otros, por lo que es necesario cumplir muchos requisitos para que un dispositivo PCMCIA sea compatible.

Lo que a continuación se explica es una descripción somera del proceso de inicialización de PCMCIA en Linux:

  1. El bridge PCMCIA (o zócalo) debe configurarse adecuadamente, tal y como se describe en la Sección 31.2.1, “Inicialización del bridge”. Los requisitos previos son los siguientes:

    • Controlador adecuado para el bridge

    • Rangos adicionales de E/S y de memoria para las tarjetas PC

  2. Una vez que el bridge se haya configurado adecuadamente, el controlador del bridge detecta la presencia de una tarjeta y activa su inicialización, tal y como se describe en la Sección 31.2.2, “Inicialización de la tarjeta”:

    1. Determine el tipo de tarjeta.

    2. Proporcione el voltaje adecuado.

    3. Asigne los rangos de E/S y de memoria así como las líneas IRQ a la tarjeta.

    4. Active la inicialización de la tarjeta o del dispositivo asociando el controlador de tarjeta adecuado.

    5. En el caso de algunas tarjetas es necesario cargar la estructura de información de la tarjeta (CIS).

  3. Por último, se configura la interfaz y se deja lista para su uso. Para obtener más información, consulte la Sección 31.2.3, “Configuración de la interfaz”.

31.2.1. Inicialización del bridge

La mayoría de bridges PCMCIA son dispositivos PCI que se tratan como tales. El proceso de inicialización del bridge puede resumirse de la siguiente manera:

  1. Hotplug crea un evento PCI.

  2. udev llama a /sbin/hwup para cargar el controlador. /sbin/hwup comprueba /etc/sysconfig/hardware para ver si hay una configuración de dispositivos existente. Si se encuentra una configuración adecuada, se usará. En caso contrario, /sbin/hwup llamará a modprobe con la cadena modalias proporcionada por el núcleo para cargar el módulo del controlador.

  3. Se enviarán nuevos eventos hotplug (uno por cada zócalo de PCMCIA).

  4. Los pasos siguientes se omiten si sólo se usan tarjetas CardBus:

    1. Los eventos pcmcia_socket activan udev para que llame a /sbin/hwup y cargue el módulo del núcleo de pcmcia.

    2. Todos los rangos de memoria y de E/S especificados en /etc/pcmcia/config.opts se añadirán al zócalo.

    3. Los servicios de tarjeta en el núcleo comprobarán estos rangos. Si los rangos de memoria de /etc/pcmcia/config.opts no son correctos, este paso podría hacer que el equipo falle y se detenga. Consulte la Sección 31.3.1, “Detención del equipo por un fallo en PCMCIA” para obtener información sobre cómo depurar y solucionar este problema.

Una vez que se hayan completado correctamente estos pasos, el bridge se habrá inicializado completamente. Después de esto, la tarjeta se inicializa tal y como se describe en la sección siguiente:

31.2.2. Inicialización de la tarjeta

Los eventos provocados al conectar una tarjeta PCMCIA pueden resumirse de esta manera:

  1. Se produce un evento hotplug. Para las tarjetas de PC, se trata de un evento pcmcia. Para las tarjetas CardBus, se trata de un evento pci.

  2. Para cualquier evento, udev llama a /sbin/hwup para cargar el módulo del controlador. El nombre del módulo se especifica en un archivo hwcfg* de /etc/sysconfig/hardware o mediante modprobe modalias.

  3. Si es necesario, la inicialización del dispositivo activa un evento hotplug de firmware, se busca el firmware y se carga.

  4. El controlador del dispositivo registrará las interfaces.

Después de haber completado estos pasos, el sistema sigue con la configuración de la interfaz, tal y como se describe en la siguiente sección.

Si su tarjeta es PC, podrá necesitar algunos de los parámetros siguientes en /etc/sysconfig/pcmcia para que sea totalmente compatible y poder trabajar sin problemas:

PCMCIA_LOAD_CIS

El firmware de la tarjeta PC se denomina CIS (Card Information Structure, Estructura de información de la tarjeta). Proporciona detalles de implementación adicionales de la tarjeta. El comando hwup comprueba la integridad del CIS incorporado de la tarjeta e intenta cargar otro a partir del disco, siempre y cuando el CIS de la tarjeta esté dañado. El ajuste por defecto es yes (sí). Para inhabilitar la carga de CIS del disco, defina la variable en no.

PCMCIA_ALLOW_FUNC_MATCH

Los controladores del dispositivo para Linux contienen una tabla de ID de dispositivo que indica a los controladores los dispositivos que va a gestionar. Esto quiere decir que sólo serán compatibles aquellos dispositivos cuyos ID sean conocidos por el núcleo. Para que aquellas tarjetas cuyos ID no aparezcan sean compatibles, puede utilizar la coincidencia de funciones. Esto quiere decir que no se seleccionará el controlador por el ID, sino por la función de la tarjeta (como, por ejemplo, una tarjeta de red) y que sería responsable de cualquier tarjeta PC insertada con esa función (como las tarjetas de red). El ajuste por defecto es yes (sí). Para inhabilitar la coincidencia de funciones, defina esta variable en no.

PCMCIA_COLDPLUG_REINSERT

En ocasiones ocurre que las tarjetas que se han insertado antes de arrancar no se detectan. Para evitarlo, provoque una expulsión y una inserción de software de la tarjeta definiendo PCMCIA_COLDPLUG_REINSERT en yes (sí). El ajuste por defecto es no.

31.2.3. Configuración de la interfaz

Dependiendo del tipo de tarjeta, se registrarán interfaces distintas después de que se haya completado correctamente la inicialización. El registro de la interfaz se gestiona mediante el hotplug de udev. Para obtener más información acerca de udev y de hotplug, consulte el Capítulo 12, Gestión dinámica de dispositivos de núcleo con udev.