Upload
phungdan
View
224
Download
0
Embed Size (px)
Citation preview
DepartamentoElectrónica
SISTEMAS OPERATIVOSSISTEMAS OPERATIVOSENEN
MICROCONTROLADORESMICROCONTROLADORES
DEPECA - UAH
Seminario de Microrrobots 21 – 23 de Marzo 2006
Oscar González Martínez
Introducción
● Queremos construir un robot complejo. ¿Cómo lo podemos hacer?
Memoria
Motores
Acceso a redes
USB
Sensores
Hombrecillo, pensativo: Programador
Cámara FW
DepartamentoElectrónica
Introducción
● 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
DepartamentoElectrónica
Introducción
– Todo esto viene acompañado de un incremento de la complejidad del dispositivo
– Consecuencia:
Z80,8086 HC11,M68k ...
Antes
Pentium M, HC12, AT91X
AhoraD
IFIC
UL T
AD INCREMENTO de la
dificultad en el diseño de las aplicaciones,
programas
DepartamentoElectrónica
Introducción
● ¿Cómo podemos implementar un sistema complejo (robot) donde...:– Existen diversos subsistemas que han de ser
controlados?● Motores● Sensores● Control de Baterias...
MICROCONTROLADORMICROCONTROLADOR
DepartamentoElectrónica
Introducción
– Deben funcionar de forma coordinada unos con otros?.
– Dos opciones:● 1ª: Nos lo “curramos” nosotros.● 2ª: Usamos un “programa” que nos ayude.
PLANIFICADORPLANIFICADOR
– Deben funcionar de forma coordinada unos con otros?.
– Dos opciones:● 1ª: Nos lo “curramos” nosotros.● 2ª: Usamos un “programa” que nos ayude.
– Deben funcionar de forma coordinada unos con otros?.
– Dos opciones:● 1ª: Nos lo “curramos” nosotros.● 2ª: Usamos un “programa” que nos ayude.
DepartamentoElectrónica
Introducción
– Necesitamos tener seguridad de que:● Reaccione ante eventos en un tiempo máximo?
– Restricciones temporales: Sistema de Tiempo Real● Se pueda recuperar ante errores leves y/o graves?
– 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 Sistema EMPOTRADOEMPOTRADO
DepartamentoElectrónica
Programación en uC
● DISEÑO DEL SISTEMA:– Hasta ahora:
● Para la atención ante eventos
Rutinas de atencióna las Interrupciones
Evento
Microcontrolador
TAREA enEJECUCIÓN
Planificaciónde
Temporicación
DepartamentoElectrónica
Programación en uC
– El desarrollo del software del sistema consistía en:
Programación de la aplicación EN SÍ
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● Además de la dependencia directa con el microcontrolador
● COMPLICADO SI EL NÚMERO DE TAREAS AUMENTA
Planificación
Programación
DepartamentoElectrónica
Programación en uC
● 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.
DepartamentoElectrónica
Programación en uC
● 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.
HARDWARE
SO
PROGRAMAS
DepartamentoElectrónica
Programación en uC● Se hace uso de funciones genéricas que ahorran trabajo.● Aumenta la seguridad ante errores simples/graves del
sistema.
– Posible error de desbordamiento de la variable “a”.– Espera activa EL SISTEMA SE PUEDE “COLGAR”
int a;while(CONDICION_VERDADERA){
a++;}
/* CONDICION_VERDADERA sucede que nunca es falsa */
DepartamentoElectrónica
Programación en uC
● Solución:
MICROCONTROLADOR+
SISTEMA OPERATIVO
DepartamentoElectrónica
SISTEMAS OPERATIVOS EN MICROCONTROLADORES
● ¿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.
DepartamentoElectrónica
SISTEMAS OPERATIVOS EN MICROCONTROLADORES
● ¿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.
DepartamentoElectrónica
SISTEMAS OPERATIVOS EN MICROCONTROLADORES
● Partes de un SO:
HARDWARE
MANEJADORES de DISPOSITIVOS
KERNEL del S. O.
HAL(Hardware Abstration Layer)
Aplicaciones de UsuarioPrograma 1
Programa 2
Programa 3
DepartamentoElectrónica
SISTEMAS OPERATIVOS EN MICROCONTROLADORES
● ¿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
DepartamentoElectrónica
SISTEMAS OPERATIVOS EN MICROCONTROLADORES
● 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.
DepartamentoElectrónica
SISTEMAS OPERATIVOS EN MICROCONTROLADORES
– Los requisitos variaran en función de la aplicación, pero como elementos básicos, son necesarios:
● Un dispositivo de almacenamiento no volátil: – Lugar donde se almacenan el SO y los programas cuando
sistema está apagado.– Memoria NVRAM, Flash...
● Memoria de ejecución: RAM – 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.
DepartamentoElectrónica
SISTEMAS OPERATIVOS EN MICROCONTROLADORES
● La Portabilidad– Los microcontroladores se pueden programar
usando:● Lenguaje Máquina:
– 000010011110111001...● Lenguajes de Bajo Nivel: ENSAMBLADOR
– MOV AX, BX● Lenguajes de Alto Nivel: BASIC, C, C++...
– 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.
DepartamentoElectrónica
SISTEMAS OPERATIVOS EN MICROCONTROLADORES
● 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.
DepartamentoElectrónica
SISTEMAS OPERATIVOS EN MICROCONTROLADORES
8051 uSPARCx86MC68K PPCAVR ARM
Sistema Operativo (KERNEL)
Compilador + Enlazador Librerias
APLICACIONES DE USUARIO
MÓDULOS
DepartamentoElectrónica
SISTEMAS OPERATIVOS EN MICROCONTROLADORES
● 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
DepartamentoElectrónica
SISTEMAS OPERATIVOS EN MICROCONTROLADORES
– 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
DepartamentoElectrónica
SISTEMAS OPERATIVOS EN MICROCONTROLADORES
– 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.
DepartamentoElectrónica
GNU/Linux - Kernel
● 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.
DepartamentoElectró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
DepartamentoElectrónica
GNU/Linux - Kernel
● 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 Usuario-Kernel.– 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.
DepartamentoElectrónica
GNU/Linux - Kernel
● 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
DRIVER deMemoria USB
USUARIO KERNEL
Aplicación MemoriaUSB
HARDWARE
DepartamentoElectrónica
GNU/Linux - Kernel
– 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
USUARIO KERNEL
Modulo del USB
Aplicación
MemoriaUSB
HARDWARE
DepartamentoElectrónica
L.Embebido - Kernel Reducido
● 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
DepartamentoElectrónica
Linux Embebido–Kernel Reducido
● 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
DepartamentoElectrónica
L.Embebido - Kernel Reducido
● Ejemplos de SO Embebidos basados en Linux para sistemas empotrados– uCLinux
– Emdebian
– RTLinux
– BlueCat
– AMIRIX
DepartamentoElectrónica
L.Embebido - Kernel Reducido
● 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... ● ...
DepartamentoElectró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?
DepartamentoElectró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..
DepartamentoElectró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.
DepartamentoElectró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.
DepartamentoElectró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 ..
Compilador y enlazador cruzados
.bin Módulos
Kernel(vmlinuz)
.c .h .. .c .h ..
.c .h ..A partir de: “mkcramfs”
“mkfs.ext2”“mkfs.jffs2”...
RootFS
DepartamentoElectrónica
Creación de una plataforma
● Carga de los ficheros en nuestro sistema empotrado:
Bootloader
Bootstrap Bootstrap
vmlinuz
Módulos
RootFS
IMAGEN (.BIN)
Bootloader
vmlinuz
Módulos
RootFS
DepartamentoElectrónica
Ejemplo: UNC20
● 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
DepartamentoElectrónica
Referencias
● 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
DepartamentoElectrónica
Referencias
● 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)
DepartamentoElectrónica
MUCHAS GRACIAS