Diseño de controlador para DS1337
La configuración y lectura de la información del reloj DS1337, así como la configuración del despertador, requieren la escritura de un software. Este sistema se ejecuta bajo el sistema operativo Linux. DS1337 es un dispositivo de hardware del sistema. Las operaciones del sistema se completan a través del controlador en el sistema operativo Linux.
En los sistemas Linux, los dispositivos se dividen en dos tipos: dispositivos de caracteres y dispositivos de bloques. DS1337 es un dispositivo de caracteres. Los programas en modo de usuario pueden funcionar en este tipo de dispositivo como archivos normales. Por lo tanto, el controlador del dispositivo de caracteres debe implementar al menos cuatro funciones: Abrir(), Cerrar(), Leer() y Escribir(). Función de llamada al sistema. Estas cuatro funciones de llamada al sistema son cuatro de los elementos dentro de la estructura de datos del kernel file_operatives. Además, un controlador de dispositivo también está relacionado con dos estructuras de datos, que son la estructura de inodo y la estructura de archivo. Pero la estructura de datos directamente relevante es file_operatives. Escribir un controlador de sistema Linux y probarlo implica principalmente los siguientes pasos:
(1) Escribir varias funciones de operación de archivos, a saber, Abrir (), Cerrar (), Leer (), Escribir () y otros sistemas Llamar la función;
(2) Declarar la estructura file_operatives y asignar valores a los miembros de la estructura
(3) Escribir la función de inicialización y la función de limpieza, y definirlas con dos; macros module_init y module_exit Función;
(4) Cree un punto de entrada del dispositivo de caracteres, es decir, use el comando mknod/dev/ds1337cxxx0 para crear un nodo de archivo de dispositivo. Entre ellos, c representa el dispositivo de caracteres. Si es un dispositivo de bloque, la posición debe ser b; el parámetro xxx representa el número de dispositivo principal del dispositivo y 0 representa el número de dispositivo menor del dispositivo;
(5) Escriba una aplicación de prueba. ;
(6) Utilice el comando insmodds1337.o para cargar el controlador;
(7) Ejecute el programa de prueba para probar el controlador;
(8 ) Utilice el comando rmmodds1337.o para desinstalar el controlador;
De hecho, durante el proceso de prueba, si se encuentra algún problema, se debe modificar cada función de operación de archivo y luego se puede reiniciar el proceso anterior desde paso 1 hasta formar el driver final y perfecto.
La velocidad de transmisión de datos en el bus IC de DS1337 es de 100 Kbit en modo estándar y de 400 Kbit en modo de alta velocidad. Para las condiciones de ARRANQUE y PARADA en el bus IC y el tiempo de transmisión de bits de datos, dado que no hay más circuitos de control de hardware en EP9315, se requiere programación. Cabe señalar que en el bus IC, los cambios de datos ocurren cuando la línea de señal SCL tiene un nivel bajo; cuando la señal SCL tiene un nivel alto, la señal de datos en la línea de datos SDA debe permanecer estable. La condición de INICIO es cuando la señal SCL tiene un nivel alto, SDA produce un cambio de nivel de alto a bajo y luego inicia un proceso de transmisión de datos.
La condición STOP se produce cuando la señal SCL es alta, SDA produce un cambio de nivel de bajo a alto y en los siguientes ciclos de reloj el bus se libera y pasa a un estado "inactivo". En los sistemas Linux, la función de retardo corto udelay (unsignedlongusecs) se puede utilizar para implementar la función de retardo en el bus IC. Aquí no se proporcionan controladores específicos.