DEPECA - UAH Departamento Electrónica SISTEMAS OPERATIVOS EN MICROCONTROLADORES Seminario de Microrrobots 21 – 23 de Marzo 2006 Oscar González Martínez Departamento Electrónica ● Introducción Queremos construir un robot complejo. ¿Cómo lo podemos hacer? Motores USB Memoria Sensores Cámara FW Hombrecillo, pensativo: Programador Acceso a redes Introducción Departamento Electrónica ● Introducción – Gracias al aumento de las prestaciones de los Microcontroladores y Microprocesadores cada vez: ● su uso se ha extendido a muchos campos. – ● ● ● Ordenadores, Teléfonos, Alarmas ... Robots Su tamaño y consumo se reducen más Permite creación de aplicaciones más potentes y variadas. Ofrecen mayor velocidad y capacidad de cómputo Introducción Departamento Electrónica – Todo esto viene acompañado de un incremento de la complejidad del dispositivo Z80,8086 HC11,M68k ... Pentium M, HC12, AT91X Antes Ahora Consecuencia: DIFICULTAD – INCREMENTO de la dificultad en el diseño de las aplicaciones, programas Introducción Departamento Electrónica ● ¿Cómo podemos implementar un sistema complejo (robot) donde...: – Existen diversos subsistemas que han de ser controlados? ● Motores ● Sensores ● Control de Baterias... MICROCONTROLADOR Introducción Departamento Electrónica – Deben funcionar de forma coordinada unos con otros?. – Dos opciones: ● 1ª: Nos lo “curramos” nosotros. ● 2ª: Usamos un “programa” que nos ayude. PLANIFICADOR Introducción Departamento Electrónica – Necesitamos tener seguridad de que: ● Reaccione ante eventos en un tiempo máximo? – ● Se pueda recuperar ante errores leves y/o graves? – – ● Restricciones temporales: Sistema de Tiempo Real Métodos para llevar al sistema a estados “estables” y conocidos cuando se produzca algún tipo de error. Mecanismos de “Traza inversa”. Sea móvil y autónomo (consumo y tamaño reducidos)? Sistema EMPOTRADO Programación en uC Departamento Electrónica ● DISEÑO DEL SISTEMA: – Hasta ahora: ● Para la atención ante eventos Rutinas de atención a las Interrupciones TAREA en EJECUCIÓN Evento Planificación de Temporicación Microcontrolador Programación en uC Departamento Electrónica – El desarrollo del software del sistema consistía en: Programación de la aplicación EN SÍ Planificación Planificación de la temporización a nivel de interrupción, estudiando su viabilidad junto a la tarea principal en ejecución. TIEMPO DE DESARROLLO ALTO Programación ● Además de la dependencia directa con el microcontrolador ● COMPLICADO SI EL NÚMERO DE TAREAS AUMENTA Programación en uC Departamento Electrónica ● ● Pero... ¿Y si utilizamos un “programa específico”, sobre el que ejecutamos nuestros programas, que conoce las capacidades de nuestro hardware y nos ayuda a manejarlo? Nos aporta funciones para “quitarnos” trabajo, entre otras cosas, en: – La ejecución “a la vez” de multiples tareas. – La planificación y temporización de las tareas. Programación en uC Departamento Electrónica ● Este modelo de desarrollo aporta: – Disminuye la complejidad en la programación del sistema. ● ● Se dedica más tiempo a la programación de la aplicación en sí. Se incrementa la portabilidad de los programas al no “hablar” estos directamente con el hardware. PROGRAMAS SO HARDWARE Programación en uC Departamento Electrónica ● ● Se hace uso de funciones genéricas que ahorran trabajo. Aumenta la seguridad ante errores simples/graves del sistema. int a; while(CONDICION_VERDADERA) { a++; } /* CONDICION_VERDADERA sucede que nunca es falsa */ – – Posible error de desbordamiento de la variable “a”. Espera activa EL SISTEMA SE PUEDE “COLGAR” Departamento Electrónica ● Programación en uC Solución: MICROCONTROLADOR + SISTEMA OPERATIVO SISTEMAS OPERATIVOS EN MICROCONTROLADORES Departamento Electrónica ● ¿Qué es un Sistema Operativo? – Conjunto de programas destinados a abstraer el HW de un dispositivo al Usuario, gestionando sus recursos de forma eficiente. – Todos las aplicaciones del usuario se ejecutarán haciendo uso de las PRIMITIVAS(funciones) que aporta el S.O., evitando la comunicación directa de éstos con el hardware. SISTEMAS OPERATIVOS EN MICROCONTROLADORES Departamento Electrónica ● ¿Por qué y para qué el uso de un SO? – Ofrecen una visión menos compleja del HW – Facilitan el manejo del HW aportando funciones al usuario. – Portabilidad de las librerias y programasº – Hace parecer al usuario que se ejecutan todas las aplicaciones al mismo tiempo. – Aportan seguridad en el funcionamiento del sistema y/o uso malintencionado de él mismo. – Soporte ante posibles fallos de las aplicaciones que se ejecutan. Departamento Electrónica ● SISTEMAS OPERATIVOS EN MICROCONTROLADORES Partes de un SO: Programa 2 Programa 1 Programa 3 HAL(Hardware Abstration Layer) MANEJADORES de DISPOSITIVOS Aplicaciones de Usuario KERNEL del S. O. HARDWARE SISTEMAS OPERATIVOS EN MICROCONTROLADORES Departamento Electrónica ● ¿Dónde se utilizan los SSOO? – Dependiendo: ● de las funciones que nos ofrezcan: – – ● Sistemas Operativos Genéricos Sistemas Operativos Específicos del dispositivo que se emplee: – – uProcesador uControlador SISTEMAS OPERATIVOS EN MICROCONTROLADORES Departamento Electrónica ● Requisitos: – El microcontrolador necesitará mayores recursos que en el caso de no ejecutar un SO. – Existen procesos que siempre se estarán “ejecutando” consumiendo recursos. ● – Hecho cada vez “menos relevante”, pues lo dispositivos cada vez son más potentes. Aunque abstraiga el HW, es necesario por parte del programador conocerlo y saber sus posibilidades. SISTEMAS OPERATIVOS EN MICROCONTROLADORES Departamento Electrónica – Los requisitos variaran en función de la aplicación, pero como elementos básicos, son necesarios: ● Un dispositivo de almacenamiento no volátil: – – ● Memoria de ejecución: RAM – – Lugar donde se almacenan el SO y los programas cuando sistema está apagado. Memoria NVRAM, Flash... Al arrancar se cargan el Kernel(SO), los programas y los datos de usuario. Opcionales: ● Gestor de Memoria: MMU, DMA ... – ● Cuando se use “Memoria Virtual” y/o “acceso directo a memoria” Periféricos: Sensores, Teclado, Pantalla, etc. SISTEMAS OPERATIVOS EN MICROCONTROLADORES Departamento Electrónica ● La Portabilidad – Los microcontroladores se pueden programar usando: ● Lenguaje Máquina: – ● Lenguajes de Bajo Nivel: ENSAMBLADOR – ● MOV AX, BX Lenguajes de Alto Nivel: BASIC, C, C++... – – 000010011110111001... A=B Al emplear lenguajes de alto nivel, “sólo” es necesario compilar el programa para la arquitectura del microcontrolador que se va a usar. SISTEMAS OPERATIVOS EN MICROCONTROLADORES Departamento Electrónica ● El Planificador – Programa que junto al “conmutador” decide que tareas se ejecutan en cada momento. – Distribuye el tiempo de ejecución en el microcontrolador de las diferentes tareas de usuario. SISTEMAS OPERATIVOS EN MICROCONTROLADORES Departamento Electrónica APLICACIONES DE USUARIO Compilador + Enlazador MÓDULOS Librerias Sistema Operativo (KERNEL) 8051 AVR ARM MC68K x86 uSPARC PPC SISTEMAS OPERATIVOS EN MICROCONTROLADORES Departamento Electrónica ● Tipos de SSOO – Según la clase de sistema en el que se ejecutan: ● Ordenador Personal ● Dispositivo móvil: “Sistema Empotrado” – PDA's, Móviles, Routers, Fotocopiadoras ... Robots SISTEMAS OPERATIVOS EN MICROCONTROLADORES Departamento Electrónica – Según el tipo de licencia: ● Propietaria – – ● Código de los programas = CERRADO. No se pueden modificar Su obtención es a partir de un PAGO por licencia de uso Libre distribución – – Código de los programas puede ser leido por cualquier persona Su obtención a partir de diversas fuentes GRATUITAS SISTEMAS OPERATIVOS EN MICROCONTROLADORES Departamento Electrónica – Según su tipo de respuesta ante eventos: ● Interactivos: – – ● Existe “interfaz” de usuario ya sea físico o visual. Su tiempo de respuesta ante eventos producidos por el usuario tiende a ser corto. Tiempo Real – – Usados para aplicaciones donde el tiempo de ejecución es muy importante. El tiempo de respuesta ante eventos está acotado a un valor máximo. GNU/Linux - Kernel Departamento Electrónica ● Breve Historia y Evolución – 1991: Linus Torvalds escribe el Kernel de Linux en la Universidad de Helsinki en 6 meses empleando su PC 80386. – 1991: Linus comparte su kernel en la red, haciendo que los programadores se queden asombrados, y deciden contribuir en el proyecto de desarrollo del nuevo núcleo. – 1992: Linux se libera bajo la licencia GNU General Public License – 1994: La version 1.0 de Linux 1.0 – 1994: Se funda la empresa Red Hat por Bob Young y Marc Ewing, creando un nuevo modelo de negocio entorno a Linux.. – 1995: GNU/Linux y el desarrollo de software libre se ponen a disposición en los servidores de Internet. – 2001: IBM invierte un 1 billion de dólares en Linux – 2002: GNU/Linux comienza a adoptarse en diversos sectores de la industria. Departamento Electrónica GNU/Linux - Kernel ● Es el núcleo del Sistema Operativo ● Su código fuente es abierto. Se puede modificar. ● ● ● Es portable entre arquitecturas, además de “configurable” a medida, sólo es necesario compilarlo con las opciones y servicios que sean necesarios. El soporte: Lo somos TODOS. Las fuentes y la documentación se pueden encontrar en Internet: www.kernel.org GNU/Linux - Kernel Departamento Electrónica ● ● El Kernel es una imagen que se almacena en memoria no volátil y que se carga cuando se arranca el dispositivo. Aporta seguridad en la ejecución de programas de usuario: Plano UsuarioKernel. – ● El usuario no “interactúa” directamente con el HW, todas las peticiones han de pasar por el Kernel El número de clases de estas peticiones (Manejadores y Servicios) dependerá con las que se haya creado el Kernel. GNU/Linux - Kernel Departamento Electrónica ● Para dar soporte al HW(Drivers) y ofrecer servicios, existen dos métodos: – Incluir todos los drivers y servicios dentro del Kernel. ● Cuidado con el tamaño de la imagen ● Carga rápida Aplicación DRIVER de Memoria USB Memoria USB USUARIO KERNEL HARDWARE GNU/Linux - Kernel Departamento Electrónica – Incluir parte dentro del Kernel y parte fuera: MÓDULOS. ● ● Los módulos son programas que se ejecutan cuando son necesarios desde el plano de usuario, siendo capaces de interectuar directamente con el Kernel. Flexibilidad y escalabilidad Modulo del USB Memoria USB Aplicación USUARIO KERNEL HARDWARE L.Embebido - Kernel Reducido Departamento Electrónica ● Kernel especial cada vez más utilizado para sistemas empotrados. – Aspectos más relevantes: ● Hardware soportado(cada vez mayor). ● Código fuente abierto. ● Calidad y estabilidad del código. Seguridad. ● Protocolos de comunicaciones y estándares de software. ● Soporte ● Disponibilidad de herramientas ● Coste y tipo de licencia Linux Embebido–Kernel Reducido Departamento Electrónica ● Especificaciones genéricas de un SO para usarlo en un sistema empotrado: – Tamaño de la imagen reducida – Escalable – Configurable – Soporte para la arquitectura del núcleo(CPU) – Manejadores de los dispositivos – Robusto ante fallos L.Embebido - Kernel Reducido Departamento Electrónica ● Ejemplos de SO Embebidos basados en Linux para sistemas empotrados – uCLinux – Emdebian – RTLinux – BlueCat – AMIRIX L.Embebido - Kernel Reducido Departamento Electrónica ● Ejemplo: – Características: ● S.O. Multitarea con arquitectura modular ● Kernel v2.4.x y v2.6x ● Protocolos de red (TCP/IP, SLIP, PPP) ● Sistemas de ficheros (ext2, NFS, FATx) ● Ausencia de gestión de Memoria (MMU) – – NO memoria virtual NO protección de memoria ● Librerias de Linux (libc) ● Programas varios: Shell, mount, ls, cp... ● ... Departamento Electrónica ● Creación de una plataforma Tras estos conceptos nos surgen ciertas preguntas para la creación de una plataforma. – ¿Cómo podemos conseguir un entorno basado en Linux embebido? – ¿Cuáles son los pasos a seguir? – ¿Cuáles son los requisitos mínimos del sistema? – ¿Qué herramientas HW/SW son necesarias? – ¿Es posible con nuestros medidos conseguir un microcontrolador que funcione con Linux embebido? Departamento Electrónica ● Creación de una plataforma “Todo es relativo”, dependiendo de las capacidades que impongamos a nuestro sistema. – Restricciones en cuanto a los medios que se dispongan. – Clase y tipo (“tamaño”) de los componentes a usar – Son necesarios conocimientos de diversas ramas para el desarrollo: ● Diseño del PCB, Diseño del Hardware.. ● Programación.. Departamento Electrónica ● ● Creación de una plataforma Existen dos opciones que debemos tener en cuenta a la hora del desarrollo: – Comprar una tarjeta con el HW ya montado – “Partir de cero” comprando los componentes y haciendo un sistema a nuestra medida. Cada una tendrá sus ventajas e inconvenientes. Departamento Electrónica ● Creación de una plataforma El S.O. y las aplicaciones se crean en un “Entorno de de desarrollo”(SDK): – En un PC se instalan las herramientas de desarrollo (CrossTools). ● ● Suelen estar en la red o son suministradas por el fabricante. Constan de: – – – – – Compilador y Enlazador cruzado entre arquitecturas(PC-Host). Programas ejemplo de “Bootloader” y “Cargadores”. RootFS básico. Librerias de desarrollo. Documentación. Departamento Electrónica ● Creación de una plataforma Modos de Operación: – Compilación de la imagen del Kernel y creación de un entorno “root” con un sistema de ficheros. .c .h .. .c .h .. .c .h .. A partir de: .c .h .. Compilador y enlazador cruzados .bin Módulos Kernel(vmlinuz) “mkcramfs” “mkfs.ext2” “mkfs.jffs2” ... RootFS Departamento Electrónica ● Creación de una plataforma Carga de los ficheros en nuestro sistema empotrado: Bootstrap Bootstrap Bootloader vmlinuz Módulos Bootloader vmlinuz Módulos RootFS RootFS IMAGEN (.BIN) Ejemplo: UNC20 Departamento Electrónica ● Ejemplo de sistema hardware para desarrollo: – – UNC20 ● Basado en ARM7TDMI ● Fclk < 55MHz ● Interface Ethernet ● Interfaz de serie RS232 ● Puertos genericos de E/S ● Canales DMA ● JTAG para test y depuración Empleado en un TFC de un estudiante de la UAH Referencias Departamento Electrónica ● BIBLIOGRAFÍA – “Linux Device Drivers”. O'Really, Alessandro Rubini & Jonathan Corbet. – “Building Linux Embedded Systems”. O'Really, Karim Yaghmour. – “Programming Embedded Systems in C/C++”. O'Really, Michael Barr. – “Embedded Linux System Design and Development”, (Hardcover) – “Understanding the Linux Kernel”, Paperback, Daniel Bovet. Marco Cesati. – TFC: “Desarrollo de Aplicaciones para un sistema empotrado con SO Linux y el módulo UNC20 basado en núcleo de microprocesador ARM7TDMI”, José Antonio Rangel García. (SEPT- 2005). – Libros de programación en C para UNIX Referencias Departamento Electrónica ● Asignaturas: – Sistemas Ecos Digitales (IT, ITT en SE) – Arquitectura de Computadores(IT, ITT en Telemática) – Ampliación de SSOO (IT) – Sistemas Electrónicos Avanzados de Control (IE) – Instrumentación Biomédica (IT, IE) MUCHAS GRACIAS