1 / 31

DEVICE DRIVER PARA MICROCONTROLADOR EN LINUX

INSTITUTO POLITÉCNICO NACIONAL. DEVICE DRIVER PARA MICROCONTROLADOR EN LINUX. CENTRO DE INVESTIGACIÓN EN COMPUTACIÓN. POR: MARIA GUADALUPE DOMINGUEZ URBAN. PROGRAMACION DE SISTEMAS. 05/NOV/07. Objetivos Objetivos Generales Objetivos Específicos Planteamiento del Problema

minya
Download Presentation

DEVICE DRIVER PARA MICROCONTROLADOR EN LINUX

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. INSTITUTO POLITÉCNICO NACIONAL DEVICE DRIVER PARA MICROCONTROLADOR EN LINUX CENTRO DE INVESTIGACIÓN EN COMPUTACIÓN POR: MARIA GUADALUPE DOMINGUEZ URBAN PROGRAMACION DE SISTEMAS 05/NOV/07 MCIC IPN

  2. Objetivos Objetivos Generales Objetivos Específicos Planteamiento del Problema Justificación Introducción a Device Drivers Diagrama a bloques del sistema Diseño Del Software Diseño Del Hardware Etapas del Proyecto y Calendarización Diagramas internos Partes importantes de código Pruebas y resultados obtenidos Trabajos futuros Recomendaciones Referencias Bibliográficas ÍNDICE DE PRESENTACIÓN 05/NOV/07 MCIC IPN

  3. OBJETIVO GENERAL Programar un microcontrolador de 8 bits a través del puerto paralelo a partir de un archivo hexadecimal. MCIC IPN

  4. OBJETIVOS ESPECÍFICOS Realizar un Device Driver para establecer comunicación mediante puerto paralelo. Realizar un programa que utilice el Device Driver para enviar bits de información mediante puerto paralelo. Realizar un programa codificado en C para programar un microcontrolador de 8 bits utilizando el Device Driver realizado. MCIC IPN

  5. PLANTEAMIENTO DEL PROBLEMA Desarrollar controladores de dispositivos para Linux implica tener conocimiento de programación en C y programación del Microprocesador. Escribir controladores de dispositivos para Linux ante la necesidad de acceder a un dispositivo en específico y la velocidad con que surgen otros nuevos, con lo que los anteriores se vuelven obsoletos. MCIC IPN

  6. JUSTIFICACIÓN Un Device Driver actúa como un traductor entre un dispositivo y las aplicaciones o los sistemas operativos que los usan. El código de alto nivel puede ser escrito independientemente del dispositivo especifico que controlará. Cada versión de un dispositivo tal como una impresora, requiere sus propios comandos especializados. El Driver acepta declaraciones de alto nivel y los convierte a comandos de bajo nivel requeridos por el dispositivo. MCIC IPN

  7. RESUMEN DE LA INVESTIGACIÓN DOCUMENTAL ¿Qué es un device driver? Device driver o software driver es un programa que permite a los programas de alto nivel, interactuar con un dispositivo de hardware de computadora. Un driver es flexible si ofrece capacidad de acceder fácilmente a un dispositivo sin agregar limitaciones. “Escribir código para acceder al hardware pero no limitarlo a un propósito específico ya que los requerimientos de un usuario no son los mismos que para otro”. MCIC IPN

  8. RESUMEN DE LA INVESTIGACIÓN DOCUMENTAL Clases de dispositivos y módulos 1.- Dispositivo de carácter: se puede ingresar como una cadena de bytes. Implementa al menos las llamadas al sistema open, close, read y write. 2.- Dispositivos de bloque: pueden albergar un sistema de archivos. Almacenan cantidades masivas de datos y que sólo pueden realizar operaciones de entrada/salida en las que se transfieren uno o más bloques de datos. MCIC IPN

  9. RESUMEN DE LA INVESTIGACIÓN DOCUMENTAL Clases de dispositivos y módulos 3.- Dispositivos de red o network interfaces, donde la entrada/salida se realiza por dispositivos especializados de comunicaciones. El objetivo de un driver de red es la gestión del envío y recepción de paquetes de datos. MCIC IPN

  10. RESUMEN DE LA INVESTIGACIÓN DOCUMENTAL Tipos de Microcontroladores Existe una gran diversidad de microcontroladores. Se clasifican entre microcontroladores de 4, 8, 16 ó 32 bits. Aunque las prestaciones de los microcontroladores de 16 y 32 bits son superiores a los de 4 y 8 bits, los microcontroladores de 8 bits dominan el mercado y los de 4 bits se resisten a desaparecer. MCIC IPN

  11. RESUMEN DE LA INVESTIGACIÓN DOCUMENTAL Arquitectura básica Actualmente tanto la industria de los computadores comerciales como la de los microcontroladores están decantándose hacia la filosofía RISC. En estos procesadores el repertorio de instrucciones máquina es muy reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo. La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del procesador. MCIC IPN

  12. DIAGRAMA A BLOQUES DEL SISTEMA FIG. 1 DIAGRAMA A BLOQUES, DEVICE DRIVER PARA MICROCONTROLADOR EN LINUX MCIC IPN

  13. DISEÑO DEL SOFTWARE • Una aplicación de usuario no tiene permiso para acceder libremente a los dispositivos de entrada/salida, sino que debe hacerlo siempre a través de los drivers. • En Linux los drivers son módulos software que pueden cargarse y descargarse dinámicamente del kernel. • El módulo debe tener al menos dos operaciones: 1. init module: para instalar el módulo 2. cleanup module: para desinstalarlo FIG. 2 ESPACIO DE USUARIO Y ESPACIO DEL KERNEL. MCIC IPN

  14. DISEÑO DEL SOFTWARE • Una aplicación puede hacer llamadas a funciones que no se han definido: la etapa de conexión resuelve referencias externas usando las librerías de funciones apropiadas. • Un módulo, por el contrario, es conectado únicamente al kernel, y las únicas funciones que puede llamar son las aquellas expedidas por el kernel; no hay librerías para hacer la llamada a estas funciones. MCIC IPN

  15. FIG 4. Diagrama de conexión por puerto paralelo. DISEÑO DEL HARDWARE Comunicación serial MCIC IPN

  16. FIG 5. Programación serial DISEÑO DEL HARDWARE • La memoria del microprocesador puede ser programadas usando el bus SPI cuando el RESET se encuentra a tierra. La interfaz serial consiste en los pines SCK, MOSI (entrada), y MISO (salida). Después de que el RESET es puesto en bajo, es necesario habilitar la instrucción de programación, antes de cualquier operación de para programar o borrar. MCIC IPN

  17. ALCANCE DEL PROYECTO Obtener mediante la programación en C un archivo hexadecimal que será enviado a través del puerto paralelo para programar un microcontrolador de 8 bits. MCIC IPN

  18. ETAPAS DEL PROYECTO Y CALENDARIZACIÓN TAB. 1 ETAPAS Y CALENDARIZACIÓN DEL PROYECTO MCIC IPN

  19. BLOQUES INTERNOS Device Driver TAB. 2 EVENTOS DEL DEVICE DRIVER Y FUNCIONES EQUIVALENTES ENTRE EL ESPACIO DE USUARIO Y EL ESPAIO DEL KERNEL. MCIC IPN

  20. FIG 6. Programación serial BLOQUES INTERNOS Programacion SPI MCIC IPN

  21. FIG 7. Programación de memoria Flash ATmega8535 BLOQUES INTERNOS Memoria MCIC IPN

  22. PARTES IMPORTANTES DEL CÓDIGO Inicializando el módulo int parlelport_init(void) { int result; /* registrando el dispositivo*/ result = register_chrdev(parlelport_major, "parlelport", &parlelport_fops); if (result < 0) { printk( "<1>parlelport: cannot obtain major number %d\n", parlelport_major); return result; } Removiendo el módulo void parlelport_exit(void) { unregister_chrdev(parlelport_major, "parlelport"); printk("<1>Removing parlelport module\n"); } MCIC IPN

  23. PARTES IMPORTANTES DEL CÓDIGO Abriendo el dispositivo como archivo int parlelport_open(struct inode *inode, struct file *filp) { /* Exitoso*/ return 0; } Cerrando el dispositivo como archivo int parlelport_release(struct inode *inode, struct file *filp) { /* Exitoso*/ return 0; } MCIC IPN

  24. PARTES IMPORTANTES DEL CÓDIGO Leyendo el dispositivo ssize_t parlelport_read(struct file *filp, char *buf, size_t count, loff_t *f_pos) { /* Buffer para leer el dispositivo*/ char parlelport_buffer; /* Transfiriendo datos al espacio de usuario*/ copy_to_user(buf,&parlelport_buffer,1); /* Cambiando la posicion de lectura*/ if (*f_pos == 0) { *f_pos+=1; return 1; } else { return 0; }} MCIC IPN

  25. PARTES IMPORTANTES DEL CÓDIGO Escribiendo al dispositivo ssize_t parlelport_write( struct file *filp, char *buf, size_t count, loff_t *f_pos) { char *tmp; /* Buffer escribiendo al dispositivo*/ char parlelport_buffer; tmp=buf+count-1; copy_from_user(&parlelport_buffer,tmp,1); return 1; } MCIC IPN

  26. PRUEBAS Y RESULTADOS OBTENIDOS <hello.c> #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk("<1> Hello world!\n"); return 0; } static void hello_exit(void) { printk("<1> Bye, cruel world\n"); } module_init(hello_init); module_exit(hello_exit); <makefile>obj-m := nothing.o hello.o MCIC IPN

  27. PRUEBAS Y RESULTADOS OBTENIDOS Desde la liberación de la versión del kernel 2.6.x, la compilación de los módulos se ha convertido en algo más complicada. En primer lugar, es necesario que usted tenga un completo, código fuente del árbol del kernel. Luego, hay que generar un Makefile. A diferencia con las versiones anteriores del kernel, ahora también es necesario para compilar y cargar el módulo utilizando el mismo núcleo que vamos a utilizar. Para compilarlo, puede escribir: $ make -C /usr/src/kernel-source-2.6.8 M=pwd modules MCIC IPN

  28. CONCLUSIONES Habiendo estudiado el presente trabajo junto con las referencias marcadas se debe estar capacitado para construir device drivers propios y completos para hardware simple, o un device driver mínimo para hardware complejo. Entender algunos de estos conceptos simples acerca de el kernel Linux permitirá, en una forma fácil y rápida, llegar a desarrollar Device Drivers. Esto permitirá estar a un paso de ser un verdadero desarrollador del kernel de Linux. MCIC IPN

  29. TRABAJOS FUTUROS Seguir trabajando sobre comunicación de dispositivos externos mediante software. Realizar Drivers para tarjetas PCI, USB. Realizar un programa para utilizar dispositivos conectados a microcontroladores para propósito específico. MCIC IPN

  30. RECOMENDACIONES Hay que evaluar continuamente. Comparación de propuestas y experiencias propias para encaminarse hacia el cumplimiento de los objetivos. MCIC IPN

  31. REFERENCIAS BIBLIOGRÁFICAS Claus Kühnel, AVR RISC Microcontroller Handbook, Newnes, 1998. Dhananjay V. Gadre, Programming the parallel port: interfacing the PC for data acquisition and process control, R&D Books Lawrence, 1998. Jonathan Corbet, Alessandro Rubini, Linux Device drivers, 20003 Asdrúbal López Chau, Microcontroladores AVR: configuración total de periféricos, CIGOME, 2006. Páginas Web Consultadas www.atmel.com http://en.wikibooks.org/wiki/Embedded_Systems/Atmel_AVR http://www.lancos.com/prog.html http://www.bsd.cl/wiki/index.php?title=Sistemas_Embebidos_FreeBSD MCIC IPN

More Related