Paso 2: Configurar el Raspberry Pi
El Raspberry Pi es un ordenador monoplaca de propósito general que puede ejecutar un sistema operativo de Linux. Sin embargo, sistemas operativos Linux no normalmente se ejecutan los procesos en tiempo real. Esto es porque el sistema operativo escucha de entradas de otros dispositivos, en lugar de sólo procesar un comando a la vez. Un ADC paralelo se utiliza para tomar la entrada y al leer a un ADC externo, uno debe asegurarse de que el tiempo entre cada punto de muestreo es la misma. Sin un sistema operativo de tiempo real, esto no está garantizado. Agradecimiento especial a Sr. Daniel Pelikan otra vez para escribir un módulo del kernel de Linux para solucionar el problema.
¿Qué es un módulo del kernel de Linux?
Un módulo de núcleo (LKM) es un mecanismo para agregar código a, o quitar el código desde el núcleo de Linux en tiempo de ejecución. Los módulos son piezas de código que puede ser cargado y descargado el kernel a la demanda. Se extiende la funcionalidad del kernel sin necesidad de reiniciar el sistema. Por ejemplo, un tipo de módulo es el controlador de dispositivo, que permite el kernel acceder a hardware conectado al sistema. Sin esta capacidad modular, el kernel de Linux sería muy grande, como tendría que apoyar todos los pilotos que alguna vez sería necesario en el BBB. También tienes que reconstruir el kernel cada vez que quería añadir hardware nuevo o actualizar un controlador de dispositivo. La desventaja de LKMs es que los archivos del controlador deben mantenerse para cada dispositivo. LKMs se cargan en tiempo de ejecución, pero no se ejecutar en espacio de usuario, son esencialmente parte del kernel. Para conocer más sobre el módulo del núcleo Linux siguen los enlaces que figuran a continuación.
http://www.tldp.org/LDP/lkmpg/2.6/HTML/
http://derekmolloy.ie/Writing-a-Linux-Kernel-Module-Part-1-Introduction/
http://www.thegeekstuff.com/2013/07/Write-Linux-Kernel-Module/
Escribir un módulo del kernel de Linux ofrece la posibilidad de realizar operaciones de bajo nivel de hardware. Tenemos que correr con la mayor prioridad posible, leyendo el registro GPIO con las interrupciones de sistema desactivadas para tan corto tiempo posible.
Un ADC paralelo puede utilizarse para tomar una muestra en el flanco ascendente de la señal de reloj y salida de la muestra en los pines de datos en el borde descendente. El objetivo es el ADC en la frecuencia de muestreo requiere del reloj y leer todos los pines de datos entre cada muestra.