Download sistemas operativos en microcontroladores

Document related concepts

Linux embebido wikipedia , lookup

Proceso de arranque en Linux wikipedia , lookup

Linux Unified Kernel wikipedia , lookup

Capa de abstracción de hardware wikipedia , lookup

Raspbian wikipedia , lookup

Transcript
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