Relación de Trabajos Teóricos por Grupos

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Relación de Trabajos Teóricos por Grupos"

Transcripción

1 Universidad de Las Palmas de Gran Canaria Escuela Universitaria de Informática Sistemas Empotrados y de Tiempo Real Curso Relación de Trabajos Teóricos por Grupos Proferores: Antonio Carlos Domínguez Brito y Enrique Fernández Perdomo

2 Grupo 1

3 Sistemas empotrados y de tiempo real Curso de adaptación al Grado Ingeniería Informática Escuela de Ingeniería en Informática RTAI-LINUX: REAL TIME APLICATION INTERFACE INTERFAZ PARA APLICACIONES EN TIEMPO REAL BASADA EN LINUX Grupo I Benito Santiago Martín Javier Gutiérrez Rodríguez Trabajo teórico Grupo 1 RTAI Linux Benito Santiago Martín Javier Gutiérrez Rodríguez Rayco Sosa Iglesias

4 Sistemas empotrados y de tiempo real Curso de adaptación al Grado Ingeniería Informática Escuela de Ingeniería en Informática Rayco Sosa Iglesias Trabajo teórico Grupo 1 RTAI Linux Benito Santiago Martín Javier Gutiérrez Rodríguez Rayco Sosa Iglesias

5 Sistemas empotrados y de tiempo real Curso de adaptación al Grado Ingeniería Informática Escuela de Ingeniería en Informática ÍNDICE Índice Trabajo teórico Grupo 1 RTAI Linux Benito Santiago Martín Javier Gutiérrez Rodríguez Rayco Sosa Iglesias

6 Sistemas empotrados y de tiempo real Curso de adaptación al Grado Ingeniería Informática Escuela de Ingeniería en Informática 1. Introducción Linux es un sistema derivado de Unix, con gran potencia y flexibilidad. Esto se debe a numerosas características integradas en el sistema que se encuentran disponibles tan pronto como se inicia el sistema. Las principales características son: Linux es un sistema multitareas, esto es, es capaz de ejecutar, aparentemente, más de un proceso simultáneamente. Aparentemente significa que varios procesos son capaces de ejecutarse simultáneamente a la vista del usuario, pero siempre teniendo en cuenta que el procesador solo es capaz de ejecutar una tarea. Pero sí es capaz de ejecutarlo tan rápido que el usuario no se da cuenta de ello. Linux es también un sistema multiusuario, es decir, varias personas pueden ejecutar programas a la misma vez. Linux permite Shell programables a través de un programa denominado Shell que ejecuta comandos. Linux es portable, es decir, puede ser ejecutado bajo diversas plataformas, lo que facilita la comunicación entre ellas Todas estas ventajas convierten a Linux en un sistema fiable y estable. Sin embargo, una de las desventajas de Linux es su incapacidad de garantizar el tiempo de respuesta. Y ello a pesar de incluir dentro de su código algunas librerías de tratamiento de tiempo real, que no están desarrolladas. Ello es un problema para determinadas aplicaciones actuales. Por ello algunos investigadores y desarrolladores han presentado algunas implementaciones de Linux en tiempo real. Una de ellas es RTLinux que inserta un pequeño Kernel de tiempo real por debajo del Kernel estándar y lo trata como una rutina de tiempo real. Esto genera un problema: las tareas de tiempo real operan al nivel del kernel. Consecuentemente un bug en el software podría causar daños considerables. Para evitar esto, la Universidad Politécnica de Milán, utilizó RTLinux para desarrollar RTAI Linux (Real Time Application Interface Interfaz para Aplicaciones en Tiempo Real) a. Qué es RTAI? RTAI es un implementación de Linux con licencia GNU/GPL para tiempo real basada en RTLinux. Añade un kernel en tiempo real al kernel de Linux y trata al kernel de Linux como una tarea de menor prioridad. Añade además una serie de mecanismos de comunicación entre procesos y otros servicios de tiempo real que veremos a continuación. Aunque RTAI proporciona servicios en tiempo real, conserva las características y los servicios de Linux estándar, proporcionando además un módulo que facilita el desarrollo de aplicaciones en tiempo real en el espacio de usuario. En la imagen se muestra un esquema del sistema operativo Linux con RTAI. Trabajo teórico Grupo 1 RTAI Linux Benito Santiago Martín Javier Gutiérrez Rodríguez Rayco Sosa Iglesias

7 Sistemas empotrados y de tiempo real Curso de adaptación al Grado Ingeniería Informática Escuela de Ingeniería en Informática b.arquitectu ra del RTAI La arquitectura de RTAI es similar a RTLinux: El kernel de Linux es tratado como una tarea de baja prioridad que se ejecutará cuando no hay ninguna tarea de mayor prioridad en uso. Los módulos básicos de tiempo real se implementan dentro del kernel de Linux de manera que RTAI maneja las interrupciones de los periféricos que son atendidas por el kernel de Linux después de haberse ejecutado las acciones consecuentes de las rutinas de tiempo real. Con ello se consigue que las tareas en tiempo real sean prioritarias respecto a las tareas propias de Linux y en consecuencia se ejecutarán antes. Sólo cuando no haya tareas en tiempo real ejecutándose se ejecutarán las tareas propias del kernel. Las interrupciones se originan en el procesador y en los periféricos. Las que se originan en el procesador son manejadas por el kernel estándar y las de los periféricos son gestionadas por el RTAI. Un ejemplo de las primeras podría ser la división por cero y un ejemplo de la segunda la señal de un reloj o alarma. Todas son gestionadas por RTAI. Si no hay ninguna tarea de tiempo real activa, RTAI envía la interrupción del procesador a los manejadores del kernel. Las instrucciones de activación/desactivación de interrupciones del kernel son ahora gestionadas por RTAI que las sustituye por macros enlazados a las instrucciones RTAI. Si las interrupciones del kernel estándar están desactivadas RTAI encola las interrupciones nuevas hasta que se vuelvan a activar las estándar, o lo que es lo mismo, hasta que terminen de ejecutarse las interrupciones en tiempo real. El IPC (mecanismo de comunicación entre procesos) está implementado de manera independiente en Linux y en RTAI como podemos observar en la imagen siguiente. c. HAL Hardware Abstraction Layer La HAL es un elemento del sistema operativo que funciona como interfaz entre el software y el hardware. Su objetivo es evitar que las aplicaciones accedan directamente al hardware consiguiendo un alto grado de independencia entre ellos, abstrayendo el funcionamiento del hardware y dándole Trabajo teórico Grupo 1 RTAI Linux Benito Santiago Martín Javier Gutiérrez Rodríguez Rayco Sosa Iglesias

8 Sistemas empotrados y de tiempo real Curso de adaptación al Grado Ingeniería Informática Escuela de Ingeniería en Informática al software una forma de interactuar con los requerimientos específicos del hardware sobre el que va a correr. Los desarrolladores de RTAI introducen el concepto de Real Time HAL que se usa para capturar las interrupciones hardware y procesarlas después. RTHAL es una estructura instalada en el kernel de Linux que reúne los punteros a los datos internos del hardware relacionados en el kernel y las funciones necesarias por RTAI para operar. El objetivo de RTHAL es minimizar el número de cambios necesarios sobre el código del kernel y por tanto mejorar el mantenimiento de RTAI y del código del kernel de Linux. Con RTHAL, las diferentes operaciones (como por ejemplo el manejo de interrupciones) son más fáciles de cambiar y modificar sin tener que interferir con la implementación de Linux. Por ejemplo, la estructura de RTHAL contiene la tabla de manejadores de interrupción, la cual es una lista de las funciones que son llamadas para manejar las diferentes interrupciones. El cambio consiste únicamente en modificar unas 20 líneas del código del kernel de Linux y añadir unas 50 nuevas líneas. Cuando RTHAL es instalado en Linux, las funciones y las estructuras de datos relacionadas con la interacción con el hardware son reemplazadas por punteros a la estructura de RTHAL. d. Planificación La unidad de planificación de RTAI es la tarea. Siempre hay al menos una tarea que se ejecuta como la tarea de menor prioridad, y esa es el kernel de Linux. Se añaden 7 tareas de tiempo real, con lo que el planificador da entonces mayor prioridad a éstas sobre la tarea del kernel de Linux. El planificador proporciona servicios tales como Suspend: Pausa la ejecución de una tarea. Resume: Vuelve a ejecutar una tarea pausada. Yield: Coloca la tarea preparada para su ejecución Make periodic: Hace que una tarea se ejecute periódicamente El planificador es implementado como un módulo del kernel dedicado (contrario a RTLinux) lo que facilita la implementación de planificadores alternativos si es necesario. Actualmente hay tres tipos de planificadores dependiendo del tipo de máquina: Uniprocesador (UP). El planificador Uniproceso realiza un algoritmo de programación para seleccionar la tarea que se va a ejecutar en un CPU. Como tal su funcionamiento es muy sencillo: cualquier proceso tiene una prioridad alta de tomar la CPU. En efecto es una lista de múltiple prioridades programada con soporte para herencia prioritaria. En este esquema Linux es una tarea de tiempo real, como cualquier otro pero manteniendo el nivel de menor prioridad. Trabajo teórico Grupo 1 RTAI Linux Benito Santiago Martín Javier Gutiérrez Rodríguez Rayco Sosa Iglesias

9 Sistemas empotrados y de tiempo real Curso de adaptación al Grado Ingeniería Informática Escuela de Ingeniería en Informática Multiprocesador simétrico (SMP). Está diseñado para maquinas SMP y proporciona un interfaz para las aplicaciones de forma que es posible seleccionar el procesador y procesadores que deben ejecutar una tarea. Si el usuario no especifica un procesador para la tarea, SMP selecciona el procesador en función de la carga de trabajo. Multi-Uniprocesador (MUP) Puede ser usado con ambos, pero al contrario que SMP, a las tareas se les debe especificar el procesador que deben usar. Viéndolo por el lado positivo, el planificador MUP permite unos mecanismos de tiempo más flexibles para las tareas que los planificadores SMP y UP. 2. Características y programación Con el objetivo de hacer el desarrollo de aplicaciones lo más fáciles y flexibles posibles, los desarrolladores de RTAI han introducido diferentes mecanismos para la comunicación entre procesos (IPC), entre las tareas de tiempo real y los procesos en el espacio de usuarios. Como añadido al mecanismo IPC, RTAI proporciona servicios de manejo de memoria e hilos compatibles con Posix. a. Comunicación entre procesos Unix (y por tanto Linux) provee de mecanismos de comunicación entre procesos que son similares a IPC. RTAI necesita una implementación propia para que las tareas en tiempo real usen el mecanismo IPC en lugar de los mecanismos estándar. Los mecanismos de IPC están incluidos en el kernel como módulos para ser cargados con facilidad cuando sean necesarios. Además IPC facilita la expansión y el mantenimiento. La primera implementación de RTAI incluía un mecanismo básico de comunicación entre procesos basado en FIFO, consistente en un canal de comunicación no bloqueante asíncrono entre los procesos de Linux y las tareas de tiempo real. Se basa en la implementación de RTLinux pero RTAI añade características que no son soportadas por RTLinux como por ejemplo: RTAI puede lanzar señales cuando hay eventos en el FIFO (escritura de nuevos datos). Los procesos en el espacio de usuario pueden crear un manejador para la señal por los mecanismos estándar de Unix, aunque no es necesario para los procesos de usuario que quieran leer y escribir en el FIFO. Pueden haber múltiples lectores y escritores en el FIFO Los identificadores FIFO pueden ser dinámicamente localizados con un nombre simbólico. RTLinux usaba un identificador global para la FIFO con lo cual se generaba un problema si múltiples procesos o tareas independientes lo usaban. RTAI proporciona un API para usar semáforos, aunque cada semáforo está técnicamente asociado a un FIFO, por tanto cada semáforo usa una entrada global del FIFO. Como añadido al servicio básico de semáforos, un semáforo puede estar asociado con un reloj, el cual puede ser usado para despertar un proceso encolado en un semáforo, incluso cuando el semáforo aun esté cerrado. Trabajo teórico Grupo 1 RTAI Linux Benito Santiago Martín Javier Gutiérrez Rodríguez Rayco Sosa Iglesias

10 Sistemas empotrados y de tiempo real Curso de adaptación al Grado Ingeniería Informática Escuela de Ingeniería en Informática La memoria compartida proporciona una alternativa a IPC y al paradigma FIFO cuando hace falta un modelo de comunicación diferente. La memoria compartida es un bloque común de memoria que puede ser leído y escrito por un proceso y una tarea en el sistema. Como los diferentes procesos pueden operar de forma asíncrona en la región de memoria, es necesario un diseño que asegure que los datos no sean sobre escritos de forma intencionada. Los mailboxes almacenan mensajes hasta un límite que se defina, y al contrario a los FIFOs, mailbox preserva los mensajes que están en el límite. Cualquier número de procesos pueden enviar y recibir mensaje de y desde un mailbox. Puede haber un número arbitrario de mailbox activos en el sistema simultáneamente. RTAI también facilita la comunicación entre procesos mediante RPC. b. Gestión de Memoria En las primeras versiones de RTAI la memoria se asignaba de manera estática, y por tanto no era posible asignarla en tiempo real. Actualmente se incluye un módulo que asigna la memoria dinámicamente por parte de las tareas de tiempo real a través de librerías C. RTAI asigna trozos de memoria antes de la ejecución de tiempo real. Cuando la tarea de tiempo real llama a la función rt_malloc() lo que obtiene es el trozo pre-asignado. Para evitar que el espacio asignado se agote, RTAI reserva otro espacio de memoria que pueda usarse en futuras llamadas. Lo mismo ocurre con la liberación de memoria a través de la función rt_free(): Se libera la memoria pre-asignada a la espera de futuras reservas. Suele establecerse un valor máximo de memoria liberada. Cuando se supera dicho valor, se ordena su liberación. c. Threads Posix RTAI tiene módulos que proporcionan la implementación de hilos de acuerdo al estándar POSIX c. Usando las operaciones especificadas en el estándar, el usuario puede manejar de manera similar a como lo hace con los threads posix convencionales, excepto en cuanto a los conceptos de joining y detaching Los hilos de un mismo proceso comparten el espacio de memoria, por tanto es fácil el intercambio de información entre ellos, sin embargo, el uso de áreas de memoria compartida son necesarias para la sincronización. También se proporcionan el mecanismo de mutex y de variables de condición. d. LXRT - User-space Interface to RTAI LXRT es un API para RTAI que hace posible el desarrollo de aplicaciones de tiempo real en el espacio de usuario sin tener que crear módulos para el kernel. Esto es útil por dos motivos: 1. El espacio de memoria destinado al kernel no está protegido de accesos inválidos. Consecuentemente el acceso indebido puede provocar la corrupción de datos y el mal funcionamiento del kernel de Linux. Trabajo teórico Grupo 1 RTAI Linux Benito Santiago Martín Javier Gutiérrez Rodríguez Rayco Sosa Iglesias

11 Sistemas empotrados y de tiempo real Curso de adaptación al Grado Ingeniería Informática Escuela de Ingeniería en Informática 2. En caso de que el kernel deba ser actualizado, los módulos necesitan se recompilarán y ello puede provocar incompatibilidades con la nueva versión. Mientras se desarrolla una aplicación de tiempo real en el espacio de usuario el programador puede usar las herramientas estándar de depuración hasta que ya no contienen errores, pero en este caso se trata de procesos de tiempo real flexibles (soft, aquellos que si bien cumplen unas restricciones temporales, éstas no son rígidas). Además, los servicios proporcionados por las llamadas al sistema de Linux están disponibles para las tareas. La ventaja de esto es que cuando la aplicación está libre de errores puede convertirse a un módulo en el espacio del kernel, por lo que ya tendremos una tarea de tiempo real estricto. Sin embargo, al hacer esto, las llamadas al sistema utilizadas no sirven y deberán ser cambiadas por las proporcionadas por RTAI. El cambio de la aplicación de procesos del espacio de usuario a tareas de tiempo real es fácil porque LXRT proporciona un API simétrico para la comunicación entre procesos y otros servicios de RTAI, lo que significa que el mismo API puede ser usado por las tareas de tiempo real y por los procesos del espacio de usuario. El mismo API de LXRT puede ser también usado cuando 2 procesos del espacio de usuario y 2 tareas de tiempo real se comunican entre sí, lo cual implica que varios relojes y mensajes del sistema proporcionados por LXRT puedan ser usados incluso cuando la aplicación no requiera tiempo real. LXRT permite a las aplicaciones el intercambio dinámico entre tiempo real flexible y rígido mediante el uso de una simple llamada en el espacio de usuario. Cuando una aplicación está en el modo de tiempo real flexible, usa el planificador de Linux, pero requiere el uso de la política de planificación FIFO. Sin embargo la planificación de procesos FIFO puede provocar la pérdida de ranuras de tiempo por varias razones, por ejemplo, porque se está ejecutando un manejador de interrupciones y el planificador de tareas de RTAI. Con el objetivo de facilitar el paso a tiempo real rígido, LXRT crea un agente en el espacio del kernel para cada proceso del espacio de usuario con requerimientos de tiempo real. Cuando el proceso entra en modo de tiempo real rígido, el agente desactiva las interrupciones, y mueve al proceso fuera del planificador de Linux y lo añade a la cola del planificador de RTAI. Ahora el proceso no es interrumpido por las interrupciones de otro proceso Linux. Para poder realizar este cambio el proceso debe asegurar que la memoria usada por el proceso esté en la memoria RAM y debe desactivar la paginación usando la función mlockall(). Esta llamada no debe ser usada en modo tiempo real rígido ya que el tiempo de respuesta no es tan bueno y el acceso a memoria RAM pertenece al kernel estándar de Linux y por tanto se ejecutará con la menor prioridad, siendo susceptible a quedar aletargada por otras tareas de tiempo real. Trabajo teórico Grupo 1 RTAI Linux Benito Santiago Martín Javier Gutiérrez Rodríguez Rayco Sosa Iglesias

12 Sistemas empotrados y de tiempo real Curso de adaptación al Grado Ingeniería Informática Escuela de Ingeniería en Informática Aunque los desarrolladores de RTAI ven bien el desarrollo de aplicaciones de tiempo real rígido usando LXRT, el tiempo de respuesta no es tan bueno como la ejecución de las tareas como módulos del kernel. 3. Conclusiones La característica más destacable de RTAI es que no se trata de un sistema operativo de tiempo real en sí, sino de un conjunto de módulos se instalan en el kernel de Linux además de un desarrollador para implementar más módulos. Con ello conseguimos dotar a un sistema operativo fiable y estable con herramientas no implementadas de tiempo real como es Linux de una serie de rutinas para que pueda tener capacidades de tiempo real. La principal ventaja de esta implementación es que permite que cada usuario adapte el sistema a sus necesidades, desarrollando más módulos, que una vez compilados y probados, si están libres de errores, pueden ser incorporados también al kernel. Por tanto, RTAI es una solución software que ofrece soluciones de tiempo real a un sistema operativo como Linux. Actualmente RTAI es uno de los sistemas operativos en tiempo real más usados. a. Aplicaciones actuales Las aplicaciones en la actualidad son múltiples, en especial en el área del control, robótica y para sistemas militares, en sistemas que requieren toma de datos y procesamiento de éstos en tiempo real. Este sistema de tiempo real fue diseñado ante la necesidad de contar con un sistema flexible y de gran capacidad para realizar control de sistemas, en tiempo real. Se utiliza ampliamente en todos los sistemas de control, por ejemplo, control de plantas, motores, y para el monitoreo de todo tipo de sistemas, ya sean médicos, de medición, y otros. En la robótica se deben tomar mediciones del medio y procesar dicha información para después usar tal información para tomar decisiones en tiempo real. También es bastante utilizado en sistemas militares donde se requiere gran capacidad de cómputo para tomar una decisión en tiempo real ante la toma de datos del exterior. También puede ser usado como watchdog, es decir, como mecanismo de seguridad. Además puede ser usado para evitar que ninguna tarea acapare el procesador por culpa de un mal comportamiento. En este momento otra área en que se está utilizando con gran amplitud el RTAI son los wireless sensor network, sensores de red inalámbricos que permiten la creación de redes ah-hoc sin estructura física ni administración central. Con el gran crecimiento de los sistemas integrados y del control digital, podemos decir que en este momento muchos sistemas electrónicos de última tecnología cuentan u operan con este sistema, ya que gracias a su flexibilidad permite su implementación en varios procesadores, así como el desarrollo de aplicaciones propias. b. Desarrollos Futuros RTAI continúa creciendo y madurando a través de la contribución combinada de equipos de desarrolladores, quienes están animados por la arquitectura flexible y alto performance. Mientras esta extensión de Linux en tiempo real es muy capaz, estable y maduro hoy en día, el trabajo está lejos de haber terminado. Existen muchos proyectos futuros, entre ellos: Portabilidad de RTAI a otras arquitecturas: Actualmente RTAI soporta las arquitecturas i386, amd64, PowerPC y ARM (StrongARM, ARM7, clps711x, Cirrus Logic EP7xxx, CS89712, PXA25x). Desarrollo de macros en C++ para RTAI Trabajo teórico Grupo 1 RTAI Linux Benito Santiago Martín Javier Gutiérrez Rodríguez Rayco Sosa Iglesias

13 Sistemas empotrados y de tiempo real Curso de adaptación al Grado Ingeniería Informática Escuela de Ingeniería en Informática Sistemas de archivos RAM en tiempo real: Se trata de crear un sistema de archivos de arranque que funcionará desde la RAM y que incluirá todos los programas que permiten el arranque del sistema, solo que este sistema de archivos permite el uso de características en tiempo real. Integración de RTNet y de Linux Trace Toolkit: RTNet es un protocolo de red de tiempo real rígido de la pila de protocolos de red de Xenomai y RTAI. Es compatible con Ethernet y con los chips de la NIC Gygabit Ethernet. Además se está desarrollando el Ethernet sobre 1394 (Firewire o IEEE) sobre la base de la pila de protocolos de RTFire-Wire. Linux Trace Toolkit (LTT) es un conjunto de herramientas diseñadas para registrar los detalles del programa de ejecución de un parche del kernel de Linux y luego realizar diversos análisis sobre ellos. Está basado en la consola y gráfica. Uso de los servicios de RTAI en RTLinux Entornos de desarrollo estándar para tiempo real Interrupciones multi-prioridad: Hay interrupciones que deben evaluarse con prioridades diferentes. Referencias API, 7 asignación de memoria, 7 características, 7 FIFO, 7 HAL, 5 A C F H I LXRT, 8, 9 mailboxes, 7 Make periodic, 6 memoria, 7 memoria compartida, 7 Multiprocesador simétrico, 6 Multi-Uniprocesador, 6 L M P planificación de RTAI, 6 POSIX, 8 procesos de tiempo real flexibles, 8 implementación de hilos, 8 interrupciones, 4 IPC, 4, 6 kernel, 4 K Resume, 6 rt_free():, 8 RTAI, 4 RTHAL, 5 R S servicios, 6 Trabajo teórico Grupo 1 RTAI Linux Benito Santiago Martín Javier Gutiérrez Rodríguez Rayco Sosa Iglesias

14 Sistemas empotrados y de tiempo real Curso de adaptación al Grado Ingeniería Informática Escuela de Ingeniería en Informática Suspend, 6 threads posix, 8 Uniprocesador, 6 Yield, 6 T U Y Trabajo teórico Grupo 1 RTAI Linux Benito Santiago Martín Javier Gutiérrez Rodríguez Rayco Sosa Iglesias

15 Sistemas empotrados y de tiempo real Curso de adaptación al Grado Ingeniería Informática Escuela de Ingeniería en Informática Trabajo teórico Grupo 1 RTAI Linux Benito Santiago Martín Javier Gutiérrez Rodríguez Rayco Sosa Iglesias

16 Sistemas empotrados y de tiempo real Curso de adaptación al Grado Ingeniería Informática Escuela de Ingeniería en Informática Bibliografía Wikipedia: y Página oficial RTAI: Módulos RTAI: Guía de programación de RTAI: Capa de abstracción de hardware: %C3%B3n_de_hardware Trabajo teórico Grupo 1 RTAI Linux Benito Santiago Martín Javier Gutiérrez Rodríguez Rayco Sosa Iglesias

17 Grupo 2

18 Sistemas de tiempo real RTLinux Grupo 2 Alberto Benítez Suárez Héctor Santana Alemán Kilian González Suárez Índice 1

19 Introducción... 3 Multitarea... 3 Qué es?... 3 Historia y evolución... 3 Situación actual... 3 Ámbitos de aplicación... 4 Características básicas... 5 Cómo funciona?... 6 Arquitectura... 6 Planificación... 7 Interrupciones... 8 Manejo de memoria... 9 Tareas de tiempo real... 9 Comunicación entre tareas Comparativa de rendimiento Desarrollo de aplicaciones en tiempo real Conclusión Bibliografía RTLinux: Introducción 2

20 Un sistema operativo de tiempo real se basa en la idea de que no sólo es preciso obtener una salida correcta sino que además es preciso obtenerla dentro de unos márgenes de tiempo adecuados porque sino nos será completamente inútil. Multitarea En estos sistemas concurren múltiples procesos que deben de tenerse en cuenta a la hora de cumplir las especificaciones de tiempo. La mayoría de estos procesos nos serán necesarios en el control de las aplicaciones pero otros no y debemos procurar que no afecten al rendimiento de nuestro sistema de control. Así para manejar los sistemas en tiempo real multitarea podemos optar por aprovechar las ventajas de un sistema operativo que nos facilite la gestión de los recursos. El problema es que normalmente no podremos hacer predicciones sobre tiempos de proceso dentro de los mismos por lo que tendremos que optar por sistemas operativos específicos que sí sean predecibles. Qué es? RTLinux es un sistema operativo de tiempo real multitarea que ejecuta Linux como un thread (hilo de ejecución) de menos prioridad que las tareas de tiempo real. Con este diseño, las tareas de tiempo real y los manejadores de interrupciones nunca se ven retrasados por operaciones que no son de tiempo real. Historia y evolución RTLinux nació del trabajo de Michael Barabanov y Victor Yodaiken en New Mexico Tech, que posteriormente fundaron FSM Labs ofreciendo soporte técnico. En febrero de 2007, Wind River adquirió FSM labs. RTLinux se distribuye bajo la "GNU Public License". Recientemente Victor Yodaiken ha patentado la arquitectura original en la que se basa RTLinux. A partir del código de Yodaiken, se está desarrollando otro proyecto liderado por P. Mantegazza llamado: " Real Time Application Interface" RTAI Las primeras versiones de RTLinux ofrecían un API muy reducido sin tener en cuenta ninguno de los estándares de tiempo real: POSIX Real-Time extensions, PThreads, etc. A partir de la versión 2.0 Victor Yodaiken decide reconvertir el API original a otro que fuera "compatible" con el API de POSIX Threads. El documento design explica las líneas generales de la adaptación al estándar. Situación actual Actualmente Wind River tras absorber FSMLabs en 2007 es la propietaria de RTLinux, recientemente ha liberado una nueva versión de RTLinuxFree con soporte para la serie 2.6 del kernel de Linux. RTLinuxFree proporciona el API de POSIX threads, manejadores de interrupciones, métodos de sincronización y mecanismos de comunicación entre tareas de tiempo real y tareas no críticas. Por otra parte desde 2003 OS3 mantiene un acuerdo con FSMLabs que le autoriza a soportar y distribuir todos sus productos en España y Portugal, es una compañía valenciana dedicada al desarrollo e implantación de sistemas de tiempo real con RTLinux. OS3 ha implementado el soporte del kernel 2.6 para RTLinuxFree. También existen productos comerciales para tiempo real de FSMLabs (RTLinuxPro y RTCore BSD) ya soportan los kernel 2.6 desde hace algún tiempo y la compañía ha decidido que esta tecnología pase a estar accesible en la versión libre. 3

21 Las principales diferencias entre la versión gratuita y la versión de pago las podemos observar en la siguiente tabla comparativa: Open RTLinux Wind River RTCore Compatibilidad con el kernel de Linux 2.4/ Licencia GPL Sí No Código fuente incluído Sí Sí Soporte comercial No Sí Kernel de tiempo real testeado y validado No Sí Distribución de linux incluída No Wind River Linux Herramientas de desarrollo incluidas No Wind River Workbench Ámbitos de aplicación Los sistemas en tiempo real están presentes en nuestra vida diaria, prácticamente en todo lo que nos rodea; en los aviones, trenes y automóviles; en el televisor, la lavadora o el horno de microondas, en la telefonía móvil y en las centrales telefónicas digitales. Son un elemento imprescindible para garantizar la generación, transmisión y distribución de la energía eléctrica y para asegurar la calidad y la seguridad de incontables procesos industriales. La Agencia Espacial NorteAmericana (NASA), utiliza RTLinux para control de misiones, Fujitsu lo utiliza en control de robots, ha sido implantado para control de grandes telescopios y otros proyectos científicos, y SIEMENS ha automatizado su factoría de EEUU con RTLinuxPro. Características básicas Utiliza RTCore que está basado en el estándar POSIX y tiene una estructura modular. Funciona sobre arquitecturas PowerPC, i386, y Alpha. Existe una versión para multiprocesadores, con la posibilidad de asignar tareas a procesadores. Planificador de prioridades estáticas: Sin protección a planificaciones imposibles. Otros posibles planificadores (EDF, RMS,...) 4

22 Tareas con memoria estática: Sin paginación. Sin protección de direcciones de memoria. Memoria compartida: Comunicación entre tareas. Comunicación entre tareas RT y procesos Linux. Acceso directo al hardware: Puertos E/S, memoria, Permite deshabilitación de interrupciones hardware. Colas FIFO para comunicación con procesos LINUX. LINUX: tarea de más baja prioridad. No hay protección de sobrecargas del procesador: Tareas con más baja prioridad se cuelgan (Linux). Facilidad para incorporar nuevos componentes: Relojes, dispositivos E/S, planificadores,... Eficiente gestión de tiempos. Como funciona? Arquitectura (Linux regular) (RTLinux) 5

23 RTCore (kernel RTLinux en tiempo real) soporta POSIX PE51. RTCore puede ejecutar un sistema operativo secundario como si fuese un hilo, usando una pequeña máquina virtual para mantener el sistema secundario con las interrupciones desactivadas. Hay 3 modificaciones principales en el kernel de Linux con el objetivo de que RTLinux tenga el control del hardware de la máquina: Control directo de las interrupciones hardware por RTLinux. Control del reloj hardware e implementación de un reloj virtual para Linux. El control de las interrupciones por parte de Linux es reemplazado por 2 funciones que permiten activar ó desactivar las interrupciones, pero las virtuales. RTLinux proporciona un entorno de ejecución bajo el kernel de Linux, como consecuencia de esto, las tareas de tiempo real no pueden usar los servicios de Linux. Para disminuir este problema, el sistema de tiempo real se ha divido en dos partes: la capa de tiempo real estricto que ejecuta encima de RTLinux, y la capa de tiempo real flexible, que ejecuta como un proceso normal de Linux. Para la comunicación de ambas capas se pueden usar varios mecanismos (FIFO, memoria compartida). La propuesta de 2 capas es un método útil para proporcionar tiempo real estricto mientras se mantienen las características de escritorio de un sistema operativo. La separación del mecanismo del kernel de tiempo real del mecanismo del kernel de Linux de propósito general permite optimizar ambos sistemas de forma independiente. Planificación Normalmente no se puede elegir la plantificación en un sistema operativo, no obstante, para aumentar la flexibilidad de RTLinux, Yodaiken y Barabanov optaron por incluir varias políticas de 6

24 planificación para que los administradores del sistema eligieran la más adecuada a sus requerimientos de tiempo. La primera fue desarrollada por Victor Yodaiken y se trata de una planificación en la que una tarea lista para ejecución puede desalojar del procesador a otra de menor prioridad. En esta política asignamos una prioridad fija a cada tarea y se ejecutarán según estén listas por orden de prioridad. Además podremos también implementar un gestor de interrupciones que se despierte cuando sea necesario. Con esta política podemos usar el algoritmo de planificación de tasa creciente (Rate Monotonic) y gestionar así todas las prioridades. El otro planificador que podemos usar fue implementado por Ismael Ripoll y usa el algoritmo de Earliest Deadline First. Este algoritmo asigna las prioridades de forma dinámica de forma que se le da la máxima prioridad a la tarea cuyo plazo de finalización esté más cercano. El planificador por defecto que viene con RT-Linux es un planificador basado en prioridades estáticas y trata a la tarea Linux como la tarea de menor prioridad. Si las tareas de tiempo real consumen todo el tiempo del procesador, entonces la tarea Linux no recibe tiempo de procesador y da la impresión de que el sistema se ha "colgado". Con RT-Linux tenemos a la vez un sistema de tiempo real y un S.O. clásico. Podemos navegar por la red a la vez que estamos muestreando y controlando un proceso físico. Rate-monotonic El planificador Rate-monotonic le da prioridades estáticas a las tareas periódicas que están planificadas. Si una tarea tiene un periodo corto - eso es, que será ejecutada a menudo, el planificador le dará una prioridad mayor. Las tareas con periodos más largos tendrán menor prioridad. Si la CPU está ejecutando una tarea de baja prioridad cuando llega la hora de ejecutar una tarea de mayor prioridad, el planificador sustituirá la tarea en ejecución y comenzará a ejecutar la tarea de mayor prioridad. Si un conjunto de tareas periódicas puede ser planificado asignando prioridades estáticas, el planificador Ratemonotonic será capaz de hacerlo. La desventaja del planificador Rate-monotonic es que no siempre puede garantizar que sea posible planificar un conjunto de tareas, o mejor dicho, no puede maximizar siempre el uso de la CPU. Earliest-Deadline-First (EDF) Una gran diferencia entre el planificador Earliest-Deadline-First (EDF) y el Rate-monotonic es que el EDF tiene prioridades dinámicas. Las prioridades son dinámicas de modo que la tarea con menor límite de tiempo para su finalización tiene la prioridad más alta y reemplazará a cualquier otra tarea en ejecución. Los procesos planificados por EDF no tienen que ser periódicos o requerir una constante cantidad de tiempo de la CPU. Teóricamente la planificación EDF es óptima, lo cual significa que puede planificar procesos que acabarán dentro de sus límites de tiempo usando todo el tiempo de CPU disponible. Interrupciones Cuando llega una interrupción Hardware al núcleo, RTLinux la intercepta y si no existe una tarea de tiempo real la pasa al núcleo de Linux. De lo contrario espera a que la tarea de tiempo real termine para pasarla al núcleo. Con esta forma de implementar el tiempo real lo que hicieron Yodaiken y Barabanov fue dotar al sistema de un núcleo de tiempo real que se situaba en el espacio del kernel de Linux y que actuaba de intermediario entre el Hardware y Linux. 7

25 Desde este nuevo esquema, el núcleo de Linux pasa a ser una tarea más a ejecutar por el núcleo de RTLinux. Así no tendremos un núcleo que exclusivamente trabaje en tiempo real o de forma normal, sino que podremos elegir las características de nuestro sistema en tiempo de ejecución. Las características temporales para el trabajo en tiempo real las obtenemos sacrificando algunas otras cualidades del núcleo. Entre otras cosas nuestro núcleo de tiempo real no pedirá memoria ni realizara ningún tipo de sincronización con el núcleo de Linux, salvo en contadas ocasiones. Estas ocasiones son obligadas ya que no es posible ni beneficioso que el núcleo en tiempo real no se comunique con el núcleo de Linux. El mecanismo de comunicación entre procesos sera mediante colas FIFO. En estas comunicaciones la sincronización nunca bloqueara el núcleo de RTLinux, ni lo hará esperar para escribir o leer de una cola. La clave a la hora de diseñar un sistema en tiempo real con RTLinux es diseñar las aplicaciones de forma que solo usemos el núcleo en tiempo real cuando nos sea estrictamente necesario y aprovechemos al máximo el núcleo sin tiempo real para la tareas no críticas. Así por una parte usaremos las funciones de un sistema en tiempo real asegurándonos de la realización correcta de las tareas críticas y por otra parte utilizamos un sistema Linux para la ejecución de tareas no críticas como el almacenamiento en disco, inicialización de dispositivos, comunicación con el usuario, etc. Con esto esperamos cumplir todas las especificaciones temporales de un sistema en tiempo real con la confiabilidad que nos aporta un sistema Linux. En resumidas cuentas podemos considerar a RTLinux como un micronúcleo que se encarga de la gestión de interrupciones y de la planificación de prioridades de tareas y dispositivos críticos. Manejo de memoria en RTLinux Todos los procesos regulares (que no sean de tiempo real) son manejados por el kernel regular de Linux. En este documento nos vamos a centrar en el kernel de tiempo real así que omitiremos el manejo de la memoria por parte del kernel regular. RTLinux está construido para usar un procesador con soporte para unidad de manejo de memoria, pero no hay protección implementada para la misma (la memoria). Protección de la memoria Las tareas de tiempo real se ejecutan en el espacio del kernel lo cual significa que los tiempos de respuesta son muy cortos. Por otro lado no hay protección de memoria en el kernel así que se vuelve menos seguro. Traducción de direcciones Como se ha mencionado arriba, el kernel de RTLinux no tiene protección de memoria y, además tampoco usa memoria virtual. Esto significa que la dirección lógica es la misma que la física. A esto se le denomina direccionamiento real. Todo esto es para lograr el propósito de hacer el kernel de tiempo real tan previsible como sea posible y reducir la posibilidad de retardos inesperados. Direccionamiento de memoria El direccionamiento de memoria dinámico no es posible. Toda la memoria que un hilo quiera usar tiene que estar ubicada antes de que los hilos de tiempo real comiencen. Tareas de tiempo real 8

26 Para introducir nuestras tareas de tiempo real en el espacio del núcleo aprovecharemos la característica modular del kernel de Linux y cargaremos nuestras tareas de tiempo real en forma de módulos de forma que se ejecutarán todas en el espacio del núcleo. De hecho como ya hemos mencionado el propio RTLinux se carga como un módulo. Como consecuencia de esta arquitectura debemos realizar un gran esfuerzo de programación ya que si cometemos algún error podemos bloquear todo el sistema. No obstante, desde un punto de vista práctico, un sistema en tiempo real en general tiene que lidiar con periféricos y en ellos es vital no cometer errores en la programación puesto que podemos estropearlos, por tanto este inconveniente no es tan grave. Otro de los peligros de la arquitectura de RTLinux esta en un mal dimensionamiento de las tareas críticas. Uno de los errores más comunes consiste en que siempre halla una tarea crítica ejecutándose ya que el núcleo de Linux no conseguirá nunca el procesador y nos dará la impresión de que el sistema está bloqueado. No hay que olvidar que el núcleo de Linux es como una tarea de mínima prioridad dentro de un pequeño sistema RTLinux. Además debemos tener siempre en cuenta que una tarea de Linux nunca podrá hacer esperar a una tarea del núcleo de RTLinux ni podrá bloquear las interrupciones de este. Así el núcleo de RTLinux siempre estará disponible para atender a cualquier tarea que le llegue independientemente del estado del núcleo de Linux. Comunicación entre diferentes tareas Los Real-Time FIFOs son un mecanismo de comunicación entre tareas de tiempo real y procesos convencionales de Linux. Funcionamiento similar al de los pipes. Se garantiza que en ningún momento las tareas de tiempo real se quedarán bloqueadas al intentar leer o escribir sobre una RT-FIFO. Si la lectura o escritura no se puede realizar las funciones devuelven un flag de error. Se evita el problema de la "inversión de prioridades". Las tareas de tiempo real son las únicas que pueden crear y destruir RT_FIFOS. Las RT-FIFOS tienen un reflejo en el sistema de ficheros como dispositivos especiales. Las tareas de tiempo real acceden a las RT-FIFO mediante llamadas especiales. Las RT_FIFO se identifican mediante un entero. Los procesos de linux acceden con las llamadas convencionales para la lectura y escritura sobre ficheros. 9

27 La comunicación entre los procesos del núcleo de Linux y RTLinux debe ser muy cuidada y reducida en la medida de lo posible, no obstante, hay que proporcionar algún tipo de comunicación entre ellos para no imponer demasiadas restricciones al sistema. Ahora bien, tenemos que tener en cuenta que el núcleo de Linux será interrumpido en cualquier momento por el núcleo de tiempo real y por tanto no podremos ejecutar rutinas de Linux desde RTLinux de forma segura. Para la intercomunicación de procesos usaremos simples colas FIFO a las que llamaremos RT- FIFO para distinguirlas de las colas FIFO del API de Linux. El número de estas colas está limitado a 64, no obstante lo podremos cambiar a la hora de recompilar el kernel y aumentar hasta 248 con una simple modificación del código fuente. La API de RTLinux incluye funciones para la creación, lectura y escritura de estas colas además de asegurar que la lectura y escritura sean operaciones atómicas, evitando así el problema de inversión de prioridad. Para el kernel de Linux no obstante estas colas se verán como dispositivos de carácter, esta forma de implementar las colas le permite a los usuarios de Linux una comunicación total con el núcleo de RTLinux. En la última versión disponible de RTLinux se implementa también la comunicación mediante cola de mensajes que nos da un mayor control en la comunicación permitiéndonos definir el tamaño de los mensajes. No obstante la API de esta nueva característica aun no se encuentra lo suficientemente bien documentada. Comparativa de rendimiento 10

28 RTLinux provee la capacidad de ejecutar tareas especiales de tiempo real y manejadores de interrupciones en la misma máquina como si fuese un Linux estándar. Esas tareas y manejadores se ejecutan cuando es necesaria su ejecución independientemente de lo que Linux esté haciendo. El peor caso de tiempo entre el momento en el que una interrupción del hardware es detectada por el procesador y el momento en el que el manejador de interrupciones comienza a ejecutarse es inferior a 15 microsegundos en un RTLinux funcionando bajo una arquitectura genérica x86. Una tarea periódica de RTLinux se ejecuta en 35 microsegundos de su tiempo planificado en el mismo hardware. Esos tiempos están limitados por el hardware, y si el hardware los mejora también lo hace RTLinux. El Linux estándar se toma hasta 600 microsegundos para iniciar el manejador y puede pasarse fácilmente en más de 20 milisegudos (20000 microsegundos) para una tarea periódica. Tomando como partida un Pentium de 120MHz se ha comprobado el funcionamiento sobre linux estándar y RTLinux. Un primer test que compara el jitter (ruido, fluctuación de la señal) periódico que se genera en una señal de 40 milisegundos, y un segundo test que compara la latencia de interrupciones para linux estándar. La señal de tarea fue ejecutada cuando la máquina estaba sujeta a diferentes condiciones de carga. La media del jitter periódico fue de 185 microsegundos para linux estándar y reducido a 1,75 microsegundos para RTLinux. La latencia de interrupciones de tarea fue también ejecutada bajo las mismas variaciones en las condiciones de carga. La latencia varió de 20 microsegundos a 4800 microsegundos usando linux estándar y fue reducida a un rango de 2,4-4,4 microsegundos cuando la máquina estaba ejecutando RTLinux. Estos resultados fueron obtenidos midiendo las transiciones de los pines del puerto paralelo y las transiciones de las peticiones de la línea de interrupción con una medida periódica del timer del hardware. Desarrollo de aplicaciones en tiempo real RTLinux cumple el perfil PSE51 del estándar POSIX Las primeras versiones de RTLinux ofrecían un API muy reducido sin tener en cuenta ninguno de los estándares de tiempo real: POSIX Real-Time extensions, PThreads, etc. A partir de la versión 2.0 Victor Yodaiken decide reconvertir el API original a otro que fuera "compatible" con el API de POSIX Threads. Los sistemas de tiempo real mínimos habitualmente son sistemas empotrados en otros sistemas mayores, en el que realizan una o varias funciones específicas. No requieren interacción con el usuario, ni un sistema de ficheros. El modelo de programación consiste en un único proceso (que corresponde con el espacio de direcciones del procesador hardware) que contiene uno o varios threads de control. El modelo hardware para este perfil asume un único procesador con su memoria correspondiente, impide en estos sistemas la implementación de procesos con espacios de direcciones separados [ ]. 11

29 Los AEP (Application Environment Support) de POSIX de Tiempo Real describen los entornos de aplicación necesarios para la construcción y ejecución de programas de aplicación en tiempo real portables. El perfil de entorno de aplicación de un sistema de tiempo real mínimo se define en el estándar PSE51. En él se especifican los servicios necesarios que han de cumplir estos sistemas para conseguir la conformidad correspondiente con el estándar. Los creadores de este estándar han intentado capturar las funcionalidades predominantes en los sistemas de tiempo real ya existentes, y consideraron características de los núcleos de varios sistemas comerciales. Tras este análisis, concluyeron que el modelo más extendido en ciertas áreas de la industria de sistemas empotrados era el de threads definido en POSIX.1. Así mismo, se consideró suficiente el dispositivo básico de entrada salida (read, write, open, close, control) en vez de un sistema completo de ficheros. El soporte multiproceso fue descartado [ ]. Conclusión Tras haber estudiado con detenimiento este sistema de tiempo real, podemos decir que logra su cometido aunque dejando caer un gran peso sobre el desarrollador a la hora de crear tareas para el mismo pues es muy fácil que surja algún tipo de problema si no se tienen en cuenta ciertos detalles como la desprotección de la memoria y las prioridades. Un gran punto a favor de RTLinux es que está disponible para todo el mundo pues aporta una versión gratuita y al venir con el código fuente podremos adaptarlo a nuestro gusto. La idea de ejecutar linux como una máquina virtual dota al sistema de todas las capacidades de un sistema operativo genérico completo de modo que se nos abre un gran abanico de posibilidades a la hora de usarlo en nuestros proyectos. Bibliografía Wikipedia: pre2/documentation/tex/sa-rtl.pdf 12

30 Grupo 3

31 Ángel Herrera Falcón Juan Daniel Cabrera Sánchez Daniel Pérez Mendoza μclinux

32 Índice Introducción. 3 Características. 4 Razones para usar μclinux. 5 Diferencias entre Linux y μclinux. 6 Librería estándar C. 6 Ahorro en el consumo de energía. 7 Servicios de tiempo real. 8 Microcontroladores y microprocesadores que utiliza μclinux. 9 Empresas que comercializan dispositivos que trabajan bajo μclinux. 10 Conclusión. 11 Índice de palabras cruzadas 12 Referencias. 13 μclinux 2

33 Introducción Un sistema empotrado es un sistema informático construido dentro de otro dispositivo con una funcionalidad concreta. Se diferencia del PC en que los sistemas empotrados carecen de grandes memorias y procesadores ya que están destinados a una función concreta. Qué es μclinux? μclinux es un sistema operativo empotrado basado en el Kernel de Linux. Fue desarrollado para microcontroladores sin MMU⁶ (Unidad de gestión de memoria). Gracias a la fama que están ganando los sistemas empotrados, μclinux ha sido incluido en la versión principal del Kernel de Linux, la 2.6. El hecho de que μclinux haya sido creado para soportar microprocesadores sin MMU, hace que la multitarea sea difícil de implementar. Historia El primer μclinux surgió en 1988 para el procesador de Motorola 68328, probado en la Palm Pilot II. Fue basado en la versión 2.0 del Kernel de Linux, siendo un código reescrito para arquitecturas sin MMU. Un año más tarde, una nueva arquitectura es soportada por μclinux, la ColdFire, también de Motorola. Muchas mejoras se le hicieron al sistema, como actualizaciones y soporte para nuevas arquitecturas, tanto es así que, una vez fue lanzada la versión 2.4 del Kernel de Linux, los creadores de μclinux ofrecieron parches para que los diferentes programadores que deseaban tener μclinux a partir de Linux 2.4 lo pudieran hacer. En 2004, se produjo un hito en la historia de μclinux, ya que gran parte del proyecto μclinux fue incluido en la nueva versión del Kernel de Linux, la versión 2.6. μclinux 3

34 Características Entre las características que saltan a la vista de μclinux está que éste cuenta con API de Linux común. Además viene equipado con un completo stack TCP/IP, junto con el soporte para muchos protocolos de red adicionales. La mayoría de los protocolos de red están implementados y listo para usarse. Además es un sistema operativo apto para Internet y sistemas embebidos, donde no se necesita de una arquitectura de high performance. Se tiene soporte para varios sistemas de archivos tales como: NFS, ext2, fat32, romfs, jffs, y muchos más gracias al sistema de archivos virtual que desciende de Linux. Las características de μclinux son: Linux Kernel 2.0,2.4 o 2.6 Es un Sistema Operativo multitarea con arquitectura modular. Soporta protocolos de red tales como TCP/IP, PPP, SLIP. Su sistema de ficheros soporta: nfs, ext2, y fat32. API Linux Dispone de la biblioteca estándar de C(libc): uclibc⁹. Además, soporta concurrencia, y comunicación de procesos. Programas del sistema: Dispone de programas en el sistema tales como: shell, medir, cp, mount,.. Aplicaciones de usuario: Dispone también de servidor web, servidor FTP, y cliente de correo. μclinux 4

35 Razones para usar μclinux Una vez comentadas las principales características veremos las ventajas que nos ofrecen para implementar μclinux en nuestros sistemas empotrados: Linux Conectividad IP incluida, fiabilidad, portabilidad, manejo de numerosos sistemas de archivos (NFS, ext2, fat32, romfs, jffs ), software libre o gratuito. Peso liviano Podemos llegar a obtener un kernel de Linux 2.6 en menos de 300 KB, además, los binarios¹ son mucho más pequeños con la librería uclibc, siendo muchos de ellos reescritos. Ejecución en el lugar No se necesita cargar los ejecutables en memoria RAM ya que pueden correr directamente en memoria ROM. Es de tener en cuenta que la ejecución será más lenta. Más barato Los núcleos ARM sin MMU son aproximadamente un 30% más pequeños. Un gran número de aplicaciones en sistemas embebidos no necesitan MMU. Rápido Los cambios de contexto² son bastante rápidos. Acceso del usuario al Hardware Las aplicaciones de usuario pueden acceder al sistema entero, incluyendo los registros de dispositivo. APIs de linux completas Se pueden usar la mayoría de llamadas de sistema con algunas excepciones. Características completas del kernel Estabilidad, núcleo apropiativo, drivers, entre otros. Multitarea Soporte completo para ejecución de tareas. Pero con limitaciones, debido al hecho de que μclinux haya sido creado para soportar microprocesadores sin MMU, haciendo que la multitarea sea difícil de implementar. μclinux 5

36 Diferencias entre Linux y μclinux El hecho de que μclinux sea un sistema operativo derivado de Linux, nos invita analizar las principales diferencias existentes entre ambos debido a que μclinux soporta procesadores que no trabajan con MMU. No hay administración de memoria virtual Es la diferencia más grande entre ambos, la falta de administración de memoria virtual⁵. Debemos recordar que μclinux ha sido creado para procesadores que no usan la unidad MMU y por lo tanto no hace uso de la memoria virtual, en Linux sí, a través de la unidad MMU. Diferencias en el Kernel Las diferencias vienen marcadas principalmente por el hecho de no haber MMU en el procesador. No se podrá hacer uso del soporte de paginación que ofrece la MMU en el procesador. Tampoco se podrán usar sistemas de archivos que confíen su funcionamiento a la memoria virtual, por ejemplo TMPFS⁸. Pasa lo mismo con los formatos estándar de ejecutables (elf,a.out,etc) que usan la memoria virtual. En μclinux para solventar el problema de los archivos ejecutables, estos deben tener un formato plano que almacene sólo código ejecutable y datos, además de las reubicaciones necesarias para cargar el ejecutable en memoria. Asignación de memoria Otra gran diferencia debido a que el asignador predeterminado en Linux se basa en un método de asignación en potencia dos. Esto propicia que opere más rápido y pueda encontrar velozmente áreas de memoria de tamaño correcto para satisfacer peticiones de asignación. En cambio en μclinux las aplicaciones estarán cargadas dentro de la memoria que está fuera del alcance del asignador por defecto de Linux, para solventar este problema se creó un asignador alternativo de memoria para el kernel de μclinux ( page_alloc2() o kmalloc(), dependiendo de la versión del núcleo). Aplicaciones y procesos Otra diferencia es la falta de la llamada al sistema fork()³. Esto puede requerir bastante tiempo a los desarrolladores cuando porten aplicaciones que usen fork(). La opción en μclinux es usar vfork()¹⁰. Librería estándar C Como sabemos Linux hace uso de la librería estándar C junto a un gran número de librerías tanto estáticas como dinámicas que permiten a las aplicaciones hacer uso de los diferentes servicios que ofrece el SO. Como nos encontramos en sistemas embebidos el uso de la librería glibc⁴ no es posible debido a su gran tamaño y a la limitación de memoria que provoca utilizarlo en este tipo de sistemas. Para ello en μclinux se ha creado la librería uclibc, la cual cumple en gran parte la funcionalidad de glibc pero con un tamaño mucho menor. μclinux 6

37 Ahorro en el consumo de energía Scheduling o Planificación de tareas Es un tipo de estrategia para el ahorro de energía que nos ofrece el sistema operativo y se requiere cuando múltiples unidades funcionales necesitan acceder al mismo objeto, es decir, permite a cada unidad compartir el objeto en el tiempo. Esta se aplica en varias partes de un sistema como: Tiempo del procesador, acceso a disco, etc. En la actualidad la planificación se ejecuta en base a criterios como prioridad, latencia, etc. Hay dos clases de planificación offline y online. La primera es ejecutada antes de la ejecución de cualquier proceso y solo es eficiente si se tiene completo conocimiento de todos los procesos de antemano, mientras que la segunda es realizada en tiempo de ejecución. Cuando el comportamiento de un proceso cambia o se crea nuevos procesos. Si estamos en un sistema interactivo debemos utilizar una planificación online, debido al comportamiento impredecible del usuario. El objetivo de los métodos anteriores es adaptar el voltaje y la frecuencia según la demanda de trabajo. Así el sistema operativo baja el voltaje y la frecuencia en tiempo de desocupación y los incrementa en tiempo de actividad. Sistema de archivos La necesidad de bajo consumo y de un dispositivo de almacenamiento secundario ha llevado al amplío uso de memorias flash en los sistemas embebidos. Con el fin de administrar eficientemente los datos que se almacenan se debe disponer de un sistema de archivos que sea apto para el bajo consumo. Actualmente los sistemas de archivos para Linux más usados en memorias flash son JJFFS2 y Ext3. μclinux 7

38 Servicios de tiempo real Debemos recordar que μclinux es una variante de Linux diseñada para correr en procesadores sin gestión de memoria, es decir, es perfecto para microcontroladores. Sin manejo de memoria no existe niveles de privilegio para acceder al Kernel del sistema. Todo corre en un solo espacio de memoria y su nivel de privilegio es 0 y no hay ni memoria virtual ni swapping⁷. Todo esto provoca problemas como que cualquier proceso tiene acceso a instrucciones de entrada y salida. No se utilizan drivers para dispositivos ya que no son necesarios. Y la mayor consecuencia es que cualquier proceso podría tirar abajo el sistema. Todo esto produce que no haya servicios de tiempo real. μclinux 8

39 Microcontroladores y microprocesadores que utiliza μclinux. Motorola DragonBall, y otros derivados 68K Hizo su primera aparición pública gracias al Motorola DragonBall (M68EZ328), Motorola M68328, y la M68EN322. El Motorola DragonBall es un diseño de microprocesador basado en el núcleo 68k, pero implementado en un chip de bajo consumo para dispositivos empotrados. Motorola Coldfire Microprocesador con arquitectura de 68k, fabricado para sistemas empotrados de la mano de Freescale, la antigua división de Motorola dedicada al desarrollo de semiconductores. ETRAX Es una familia de microprocesadores diseñados y fabricados por Axis Communications, para su uso en sistemas empotrados desde Aplio/TRIO Es un procesador diseñado por Smart Internet Appliances. Proporciona la conexión a Internet (módem interno), mientras que al mismo tiempo proporcionar en tiempo real la compresión de voz y cancelación de eco. Alternativamente, puede proporcionar dos canales de compresión de voz y no módem. Sigma Design DVD. Sigma Design DVD utiliza un sistema de chips ARM que hace uso de para reproducir DVDs. Intel i960 El Intel i960 (también llamado 80960) es un microprocesador basado en RISC1 que fue muy popular a principios de los años 90 como microcontrolador empotrado, desbancando el AMD como el microcontrolador empotrado más vendido del mercado. Microblaze Es un parametrizador de RISC de núcleo blanco de Xilinx FPGAs. Tiene la capacidad de personalizar el procesador (por ejemplo, la aritmética de hardware, algoritmos de encendido/apagado, arquitectura de bus) ofreciendo nuevas posibilidades de configuración para el Kernel de Linux. NEC V850E El V850E es un pequeño procesador RISC diseñado por NEC, que habitualmente se utilizan en aplicaciones embebidas H8. μclinux 9

40 Empresas que comercializan dispositivos que trabajan bajo μclinux. Arcturus Networks Cuenta con un módulo de microcontrolador diseñado específicamente para funcionar sobre μclinux. Se llama el μcsimm SnapGear Inc Se dedica al desarrollo de productos basados en μclinux. Ofrece servicios que van des del diseño conceptual, hasta la fabricación y distribución a nivel mundial. Entre sus asociados figuran Motorola e Hitachi. Aplio Tiene varios productos basados en μclinux, como el Aplio/Phone, basado en el Atmel ARM7TDMI y que es un teléfono de VoIP. O la Aplio AT91 Development Board que incluye todo lo necesario para empezar a desarrollar aplicaciones para μclinux. AXIS Ha dotado de μclinux a su chip ETRAX que implementa su AXIS 2100 Network Camera. Se trata de una cámara digital de interior y con acceso directo red que puede enviar incluso archivos adjuntos. ADOMO Tiene una línea de productos con el objetivo de comunicar electrodomésticos con dispositivos empotrados como PDA s, Pc s y Smartphones basados en μclinux. Atmel Tiene un procesador ARM basado en la evaluación del AT91, que se ejecuta sobre μclinux. Inc Arnewsh Crea placas de evaluación que se ejecutan sobre μclinux. CISCO 2500/3000/4000 Koen De Vleeschauwer Ha creado un parche que permite que funcione μclinux en los routers CISCO más antiguos basados en MC68EC030 (2500/3000/4000). Y que requiere 4MB de RAM. μclinux 10

41 Conclusión Al comenzar a realizar el trabajo no sabíamos prácticamente nada sobre este tema y cuando empezamos a buscar información nos desilusionamos un poco porque nos dimos cuenta que no había mucha. En realidad, no tiene por qué haber demasiada información debido a que nos encontramos ante una variación de Linux, por lo que el material que obtuvimos no es más que el inicial, es decir, básico y necesario para saber cómo funciona, ya que, como cualquier distribución Unix, cualquier individuo posteriormente puede manejarla a su antojo. Con respecto a μclinux tenemos que añadir que nos ha parecido bastante interesante, ya que, al tratar la asignatura sobre los microcontroladores y ver cómo de útil es μclinux para ellos vemos que además de lo visto en clase durante el curso, se puede optar por otros campos que, aunque más complicados, nos abren otras muchas puertas para investigar una gran variedad de posibilidades. En nuestro caso, lo único que nos ha defraudado un poco sobre esta versión Linux para sistemas empotrados, es el hecho de no tener servicios de tiempo real. Este campo nos proporcionaría una gran cantidad de investigaciones que llevar a cabo, pero como ya hemos explicado, el hecho de ser un Linux orientado a microcontroladores sin MMU nos impide que esto se produzca. Por último, destacar que esto sería un trabajo sin más, pero el hecho de exponerlo en clase ante los compañeros produce que tengamos que conocer más a fondo el tema que tratamos, además, de aprender cómo, de lo poco que tenemos, sintetizarlo y resumirlo lo mejor posible para que los demás logren interesarse por él y saber tanto o más que nosotros. μclinux 11

42 Índice de palabras cruzadas 1/Binarios: Existen varios tipos de paquetes binarios para Linux. Todos tienen característica en común, y es que contienen código de máquina, no código fuente, por eso cada tipo de procesador necesita su propia versión de cada paquete. 2/Cambio de contexto: Un cambio de contexto consiste en la ejecución de una rutina perteneciente al núcleo del sistema operativo multitarea de una computadora, cuyo propósito es parar la ejecución de un (o proceso o Threads) para dar paso a la ejecución de otro distinto. 3/fork(): Es una función C que crea un nuevo proceso hijo 4/glibc: Es la biblioteca estándar de lenguaje C de GNU. Se distribuye bajo los términos de la licencia GNU LGPL.En los sistemas en los que se usa, esta biblioteca de C que proporciona y define las llamadas al sistema y otras funciones básicas, es utilizada por casi todos los programas. Es muy usada en los sistemas GNU y sistemas basados en el núcleo. Es muy portable y soporta gran cantidad de plataformas de. En los sistemas Linux se instala con el nombre de libc6. 5/Memoria virtual: Es una técnica de administración de la memoria real que permite al sistema operativo brindarle al software de usuario y a sí mismo un espacio de direcciones mayor que la memoria real o física. 6/MMU(Unidad de gestión de memoria): Es el dispositivo que traduce direcciones virtuales a físicas 7/Swapping: Intercambio de programas entre memoria principal y secundaria, simulando multitarea 8/TMPFS: Es el nombre que recibe un sistema de almacenamiento en muchos sistemas operativos de tipo Unix. Aparece como un sistema de archivos montado aunque usa memoria volátil. Es similar a los discos RAM, que aparecen como discos virtuales, y pueden contener sistemas de archivos. Normalmente también usa espacio de intercambio en situaciones en las que hay poca memoria volátil disponible. 9/uClib : Es una pequeña biblioteca en C diseñada para sistemas con Linux embebido. Es software libre con licencia LGPL. 10/vfork(): Es una función C que crea un proceso hijo y bloquea al padre μclinux 12

43 Referencias Página oficial del proyecto μclinux Artículos sobre μclinux Libro Online sobre μclinux en Google: "Linux for embedded and real-time appplications" Linux for embedded and real-time appplications Trabajos realizados con μclinux μclinux 13

44 Grupo 4

45 Familia de microprocesadores ATMEL GRUPO 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga

46 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Índice Introducción Pág. 3 ARM Pág Pág. 6 AVR de ATMEL Pág. 7 Arquitectura Pág. 8 Características Pág. 8 Descripción de los pines del AT90S1200 Pág. 9 Memoria, registros, pila Pág. 9 Instrucciones Pág. 11 Modos de ahorro de energía Pág. 11 Programación serial Pág. 12 En la actualidad... Pág. 13 ATTINY SERIES Pág. 14 Características Pág. 14 Descripción de los pines del ATTiny2313 Pág. 16 Memoria, registros, pila Pág. 17 Instrucciones Pág. 19 Opciones de ahorro de energía Pág. 19 Interrupciones Pág. 19 Timers/Counters Pág. 20 Comparadores, Capturadores y canales PWM Pág. 21 Módulos USART y USI Pág. 21 debugwire Pág. 21 Comparación con AVR vs PIC Pág. 21 ATMEGA SERIES Pág. 23 ATmega8 ATmega8L Pág. 24 Características Pág. 25 Memoria, registros, pila Pág. 27 Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 1

47 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Interrupciones Pág. 29 Conversor Analógico Digital Pág. 29 ATXMEGA SERIES Pág. 31 Características Pág. 31 Memoria, registros, pila Pág. 31 Instrucciones Pág. 31 Controlador de acceso directo a memoria (DMA) Pág. 31 Sistema de eventos Pág. 33 Opciones de ahorro de energía Pág. 34 PMIC controlador de interrupciones multinivel programable Pág. 34 Motor criptográfico Pág. 35 Convertidor de 12 bits analógico a digital y digital a analógico (ADC) y (DAC) Pág. 35 OCD - depurar on-chip Pág. 35 Comparación con AVR XMega A1 vs AVR ATtiny Pág. 36 PROGRAMACIÓN Pág. 37 AVRSTUDIO Pág. 37 BASCOM AVR Pág. 37 CONCLUSIONES Pág. 38 BIBLIOGRAFÍA Pág. 39 Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 2

48 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC INTRODUCCION ATMEL es una compañía de semiconductores, fundada en Su línea de productos incluye microcontroladores, dispositivos de radiofrecuencia, memorias EEPROM y Flash, ASICs, WiMAX, y muchas otras. También tiene capacidad de ofrecer soluciones del tipo system on chip (SoC). Respecto a su familia de microcontroladores, tenemos los derivados del 8051, el AT91SAM basados en ARM, y sus arquitecturas de desarrollo propio, AVR y AVR32. A lo largo de este documento daremos un repaso a esa variedad de microcontroladores, centrándonos principalmente en AVR, ya que consideramos que es la que tiene mayor interés. Atmel cuenta con tres familias importantes: ARM-Based Solutions Architecture. AVR Solutions. De estas familias en la única que profundizaremos será la última, y de las dos primeras ser hará un pequeño resumen de sus arquitecturas y características. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 3

49 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC ARM ARM (Advanced RISC Machine) es, en realidad, una familia de procesadores mantenidos y promovidos por ARM Holding Ltd, que a diferencia de otros fabricantes de chips, fabrica sus propios procesadores. Además, ARM Holding diseña núcleos del CPU para sus clientes, de forma que cobra a los clientes por la licencia sobre el diseño, y ellos lo fabrican. El primer procesador ARM fue desarrollado, entre 1983 y 1985, por Acorn Computers Limited of Cambridge, Inglaterra. Fue el primer microprocesador RISC para uso comercial. Las posteriores arquitecturas RISCs tuvieron diferencias significativas con este primer diseño. En 1990, ARM Limited se estableció como una compañía separada específicamente dedicada a la explotación de la tecnología ARM. La arquitectura ARM incorporó algunas características del diseño RISC de Berkeley, aunque no todas: Arquitectura de carga y almacenamiento (load-store): Las instrucciones que acceden a memoria están separadas de las instrucciones que procesan los datos, ya que en este último caso los datos necesariamente están en registros. Instrucciones de longitud fija de 32 bits: Campos de instrucciones uniforme y de longitud fija, para simplificar la decodificación de las instrucciones. Formatos de instrucción de 3 direcciones: Consta de f bits para el código de operación, n bits para especificar la dirección del 1 er operando, n bits para especificar la dirección del 2do. operando y n bits para especificar la dirección del resultado (el destino). El formato de esta instrucción en Assembler, por ejemplo para la instrucción de sumar dos números para producir un resultado, es: ADD d, s1, s2 d := s1 + s2 En el formato de 3 direcciones de ARM las direcciones se especifican por registros, que se han cargado previamente con el contenido de las direcciones de memoria correspondientes. En general, el término arquitectura de 3 direcciones se refiere a un conjunto de instrucciones donde los dos operandos fuente y el destino, se pueden identificar independientemente uno del otro, pero frecuentemente solo dentro de un restringido conjunto de valores posibles. Características que posteriormente agregó ARM: Todas las instrucciones se ejecutan en un ciclo de reloj. Modos de direccionamiento simples. El procesamiento de datos sólo opera con contenidos de registros, no directamente en memoria. Control sobre la unidad aritmética lógica (ALU, Arithmetic LogicUnit) y el shifter, en cada instrucción de procesamiento de datos para maximizar el uso de la ALU y del shifter. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 4

50 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Modos de direccionamiento con incremento y decremento automático de punteros, para optimizar los lazos de los programas. Carga y almacenamiento de múltiples instrucciones, para maximizar el rendimiento de los datos. Ejecución condicional de todas las instrucciones, para maximizar el rendimiento de la ejecución. Set de instrucciones ortogonal, regular o simétrico. En este tipo de set no hay restricciones en los registros usados en las instrucciones, son todos registros de propósitos generales, con muy pocas excepciones (por ejemplo el contador de programa, PC). A los programadores Assembler les resulta más fácil aprender un set con estas características. Y también, a los compiladores les resulta más fácil manejarlo. Mientras que la implementación del hardware será generalmente más eficiente. Técnica pipeline, economizando tiempo de forma que empieza una instrucción antes de que la actual hay terminado, con tres etapas: Búsqueda de código de operación (fetch). Se busca el código de operación en la memoria y se lo ubica en la instrucción pipeline. Decodificación (decode). Se decodifica la instrucción y se preparan las señales de control de recorrido del dato (datapath) para el próximo ciclo. En esta etapa se decodifica la instrucción pero no el recorrido del dato. Ejecución (execute). La instrucción reconoce ( owns ) su recorrido de datos. Se lee el banco de registros, se desplaza un operando, la ALU genera un resultado y lo escribe en el registro. Excepciones vectorizadas Las excepciones son condiciones inusuales o inválidas asociadas con la ejecución de una instrucción particular. Arquitectura Thumb Algunos procesadores ARM tienen esta arquitectura para aplicaciones que necesiten mejorar la densidad de código. Consiste en usar un set de instrucciones de 16 bits que es una forma comprimida del set de instrucciones ARM de 32 bits. Estas mejoras sobre la arquitectura RISC básica permiten a los procesadores ARM adquirir un buen equilibrio entre alto rendimiento, escaso tamaño de código, bajo consumo y poca área de silicio. La mayor utilización de la tecnología ARM se alcanzó con el procesador ARM7TDMI, con millones de unidades en teléfonos móviles y sistemas de videjuegos portátiles. Atmel, por su parte, ha creado una familia propia basado en ARM ( con procesadores Cortex-M3, ARM7,ARM9), que vemos a continuación: SAM3S Cortex-M3 Flash MCU SAM3U Cortex-M3 Flash MCU SAM3N Cortex-M3 Flash MCU SAM7S/SE ARM7TDMI Flash MCU SAM7X/XC ARM7TDMI Flash MCU SAM7L ARM7TDMI Flash MCU Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 5

51 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC 8051 El 8051 es un microcontrolador de 8 bits desarrollado en su origen por Intel en Es el microcontrolador más popular del mundo, hecho por varios fabricantes independientes. Un típico 8051 contiene: CPU con procesador booleano 5 o 6 Interrupciones 2 son externas 2 niveles de prioridad 2 o 3 temporizadores/contadores de 16 bits puerto serie full-duplex programable (con la velocidad en baudios provista por uno de los timers) 32 líneas de entrada - salida (cuatro puertos de 8 bits) RAM En algunos modelos, ROM/EPROM Puede decirse que la arquitectura del 8051 es algo extravagante, pero lo mismo podría decirse de la arquitectura de la mayoría de los microcontroladores, debido a su especialización (vean si no la creatividad del PIC - en ese sentido, basta con ver cualquier chip RISC). Un problema bastante molesto del 8051 es su conjunto de instrucciones sumamente no-ortogonal, especialmente las restricciones sobre el acceso a los diferentes espacios de direccionamiento. Uno de los puntos fuertes del 8051 es la manera en que maneja las interrupciones. El vectorizado hacia áreas fijas de 8 bytes es conveniente y eficiente. La mayoría de las rutinas de interrupción son muy breves (o al menos así debería ser), y generalmente caben en el área de los 8 bytes. Por supuesto que si su rutina de interrupción es más larga, todavía puede saltar a la rutina apropiada desde dentro de la región de interrupción de 8 bytes. En siguiente tabla vemos un pequeño resumen de característica de los microcontroladores de esta familia. Nombre del dispositivo Memoria de programa Memoria de datos AT89C1051 1K Flash 64 RAM AT89C2051 2K Flash 128 RAM AT89C51 4K Flash 128 RAM AT89C52 8K Flash 256 RAM AT89C55 20K Flash 256 RAM AT89S8252 8K Flash 256 RAM AT89S53 12K Flash 256 RAM Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 6

52 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC AVR de ATMEL Esta arquitectura fue concebida por dos estudiantes en el Norwegian Institute of Technology, (NTH) Alf-Egil Bogen and Vegard Wollan, y posteriormente refinada y desarrollada en Atmel Norway, la empresa subsidiaria de Atmel, fundada por los dos diseñadores del chip. Estos dos diseñadores trabajaron en conjunto con desarrolladores de compiladores de IAR System con el objetivo de que el chip tuviera un set de instrucciones adecuado que ofreciera una compilación eficiente de lenguajes de alto nivel. Además, también destaca por ser la primera empresa en incluir la memoria FLASH en sus diseños. Una de sus primeras series de desarrollo son los microcontroladores de la serie AT90, la cual es la que hemos usado como base para definir la arquitectura de AVR que veremos a continuación. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 7

53 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Arquitectura La arquitectura AVR está basada en la arquitectura Harvard, donde la memoria de programa y la de datos están separadas físicamente, pero que cuenta con un grupo de instrucciones especiales que permiten a la memoria de programa leer información de la memoria de datos. Es también un microcontrolador del tipo RISC (Reduced Instruction Set Computer), lo que le permite tener un set de instrucciones de alta velocidad de ejecución (un ciclo de instrucción por ciclo de reloj). Para conseguir tal rendimiento, AVR usa una metodología pipeline en la cual, mientras una instrucción se está ejecutando, la siguiente se está precargando desde la memoria de programa. Características Un Timer/Counter de 8 bits, el cual se puede alimentar con el reloj interno, por una señal de reloj externa y por el valor modificado del preescalador (de CK/8, CK/64, CK/256, y CK/1024). Un Watchdog Timer. Dos puertos de entrada/salida, PortB (8 bits) y PortD (7 bits) Un comparador analógico (alimentado por los bits 0 y 1 del puerto B) Una pila por hardware de 3 posiciones para subrutinas e interrupciones que almacena el Contador de Programa (PC) de 9 bits mientras se ejecutan dichas subrutinas o interrupciones. 18 registros de control situados en el I/O Space. Tres tipos de interrupciones: del Watchdog Timer, del Timer/Counter y la externa. Un reloj interno RC de 1MHz. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 8

54 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Descripción de los pines del AT90S1200 VCC GND PortB (PB7..PB0) PortD (PD6..PD0) RESET XTAL1 XTAL2 Alimentación de voltaje. Tierra. Puerto bidireccional de entrada y salida. PB0 y PB1 sirven como entradas positivas y negativas del comparador analógico. PB5, PB6 y PB7 se utilizan para la comunicación serial, los dos primeros para el MOSI (Master Out Slave In) y MISO (Master In Slave Out) y el último como entrada de señal de reloj. Puerto bidireccional de entrada y salida. Alternativamente, PD2 sirve como entrada para la interrupción externa. PD4 se utiliza también como entrada de señal de reloj para el Timer/Counter0. Señal de reseteo. Está negada, por lo que se activará cuando le llegue un cero lógico. Entrada para la señal externa del reloj Salida para la señal de reloj Memoria, registros, pila Posee dos tipos de memoria: una FLASH como memoria de programa y una EEPROM, además de un banco de 32 registros de trabajo que funcionaba como memoria de datos. En el caso de la FLASH, debido a que el tamaño de las instrucciones es de 16 bits, aunque se diga que su tamaño es de 1k (como ocurre en el caso de AT90S1200) realmente se organiza como 512 x 16. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 9

55 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC La pila como comentamos en las características, es una pila hardware de 9 bits de ancho para guardar el contador de programa (PC) y tiene tres posiciones que se utilizan tanto para subrutinas como para interrupciones. Una de las características más destacable de AVR es que posee 32 registros de trabajo de 8 bits similares al registro W de PIC. El registro R30, también conocido como registro Z, tenía la función especial de utilizarse para realizar el direccionamiento indirecto. Ciertas instrucciones solo se pueden usar con la parte baja de este grupo de registros (16-31), tales como CPI (comparación de un registro con un valor inmediato) o LDI (carga de un valor inmediato). Respecto al PortB y PortD, existen tres registros para cada uno de ellos con los que poder configurarlos y utilizarlos: DDRx PORTx PINx (data direction register) Indica si el puerto será de entrada o salida Escritura o lectura del valor que hay en el data latch. Nos da el valor actual del pin (solo lectura). Hay que tener en cuenta que si tenemos el puerto en modo entrada y PORTx a 1, tendremos activo el modo pull up (que consiste en mantener constante el voltaje de salida de uno o varios pines). El AT90S1200 posee varios modos de direccionamiento: Direct Single Register Addressing Acceso directo a un registro, pasándole al código de operación el registro al que queremos acceder. Indirect Register Addressing Acceso indirecto a un registro a través del registro Z. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 10

56 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Direct Register Addressing, Two Registers Acceso directo a dos registros dentro de una misma operación. I/O Direct Addressing Acceso directo a un puerto (registro) de entrada/salida. Relative Program Memory Addressing Acceso a la memoria de programa a partir de la posición del contador de programa (PC) y de un valor k. Instrucciones AT90S1200 posee un set de 89 instrucciones, más del doble del PIC16F84A por ejemplo, pero lejos de resultar más complicado su aprendizaje, hacerse a su uso es relativamente sencillo y lo que es más, simplifica mucho el desarrollo de código ya que la ALU permite operaciones entre registros y entre un registro y una constante. Además, muchas de estas instrucciones, como vimos anteriormente, no requieren más de un ciclo de instrucción equivalente a un ciclo de reloj, lo que nos da una ejecución realmente rápida en comparación con PIC. Las instrucciones están agrupadas en estos grupos: Instrucciones aritméticas y lógicas Instrucciones de salto Instrucciones de transferencia de datos Instrucciones de tipo Bit y de testeo de bits Algunas curiosidades sobre el set de instrucciones Posee instrucciones para realizar el complemento a 1 y a 2. Posee instrucciones IN y OUT para la transferencia de datos en los puertos. No existe la instrucción Suma Inmediata (ADDI) ya que se puede usar la Resta Inmediata (SUBI) con el complemento a dos. La instrucción CLR afecta los 'flag', mientras que la instrucción SER no lo hace, a pesar de que parecen ser instrucciones complementarias (dejar todos los bits en 1, y dejar todos los bits en 0, respectivamente). Posee una gran cantidad de instrucciones de salto, incluso para cuando alguno de los valores del registro status está en modo Set o Cleared. Modos de ahorro de energía Modo reposo (Idle mode): se desactiva únicamente la CPU pero se mantienen el resto de elementos activos. Modo apagado (power down mode): guarda el contenido de los registros pero detiene todo lo demás, siendo posible despertar al dispositivo a través de alguna interrupción externa o haciendo uso del reset. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 11

57 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Programación serial El AT90S1200 permite la programación serial haciendo uso de tres de los pines del PuertoB: De esa forma, podemos mandarle comandos al dispositivo para la escritura y lectura de la memoria FLASH y de la EEPROM. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 12

58 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC En la actualidad... Actualmente, dentro de la familia de microprocesadores AVR de ATMEL existen el grupo de los 8 bits (registros de tamaño 8 bits) y los nuevos de 32 bits. Los de 8 bits se dividen en tres categorías, yendo de menor a mayor (de menos a más pines, de menor capacidad de memoria a mayor capacidad, etc.): tinyavr the ATtiny series kb program memory 6 32-pin package Limited peripheral set megaavr the ATmega series kb program memory pin package Extended instruction set (Multiply instructions and instructions for handling larger program memories) Extensive peripheral set XMEGA the ATxmega series kb program memory pin package (A4, A3, A1) Extended performance features, such as DMA, "Event System", and cryptography support. Extensive peripheral set with DACs En comparación con lo visto sobre PICs, la serie ATtiny sería la equivalente a los PIC16F mientras que la ATmega sería equivalente a los PIC18F. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 13

59 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC ATTINY SERIES Para estudiar la familia de los ATtiny, hemos usado como referencia el ATtiny2313, de capacidad bastante similar al AT90S1200 pero con muchas más funcionalidades y mejoras. Características La cantidad de pines sigue siendo la misma Reloj interno de 8 Mhz Se añade un nuevo puerto PA de 3 pines. El número de instrucciones pasa a ser de 120 Seguimos usando el grupo de 32 registros de trabajo pero veremos que adquieren más funcionalidades. Pasamos a tener tres tipos de memoria: una FLASH de 2k (que multiplica por diez la cantidad de escrituras que permite), una EEPROM y una SRAM. Dos Timers, uno de 8 bits con preescalador y modo comparador y otro de 16 bits, también con preescalador, modo comparador y modo captura (sin contar el Watchdog timer, que también está incluido). Cuatro canales para la modulación por ancho de pulso. Un comparador analógico. Módulo USI para la comunicación en serie (Universal Serial Interface) Módulo de comunicación serie sincrónica y asincrónica USART full duplex (Universal Synchronous and Asynchronous serial Receiver and Transmitter) Modo debugwire Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 14

60 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC En el diagrama anterior, podemos ver los cambios producidos en la arquitectura AVR desde el modelo del AT90S1200 al nuevo ATtiny. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 15

61 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Descripción de los pines del ATTiny2313 VCC GND PortA (PA2..PA0) PortB (PB7..PB0) PortD (PD6..PD0) Alimentación de voltaje. Tierra. Puerto bidireccional de entrada y salida. PA0 y PA1 PA2 Funcionan como XTAL1 y XTAL2 Funciona como RESET o dw (debugwire) Puerto bidireccional de entrada y salida. Alternativamente, todos los pines de PortB se pueden utilizar para recibir interrupciones externas. PB0 y PB1 PB2...PB4 PB5...PB7 Al igual que en AT90S1200, estos dos pines también se usan como entrada positiva y negativa del comparador analógico. OC0A, OC1A y OC1B (Output Compare Match) respectivamente. Sirven para el módulo de comparación asociado a los Timers/Contadores. DI y SDA en PB5 para los modos tres y dos cables de comunicación Serial (Input), DO en PB6 también para la comunicación Serial (Output) y USCK y SCL en PB7 para las señales de reloj en los modos tres y dos cables de la comunicación Serial. Puerto bidireccional de entrada y salida. PD0 y PD1 RXD y TXD y para la comunicación UART (Universal Asynchronous Receiver-Transmitter). Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 16

62 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC PD2 y PD3 PD4 y PD5 PD6 Ambos permiten la recepción de interrupciones externas. Además, PD2 sirve como salida de reloj (CKOUT) y para la transferencia de la señal de reloj en el modo síncrono (XCK) Ambos funcionan como entrada externa de reloj para usar el Timer/Counter0 y 1 como contadores. Además, el PD5 funciona como OC0B (Output Compare Match B) Funciona como ICP (Input Capture Pin) para capturar el valor del Timer/Counter1 al producirse un evento en dicho pin. Memoria, registros, pila Para poder direccionar 1k de memoria FLASH (recordemos que es la mitad de la real debido a las instrucciones de 16 bits) se ha aumentado el Contador de Programa (PC) a 10 bits. A los dos tipos de memoria que teníamos antes (la FLASH y la EEPROM), vemos que se ha incluido una SRAM de 128 bytes. Junto a los 32 registros de trabajo y los 64 registros de control, componen el total de la memoria de datos. La pila también pasa a formar parte de la SRAM, teniendo que ser definida al inicio del código y colocando el puntero de pila a partir de la dirección 0x0060. Esto le permite tener un mayor tamaño que el que tenía antes aunque deberemos tener en cuenta que, mientras mayor sea la pila, menos memoria interna tendremos disponible en la SRAM. Respecto al grupo de 32 registros, de usar un único registro (el 30 o Z) para el direccionamiento indirecto, pasamos a poder usar 6 registros: Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 17

63 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Estos se distribuyen formando tres registros virtuales de 16 bits conocidos como X, Y y Z, teniendo cada uno de ellos su parte alta (XH) y su parte baja (XL). Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 18

64 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Instrucciones En el ATTiny aparecen algunos añadidos a los que traía el AT90S1200: Instrucciones aritméticas y lógicas Se incluye la suma y resta de un valor constante en una palabra (Word). Instrucciones de salto Se incluye el salto indirecto accediendo al contenido del registro Z y la llamada a subrutina usando el registro Z. Instrucciones de transferencia de datos Se añade una instrucción para el movimiento entre registros de tamaño Word, dos instrucciones para meter y sacar registros en la pila (Push y Pop), instrucciones para la carga y descarga de datos en la SRAM, instrucciones para la carga y descarga de datos de manera indirecta con desplazamiento (Z+q) y se tienen en cuenta los nuevos registros X e Y para todas las instrucciones de transferencia de datos. Instrucciones de tipo Bit y de testeo de bits Añaden la instrucción Break para la depuración On-chip. Opciones de ahorro de energía Además de los que traía el modelo anteriormente comentado, ATTiny tiene otro tipo más de ahorro de energía: Idle mode y Power down mode mencionados anteriormente. En standby mode solo se mantiene activo el oscilador de cristal lo que permite una recuperación rápida del sistema y un bajo consumo de energía. Interrupciones De tener 3 interrupciones en el AT90S1200, pasamos a tener un vector de interrupciones de 19 posiciones ordenadas según prioridad de ejecución. Una vez se produzca una interrupción, el GIE (Global Interrupt Enable) se desactiva, impidiendo que se produzca otra interrupción. Esto se puede cambiar a través de software, permitiendo activar aquellas interrupciones que el usuario considere necesarias según sus prioridades y que, en caso de producirse, interrumpirán la que se está ejecutando. Una vez retornamos de la interrupción, el GIE se activará automáticamente, cosa que en el PIC16F84A había que hacer manualmente. Existen dos tipos de interrupciones: aquellas que se recuerdan mientras alguno de los bit de habilitación están desactivados (dejando su flag correspondiente activo) y aquellas que solo se tratarán mientras la condición de interrupción esté activa (en caso contrario, serán ignoradas). Al igual que en PIC16, el registro de estado no se almacena automáticamente, por lo que deberemos hacerlo nosotros manualmente. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 19

65 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Después de usar la instrucción CLI, las interrupciones se desactivan inmediatamente, incluso si se producen justo cuando se ejecuta la CLI. Timers/Counters A diferencia del PIC16F87, ATtiny solo dispone de dos Timers, uno de 8 bits y otro de 16 bits. Además, ambos pueden ser modificados por un preescalador de cuatro posiciones mientras que el del PIC no solo tenía un preescalador con más posiciones sino que también tenía un poscalador. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 20

66 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Comparadores, Capturadores y canales PWM Relacionado con los timers, ATtiny dispone de comparadores para ambos timers y un capturador para el timer de mayor tamaño (el de 16 bits). Así mismo, dispone de hasta cuatro canales para la modulación de ancho de pulso. Módulos USART y USI Otra de las características añadidas a este microcontrolador son sus módulos para la comunicación serie (la versión del USI mejorada del AT90S1200 y el nuevo módulo Síncrono-Asíncrono USART). debugwire ATtiny posee la capacidad de depurar On-Chip con su funcionalidad debugwire. Para ello hace uso de las instrucciones BREAK que, situadas en el código, pueden ser luego analizadas por el depurador. Comparación con AVR vs PIC PIC 16F87XA AVR ATtiny 2313 Nº de pines 18/20/28 20 Velocidad de reloj Duración del ciclo de instrucción Memoria Hasta 20 MHz Un oscilador interno de 8 posibles velocidades: 31 khz, 125 khz, 250 khz, 500 khz, 1 MHz, 2 MHz, 4 MHz, 8 MHz Hasta 20 MHz Un oscilador interno de 8 MHz 4 ciclos de reloj 1 ciclo de reloj 4Kbytes de memoria de programa bytes SRAM bytes EEPROM 2Kbytes (1K reales) de memoria de programa 128 bytes SRAM 128 bytes EEPROM Timers 3 2 Puertos E/S 3-5 (A, B, C, D, E) 3 (A, B, D) Interrupciones Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 21

67 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Módulos de Captura / Comparacion / PWM 2 1/2/2 Comunicación Serie MSSP, USART USI, USART Comprador analógico 2 1 Registros de trabajo 1 (W) 32 Pila 8 niveles Definida dentro de la SRAM Set de Instrucciones 35 instrucciones 120 instrucciones Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 22

68 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC ATMEGA SERIES Los tipos de encapsulado del microcontrolador del ATmega presenta desde 28 pines hasta 100 pines en la forma de DIP, TQFP y MLF y su voltaje de alimentación está en el rango de 1.8 a 5.5 voltios. Podemos ver en la siguiente tabla las características de algunos de los microcontroladores de esta serie a groso modo: Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 23

69 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Por uso y simplicidad, creemos que de esta familia debemos destacar el ATmega8 (aunque en la actualidad el ATmega16 y ATmega32 son los dos más usados). ATmega8 ATmega8L Al ser parte de la familia AVR, este microcontrolador sigue siendo tipo RISC con una arquitectura Hardvard. Las gran diferencia se encuentra en el número de pines, memoria, etc... Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 24

70 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Características Sigue manteniendo 32 registros de 8 bits de propósito general. Tipos de Memoria: Memoria flash de 8 Kbytes EEPROM de 512 bytes SRAM de 1 Kbytes Característica de los periféricos internos: 2 temporizador/contador de 8 bits con pre-escalador y comparador 1 temporizador/contador de 16 bits con pre-escalador, comparador y capturador 8 canales de entrada para convertir A/D (en TQFP y MLF) 6 canales A/D de 10 bits y 2 canales A/D de 8 bits 6 canales de entrada para cada convertidor A/D (tipo PDIP) 4 canales A/D de 10 bits 2 canales A/D de 8 bits. 1 USART (módulo programable para comunicación serial) 1 módulo SPI, para interface serial (master/slave) 1 Watchdog. 1 comparador analógico Puertos programables de entrada/salida: Puerto B, con 8 líneas Puerto C, con 7 líneas Puerto D, con 8 líneas Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 25

71 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Descripción de los pines de ATmega8L Debido a que el ATMEGA8L es una versión extendida del ATMEGA8, describiremos l los pines de este: VCC y GND Son los pines de alimentación (+5 v) y tierra (0 v) AVCC AREF Puerto B (PB7.. PB0) Puerto C (PC0.. PC5) Es el pin para conectar la fuente de alimentación al convertidor A/D Para conectar una tensión de referencia para el conversor A/D interno Compuesto de 8 bits, a cada pin le corresponde un bit, son bidireccionales con resistencia interna pull up para cada bit. PB0...PB3 PB3...PB5 PB6 y PB7 ICP1 (Input Capture Pin), OC1A (Compare Match A Output) y OC1B MOSI, MISO y SCK respectivamente. PB6 funciona alternativamente como XTAL1/TOSC1 (Timer Oscillator) y PB7 como XTAL2/TOSC2 Tiene 7 bits, bidireccionales con resistencias internas pull up, para cada bit Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 26

72 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Puerto D (PD0..PD7) PC0...PC4 PC4 y PC5 PC6 ADC0-3 (Analog Digital Converter) SDA y SCL (Data y Clock para Two-wire Serial Bus) El bit 6, puede ser usado como entrada/salida si los fusibles han sido programados, en caso contrario, PC6 es usado para la entrada Reset. Un bajo nivel en este pin generará un reset Son 8 líneas bidireccionales de entrada/salida con resistencias internas pull up, para cada uno. PD0, PD1 y PD4 PD2 y PD3 PD4 y PD5 PD6 y PD7 USART I/O y USART XCK (External Clock I/O) INT0 y 1 (External Interrupt Input) T0 y T1 (External Counter Input) AIN0 y 1 (Analog Comparator Postive and Negative Input) Memoria, registros, pila En el caso del Atmega8L tiene una capacidad de 8K x 8, pero como las instrucciones son de 16 ó 32 bits, esta memoria es organizada como 4Kx16 bits. Para su mayor seguridad, el espacio está dividido en 2 áreas: arranque y de aplicación. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 27

73 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Para acceder al espacio comprendido entre 0 y 4095 ($FFF) direcciones, el tamaño del registro contador de programa (PC) será de 12 bits. Aunque el registro de estado existe en las versiones anteriores, aprovecharemos este apartado para comentarlo. El registro de estado contiene información acerca del resultado de la más reciente instrucción ejecutada. Esta operación puede ser utilizada para alterar el flujo de un programa. El registro de estados es sobrescrito luego de ejecutarse una operación en la ALU. I, Global Interrupt Enable (bit 7): El bit I permite habilitar las interrupciones con 1 lógico, si el bit es 0, no se aceptará ningún pedido de interrupción. Se puede hacer esto usando las instrucciones SEI y CLI. T, Bit Copy Storage (bit 6): La posición del bit T, permite ser el destino o la fuente de un bit determinado (es como un lugar temporal para guardar un bit). Para esto se utiliza las instrucciones BLD (bit LoaD) y BST (Bit Store). Por ejemplo, BST R5, 3 guarda el bit 3 del registro R5 en la bandera T y BLD R0, 4 carga el valor de la bandera T dentro del bit 4 del registro R0. H, Half Carry Flag (bit 5): Es la bandera de medio acarreo, se pone a 1 si en una suma de operandos de 8 bits, hay un acarreo del nible menos significativo, al más significativo. Se pone a 0 en caso contrario. S, Sign (bit 4): El bit S siempre es un or-exclusivo entre la bandera negativa N y la bandera de desborde V. V, Two s Complement Overflow flag (bit 3): La bandera V se pone a 1 cuando el resultado de una instrucción excede el rango de las operaciones aritméticas, es decir, en el caso de operaciones de 8 bits cuando el resultado de una operación no está entre 128 y +127 decimal y en el caso de 16 bits entre y decimal. Esto es algo que sucede usualmente en el complemento a dos. N: Negative Flag (bit 2): La bandera N, se pone a 1 cuando el resultado de una operación es un número negativo, o sea el bit mas significativo del resultado vale 1. Se pone a 0 en caso contrario. Z, Zero Flag (bit 1): Se pone a 1 cuando el resultado de un operación es cero, de lo contrario es cero. C: Carry flag (bit 0) La bandera de acarreo (C) se pone a 1 cuando existe acarreo en el bit de mayor significado de una operación aritmética; de lo contrario es cero. Tanto el grupo de 32 registros como la pila mantienen el mismo funcionamiento que en el modelo anterior. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 28

74 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Interrupciones El microcontrolador ATmega8 también posee 19 fuentes de interrupción. Todas las interrupciones tienen un vector de reset propio en el espacio de memoria del programa, además, tienen asignados unos bits que deben ser puestos a uno conjuntamente con el bit I del registro de estado para que las interrupciones puedan producirse. Las direcciones más bajas del espacio de memoria de programa son automáticamente definidas para el vector de Reset y para los vectores de interrupción. La lista completa de vectores se muestra en la siguiente tabla. Esta lista también determina los niveles de prioridad de las diferentes interrupciones. La mayor prioridad tiene el vector de RESET y a continuación el vector INT0 y así sucesivamente. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 29

75 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Una vez producido un RESET, todos los registros del microcontrolador son puestos con sus valores iniciales y el programa empieza su ejecución en la dirección $000. En esta dirección debe colocarse una instrucción de salto RJMP para ejecutar la rutina de comienzo de programa. A continuación de la dirección $000 y hasta la dirección $00d, se encuentran los vectores para las diferentes interrupciones; pero si estos vectores de interrupción no son utilizados puede colocarse código de programa en ellos. Existen cuatro posibilidades para que se produzca un Reset: Reset al encendido El microcontrolador se resetea cuando el voltaje de la fuente de alimentación está por debajo del nivel requerido para el funcionamiento. Reset externo Cuando un nivel bajo es ingresado en el pin RESET durante más de dos ciclos de XTAL. Reset por Watchdog Si el watchdog está habilitado y su tiempo de temporización expira antes de producirse la instrucción WDR el microcontrolador se reseteará. Reset por Brown-out El microcontrolador se resetea cuando la fuente de voltaje VCC está bajo el nivel de Brown-out Reset (VBOT) y el Brown-out Detector está habilitado. Conversor Analógico Digital Como hemos visto, la estructura básica se ha mantenido de un modelo a otro y los cambios producidos están en el aumento de funcionalidades que tiene el dispositivo. Uno de ellos es el conversor analógico digital de 10 bits de aproximación. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 30

76 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC ATXMEGA SERIES Para explicar las características y funcionalidades del ATxmega hemos escogido las hojas de datos del microcontrolador XMega A1. Características La familia XMega se caracteriza por tener un alto rendimiento con un bajo consumo. Este modelo dispone de 100 patillas, muy superior que la del resto de su familia. Controlador de cuatro canales DMA (Acceso Directo a Memoria) con soporte externo de peticiones. Tiene un set de 138 instrucciones, algo más que en los anteriores. Ocho canales para el Sistema de Eventos. Dispone de ocho Timers/Counters de 16 bits. Ocho módulos USARTS (Receptor-Transmisor Universal Síncrona/Asíncrona). Interfaz de cuatro módulos de 2 cables con direccionamiento dual (I 2 C y SMBus compatible). Cuatro periféricos SPI (Serial Peripheral Interface). El bus para dispositivos Serie es un estándar para controlar casi cualquier dispositivo electrónico digital que acepte un flujo de bits serie regulado por un reloj. Motor criptográfico AES y DES. Contador de Tiempo Real de 16 bits con Oscilador separado. Dos Convertidores Analógico-Digital de 8 canales de 12 bits y dos Digital-Analógico. Cuatro Comparadores Analógicos. Interrupciones Externas en todos los pines E/S de Propósito General. Temporizador Programable Watchdog con On-chip Separado. Power-on Reset y Detección Brown-out Programable. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 31

77 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Controlador de Interrupciones Multinivel Programable. Cinco modos diferentes de Sleep: Idle, Power-down, Standby, Power-save, Extended Standby. Podemos ver en este diagrama que incluye algunos módulos nuevos con respecto a sus predecesores. Este modelo en concreto (XMega A1) usa una CPU AVR de 8/16 bits. Como sabemos, la principal función de la CPU es la ejecución de programas, de ahí la importancia de su tamaño. Memoria, registros, pila Al igual que en su versión diminuta (ATtiny) la utilización de la memoria, los registros y la pila es usada de forma exactamente igual, pero con la diferencia de que ésta tiene mayor capacidad. Instrucciones Con respecto a las versiones anteriores, el AVR Xmega A1 dispone de un set de 138 instrucciones, algunas más que las versiones anteriores. Instrucciones aritméticas y lógicas Se incluyen 29 instrucciones. Entre ellas una instrucción nueva de encriptación de datos (DES). Instrucciones de salto Hay 38 instrucciones de salto. Además del salto indirecto que se incluye en el ATtiny, dispone de una variante extendida de dicho salto indirecto accediendo al contenido del registro Z. Instrucciones de transferencia de datos Se dispone de 39 instrucciones entre las que incluye carga inmediata y almacenamiento directo en el espacio de memoria. Además las ya conocidas instrucciones de meter y sacar de la pila (PUSH y POP). Instrucciones de tipo Bit y de testeo de bits Tiene 28 instrucciones al igual que en el ATtiny. Controlador de acceso directo a memoria (DMA) El XMega A1 tiene un controlador de Acceso Directo a Memoria que permite mover datos entre memoria y periféricos en el espacio de datos. El controlador DMA usa el mismo bus de datos que la CPU para transferir datos. Ésta tiene 4 canales que pueden ser configurados de forma independiente. Cada canal DMA puede realizar transferencias de datos en bloques configurables en tamaños desde 1 a 64 Kbytes. Para permitir transferencias continuas, dos canales pueden ser entrelazados de forma que el segundo se haga cargo de la transferencia cuando el primero haya finalizado y viceversa. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 32

78 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Sus principales características son las siguientes: Permite la transferencia de datos a alta velocidad De memoria a periféricos y viceversa. De memoria a memoria. De periférico a periférico. Como comentamos antes, dispone de 4 canales. En una simple transacción se pueden transferir datos desde 1 byte hasta 16 Mbytes. Es posible la programar la prioridad entre los canales. Hay que destacar que los XMega llevan DMA debido a que los conversores que llevan internamente son capaces de generar hasta 4 Mbytes de datos por segundo, y sería una afrenta el tener que mover éstos datos a la RAM interna. De hecho, los Xmega pueden copiar los 4MB de datos por segundo directamente a memoria con la CPU totalmente parada. Sistema de eventos El Sistema de Eventos es un conjunto de característica que sirve para la comunicación entre periféricos. Este sistema permite la posibilidad de un cambio de estado en un periférico para activar automáticamente acciones en uno o más periféricos. Es un sistema simple, pero potente ya que permite un control autónomo de los periféricos sin ningún uso de interrupciones, CPU o recursos de DMA. El sistema de eventos es funcional tanto en modo activo como inactivo. Algunas características principales son: Operaciones de CPU y DMA independientes. Dispone de 8 Canales de Eventos que permiten que hasta 8 señales puedan ser transferidas al mismo tiempo. El sistema puede ser generado y usado por diferentes módulos: Timers/Counters. Convertidor Analógico a Digital. Comparadores Analógicos. Puertos. CPU. Reloj. etc. El mismo evento puede ser usado por múltiples periféricos para medir el tiempo sincronizado. Funcional en modo Activo y en Reposo. Además, todos los eventos desde todos los periféricos siempre pasan por el Evento de Enrutamiento de Red (Event Routing Network). Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 33

79 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Opciones de ahorro de energía A diferencia del ATtiny, el XMega A1 tiene cinco modos de reposo: Idle: solo los periféricos, el Control de Interrupciones, el Sistema de Eventos y el Controlador DMA se mantienen en ejecución. Power-down: en este modo solo se permiten operaciones de módulos asíncronos. Power-save: idéntico que el anterior con la única excepción de que si el RTC (Contador de Tiempo Real) está habilitado éste puede permanecer activo durante el modo de reposo. Standby: es idéntico al Power-down con la salvedad de que todos los relojes del sistema habilitados permanecen activos, mientras que la CPU, los periféricos y los relojes RTC son parados. Extended standby: idéntico al Power-save con la excepción de que todos los relojes del sistema permanecen activos, mientras que la CPU y los relojes de los periféricos son parados. Además cuenta con Reducción de Potencia de registros para deshabilitar el reloj a periféricos que no se están utilizando. La Reducción de Potencia de registros dispone de un método para el reloj a los periféricos de forma individual desde software. PMIC controlador de interrupciones multinivel programable Este controlador se diferencia por tener un novedoso controlador de interrupciones cuyas características son las siguientes: Dispone de un vector de interrupciones separado para cada interrupción. Las interrupciones duran poco tiempo y tienen un tiempo predecible de duración. Dispone de 3 niveles programables de interrupciones. Esquema de interrupciones seleccionable dentro de las interrupciones de bajo nivel (Round- Robin). Las interrupciones no son enmascarables (NMI), lo que significa que la CPU tiene que dejar lo que está haciendo y saltar a una dirección particular y ejecutar el código de dicha dirección, no puede ignorarla. Que el XMega A1 tenga un Controlador de Interrupciones Multinivel Programable significa que todos los periféricos pueden definir tres tipos de niveles por interrupción: Alto: puede interrumpir las rutinas de servicio de interrupciones de nivel Bajo y Medio. Medio: puede interrumpir las de nivel Bajo. Bajo: tienen un esquema opcional Round-Robin para asegurar que todas las interrupciones son atendidas dentro de un tiempo determinado. A diferencia del ATtiny, el XMega A1 dispone de 45 tipos de interrupciones diferentes ante las 19 de las que dispone ATtiny. Con respecto al PIC visto en clase, éste solo tiene 4 tipos. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 34

80 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Motor criptográfico Advanced Encryption Standard (AES) y Data Encryption Standard (DES) son los estándares de encriptación más usados comunmente. Todas las interfaces de comunicación y la CPU pueden usar opcionalmente la comunicación encriptada AES y DES para almacenar los datos. La encriptación DES es soportada por medio una instrucción DES en la CPU del AVR XMega. Sin embargo, para la encriptación AES se encarga un módulo. Las características principales del motor criptógráfico son: Data Encryption Standard (DES) soportada por medio de una instrucción en la CPU. Ésta instrucción realiza la Encriptación/Des-encriptación en 16 ciclos de reloj por bloques de 8 bytes. El modulo Advanced Encryption Standard (AES) realize la Encriptación/Des-encriptación en 375 ciclos de reloj por bloques de 16 bytes. Convertidor de 12 bits analógico a digital y digital a analógico (ADC) y (DAC) Otra diferencia bastante notable con respecto a los microcontroladores PIC, es que los AVR XMega disponen de 2 Convertidores de 12 bits de Analógico a Digital y de Digital a Analógico. Los dos módulos ADC del XMega A1 pueden operar de forma simultánea, individual o sincronizada capaces de convertir hasta 2 millones de muestras por segundo (MSPS) por módulo. ADC puede realizar conversiones iniciadas por aplicación software o por un evento de entrada de otro periférico en el dispositivo. Además es posible usar el DMA para mover resultados de ADC directamente a memoria o periféricos cuando se haya realizado la conversión. Los módulos DAC del XMega A1 pueden convertir hasta 1 millón de muestras por segundo (MSPS) por módulo. Dicho módulo convierte un valor digital en una señal analógica. La conversión puede ser iniciada por aplicación software escribiendo los registros de conversión de datos. El DAC puede ser configurado para hacer conversiones provocadas por el Sistema de Eventos. Además el DMA puede ser usado para transferir datos desde localizaciones de memoria hasta los registros de datos del DAC. Ocd - depurar on-chip El XMega A1 tiene un potente systema OCD (On-chip Debug) que en combinación con herramientas de desarrollo de Atmel proporciona todas las funciones necesarias para depurar una aplicación. Éste sistema también tiene soporte para aplicaciones en C y lenguaje de alto nivel, así como ensamblador y desensamblador. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 35

81 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC Comparación con AVR XMega A1 vs AVR ATtiny En la siguiente tabla comparamos el ATtiny ya visto con el XMegaA1. AVR ATtiny 2313 Nº de pines Velocidad de reloj Hasta 20 MHz Un oscilador interno de 8 MHz AVR XMega A1 32 MHz Duración del ciclo de instrucción 1 ciclo de reloj 1 ciclo de reloj Memoria 2 Kbytes (1K reales) de memoria de programa 128 bytes SRAM 128 bytes EEPROM Controlador DMA NO SI Timers 2 8 E/S Puertos 3 (A, B, D) Interrupciones Módulos de Captura / Comparación / PWM 1/2/2 2/4/24 4KB Código de arranque 64 Kbytes Flash 4 Kbytes SRAM 2048 bytes EEPROM 11 (A,B,C,D,E,F,H,J,K,P, R) Comunicación Serie USI, USART USART, SPI Módulo IR NO SI Comparador Analógico-Digital 0 2 Comparador Digital-Analógico 0 2 Comparador analógico 1 4 Registros de trabajo Pila Definida dentro de la SRAM Definida dentro de la SRAM Set de Instrucciones 120 instrucciones 138 instrucciones Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 36

82 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC PROGRAMACIÓN AVRSTUDIO AvrStudio es una interfaz de programación para todo lo que son MicroControladores ATMEGA y sus derivados. El lenguaje de programación que utiliza es Assemler y C, pero el programa solo tiene el compilador para el primero. AVR-STUDIO puede descargarse gratuitamente de desde las páginas del fabricante de ATMEL. Respecto a los Arduinos, éstos están diseñados para ser programados en un lenguaje de programación propio, transfiriéndose los programas a través de su puerto USB. BASCOM AVR El BASCOM-AVR es un compilador de BASIC para la familia AVR de ATMEL, desarrollado por la empresa Holandesa MCS Electronic. No es necesario contar con un ensamblador para escribir el código fuente y otro paquete de software para comprobar y simular un programa. Pero no es solamente un compilador en lenguaje Basic, sino que nos ofrece un único Ambiente de Desarrollo Integrado (IDE) y Generación de código máquina nativo en lugar de código interpretado. BASCOM soporta el programador ISP, STK200 / STK300, STK500, incluso el programador AVR ISP para puerto paralelo muy fiable. Nota Debemos destacar también, avr-gcc, que no es mas que un compilador para la familia de microcontroladores avr de atmel, que junto a la libreria avr-libc nos permiten desarrollar nuestros programas para los microcontroladores ATMEL en C. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 37

83 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC CONCLUSIONES Gracias a la búsqueda y recopilación de información hemos podido conocer más a fondo la familia de microcontroladores ATMEL y además, poder compararla con la que ya conocíamos de las clases teóricas, la familia PIC de Microchip. Hemos podido observar cómo ATMEL aprovechó la experiencia de los microcontroladores de la época para crear uno en base a sus intereses, partiendo desde cero, con lo que han conseguido sacar al mercado un producto bastante competitivo y, a primera vista, con más rendimiento que los PICs de su misma categoría. Además, por lo que hemos podido leer en los distintos foros de internet, han sabido diseñar los nuevos modelos sin realizar cambios importantes en la estructura principal de sus micros, con lo que resulta muy cómodo el pasar de un dispositivo a otro. Aún así, parece que ATMEL no destaca tanto como debería, quizás porque no ha sabido promocionarse adecuadamente o porque Microchip lleva más tiempo. Sea como fuere, es una empresa con buenos productos que se debe tener en cuenta a la hora de elegir un microcontrolador para nuestros proyectos. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 38

84 Curso de Adaptación al Grado Sistemas Empotrados y de Tiempo Real ULPGC BIBLIOGRAFÍA Página oficial de ATMEL Wikipedia.org Hoja de especificaciones del AT90S1200 (DOC0838) Hoja de especificaciones del ATtiny2313 (DOC2543) Hoja de especificaciones del ATmega8L (DOC2486) Hoja de especificaciones del ATXmega A1 (DOC8067) Wikibooks.org MÓDULO DIDÁCTICO PARA EL MICROCONTROLADOR: ATMEGA 8 - PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE TECNÓLOGO EN ELECTRÓNICA Y TELECOMUNICACIONES ( Gordón Mosquera, Christian Roberto y Nagua Sandoval, Fanny Margarita) AVR an Introductory course Jhon Morton Presentación Powerpoint AVR Family of Micro-Controllers por Al Rossetti Artículo Batalla de Microcontroladores AVR o PIC? por Omar Otoniel Flores Cortez, Docente Cátedra de Electrónica, Universidad Tecnológica de ElSalvador UTEC. Grupo 4 Roberto Carlos Castellano Rodríguez Marco Jesús Umpiérrez Rodríguez Oscar Adae Rodríguez Arteaga 39

85 Grupo 5

86 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Sistemas Empotrados y de Tiempo Real ARQUITECTURA ARDUINO Grupo 5 Mendoza Álamo Felipe Raúl Ortega Pérez, Miguel Angel Sosa Santana, Rubén El siguiente documento corresponde al trabajo teórico referente a la Arquitectura Arduino de la asignatura Sistemas Empotrados y de tiempo real, correspondiente al curso de adaptación al grado de informática impartida por la Escuela de ingeniería en Informática de la Universidad de las Palmas de Gran Canaria El desarrollo de la misma se ha realizado en las instalaciones del laboratorio de electrónica del edificio de Informática y Matemáticas de la ULPGC Documento: Autores: Arquitectura Arduino.odt Mendoza Álamo Felipe Raúl, Ortega Pérez Miguel Angel, Sosa Santana Rubén Rev. Fecha: 1 Grupo 5. Arquitectura Arduino Descripción: 16/12/11 Creación del Documento Página 1 de 24

87 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 INDICE 1.- INTRODUCCIÓN IDEA ORIGINAL Hardware open-source CARACTERÍSTICAS ARQUITECTURA Visión general Esquema de correspondencia entre pines del microcontrolador (formato DIP) y la función en Arduino Esquema técnico de la placa Esquema de Arduino simplificado montado en una protoboard Interconexión entre placas Arduino Shield VARIABILIDAD HERRAMIENTAS DE DESARROLLO EJEMPLOS REALES CON ARDUINO Cafetera Activada Vía Twiter: Manejo de un Robot con el mando de la WII Helicóptero de Aeromodelismo Chaqueta de aviso con lilypad Arte Digital Impresora 3D CONCLUSIONES INDICE DE PALABRAS CRUZADAS REFERENCIAS...24 Grupo 5. Arquitectura Arduino Página 2 de 24

88 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ INTRODUCCIÓN A continuación vamos a hablar de Arduino. Qué es Arduino? La definición formal podría ser Arduino es una plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. Esta definición encierra ya de por si varios aspectos que son interesantes, por ejemplo, electrónica abierta (conozco el open source, pero, Qué es esto de algo open en hardware?), hardware y software (vamos, no es solo cacharritos ), fáciles de usar (seguro, que estos freaks de la electrónica llaman fácil de usar a cualquier cosa y seguro que me ponen a desarrollar en ensamblador ) y sobre todo, asequible (las primeras placas costaban 1 euro). Arduino quizás va un poco más allá, su verdadera revolución es que brinda la posibilidad a las personas de aprender cómo funciona la tecnología y que sean capaces de manipular y crear objetos físicos. Gracias a esto existe un gran número de personas implicadas en el desarrollo del mismo, una comunidad enorme de gente implicada que pone sus diseños y sus programas al servicio de la comunidad. Su propio nacimiento como hardware open-source es más que significativo. La escuela de diseño de Ivrea, Italia, a punto de desaparecer por falta de fondos, la cabeza visible del proyecto, Massimo Banzi, ante la preocupación porque el proyecto al cerrar la escuela se quede en el olvido o los nuevos administradores directamente la sepulten, decide hacerlo publico (open), automáticamente nadie puede sepultar lo que muchísima gente conoce. En los siguientes capítulos explicaremos en detalle en qué consiste la plataforma Arduino, cómo nace y cuales son sus propósitos y usos, sus características y arquitectura además de las diferentes versiones que existen en el mercado. Como apartado aclaratorio también expondremos a que se refiere eso de hardware open-source. Por ultimo ponemos ejemplos prácticos reales del uso de esta arquitectura. Grupo 5. Arquitectura Arduino Página 3 de 24

89 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ IDEA ORIGINAL Arduino es una plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. Nace en 2005 en Italia como respuesta a dos ideas, por un lado, conseguir una plataforma de bajo coste que permitiera a los alumnos acceso a la misma, y por otro, acercar a las personas que no tiene conocimiento de electrónica, a través de una programación sencilla. Su sencillez ha hecho que rápidamente se haya extendido su uso por artistas, diseñadores, aficionados, constructores de maquetas, y un largo etc. Se basa en una sencilla placa con un microcontrolador Atmel en diferentes versiones. Pueden ser montadas a mano o compradas montadas de fábrica. El lenguaje de programación es propio basado en Wiring, que a su vez se basa en Processing que es básicamente C++. Las principales ventajas que ofrecen son: Asequible Multi-plataforma (WINDOWS, LINUX, MAC) Entorno de programación simple y directo Software ampliable y de código abierto Hardware ampliable y de código abierto Como notas interesantes destacaremos que para poder poner el logotipo de Arduino en una placa construida por ti, deberás asegurarte que las empresas que te suministran los componentes mantienen a sus empleados bajo unas condiciones laborales dignas Hardware open-source Nos parece conveniente hacer aquí una breve reseña sobre a qué se refiere el término hardware open-source. Grupo 5. Arquitectura Arduino Página 4 de 24

90 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Se llama hardware libre a los dispositivos de hardware cuyas especificaciones y diagramas esquemáticos son de acceso público, ya sea bajo algún tipo de pago o de forma gratuita. Algunos de los principios que se pretende promover para considerar productos físicos como hardware open-source son los siguientes: Publicar la documentación incluyendo los archivos de los diseños, mismos que deben permitir su modificación y distribución. Especificar que porción del diseño es abierta en caso de que no se liberen todos sus componentes. Ofrecer el software necesario para leer el archivo del diseño o la documentación suficiente de las funcionalidades requeridas, para que se puede escribir el código open-source del mismo fácilmente. Ofrecer una licencia que permita producir derivados y modificaciones, además de su re-distribución bajo la licencia original, así como su venta y manufactura. La licencia no debe restringir que se venda o comparta la documentación necesaria. No pide regalías o una tarifa por su venta o la de sus derivados. La licencia no debe discriminar a ningún grupo o persona La licencia no debe de restringir a ningún campo o actividad el uso de la obra. Es decir, no se puede limitar su uso únicamente para negocios o prohibir sea utilizado para investigación nuclear. El licenciamiento de la obra no puede depender de un producto en particular. La licencia no debe restringir otro hardware o software, es decir que no puede insistir en que otros componentes de hardware o software externos a los dispositivos sean también open-source. La licencia tiene que ser neutral, ninguna disposición de la misma debe de basarse en una tecnología específica, parte o componente, material o interfaz para su uso. Según David Cuartielles, co-fundador del equipo Arduino, "por culpa de la _blankización(*) y las patentes, se había cerrado la oportunidad a la gente para aprender cómo funcionan las cosas y solo los expertos y hackers podían abrir y ver lo que hay dentro. El hardware en open source significa poder volver a abrir las cosas y ver cómo funcionan. Cuando hay más ordenadores que personas, eso es muy importante, no ya para repararlas sino para entender cómo funciona nuestra vida". Grupo 5. Arquitectura Arduino Página 5 de 24

91 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 (*) No encontramos su significado, pero como es una cita literal así la dejamos 3.- CARACTERÍSTICAS Un módulo Arduino es una placa muy simplificada basada en un microcontrolador. Básicamente consiste en incluir todas las partes necesarias para alimentar y comunicarte con el microcontrolador: una fuente, un cristal que ejerce de reloj, una interfaz USB a serie, y una interface de programación SPI para reemplazar el cargador de programas. Existen diferentes tipos de diseño basados en arquitectura Arduino pero todos tienen que tener al menos estos elementos. Como ya venimos comentando en todo el documento cada cual se puede montar su propia placa Arduino siguiendo estos principios, a pesar de esto, existen una serie de modelos comerciales que se pueden adquirir en el mercado. A continuación mostramos un cuadro con las características principales de estos modelos comerciales. Modelo Diecimila Microcontrolador ATmega168 Flash EEPROM S RAM Pines...con Pines KiB KiB KiB dig. PWM anal. Interfaz US B Dimensiones Dimensiones pulgadas FTDI 2.7" x 2.1" Duemilanove ATmega168/328P 16/32 0.5/1 1/ FTDI 2.7" x 2.1" 6 ATmega8U2 2.7" x 2.1" Uno ATmega328P Mega ATmega FTDI 4" x 2.1" Mega2560 ATmega ATmega8U2 4" x 2.1" Fio ATmega328P ATmega168 or ATmega328 ATmega168V or ATmega328V None 16/32 0.5/1 1/ FTDI None Nano LilyPad 1.6" x 1.1" mm 68.6mm x 53.3mm 68.6mm x 53.3mm 68.6mm x 53.3mm 101.6mm x 53.3mm 101.6mm x 53.3mm 40.6mm x 27.9mm 1.70" x 0.73" 43mm x 18mm 2" ø 50mm ø Los precios de estos esquemas ronda desde 14 el más barato a unos 60 el más caro. En concreto el modelo Duemilanove cuesta unos 22 totalmente ensamblado. Grupo 5. Arquitectura Arduino Página 6 de 24

92 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ ARQUITECTURA Exponemos a continuación Arduino Duemilanove que es uno de los últimos que han visto la luz y es el que hemos tomado como modelo de referencia para explicar los modelos y la familia Arduino. Arduino Duemilanove Visión general Tal como se muestra en la anterior imagen esta placa está basada en un microcontrolador ATmega 328, tiene 14 pines con entradas/salidas digitales (6 de las cuales pueden ser usadas como salidas PWM), 6 entradas analógicas, un cristal oscilador a 16Mhz, conexión USB, entrada de alimentación, una cabecera ISCP, y un botón de reset. Grupo 5. Arquitectura Arduino Página 7 de 24

93 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 En cuanto a memoria la placa Duemilanove tiene 32KB de memoria flash para almacenar código de los cuales 2KB están reservados para el arranque (bootloader). Además de 2KB de SRAM y 1KB de EEPROM Esquema de correspondencia entre pines del microcontrolador (formato DIP) y la función en Arduino Vemos a continuación la correspondencia entre los pines del microcontrolador Atmel y la placa Arduino Esquema técnico de la placa En el siguiente esquema mostramos el esquema técnico de la placa Arduino Nuevilanove, en el que se ve claramente el esquema típico de una placa Arduino expuesto en el apartado anterior, es decir, una Grupo 5. Arquitectura Arduino Página 8 de 24

94 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 placa, un microcontrolador ATmega y un circuito integrado para la conversión USB a Serie. Destacamos en el mismo los circuitos principales Esquema de Arduino simplificado montado en una protoboard Mostramos a continuación como siguiendo el esquema anterior y comprando los componentes necesarios montar un Arduino en una protoboard como las que tenemos en los laboratorios. Como mostramos en la siguiente imagen. Grupo 5. Arquitectura Arduino Página 9 de 24

95 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Interconexión entre placas Arduino Arduino es capaz de conectarse a otros dispositivos mediante distintas formas ya que tiene soporte para protocolos I2C (Inter-Integrated Circuit), Serie UART TTL (Universal Asynchronous ReceiverTransmitter), USB y SPI (Serial Peripheral Interface). I2C: Arduino dispone de librerías para facilitar el manejo de el protocolo I2C que tal como hemos visto en clases se trata de un bus de comunicaciones en serie que permite velocidades de hasta 3.4Mbit/s y que es muy utilizado para las comunicaciones entre microcontroladores y con periféricos. Su principal característica es que utiliza dos líneas para transmitir la información, una para datos y la otra para el reloj. SPI: Arduino no dispone de librerías para el tratamiento de este protocolo aunque físicamente sí que lo soporta. Grupo 5. Arquitectura Arduino Página 10 de 24

96 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Serie UART TTL (Universal Asynchronous Receiver-Transmitter): Está disponible a través de los pines digitales 0(RX) y 1(TX) y existen librerías para el manejo de comunicación serie por cualquier par de pines digitales. USB: La placa trae un chip FTDI FT232RL integrado que canaliza la comunicación serie a través del USB y los drivers FTDI (incluidos en el software de Arduino) proporcionan un puerto serie virtual en el ordenador Shield Los Shields son placas que se colocan encima de la placa Arduino y que amplían una nueva función para que sea controlada desde Arduino, para controlar diferentes aparatos, adquirir datos, etc. Por norma general estas placas puentean los conectores para que puedan ser usados más cómodamente desde la placa shield que estaría encima de la del Arduino original. Existen distintos tipo con diversas características: a) Arduino Ethernet Shield: La shield provee un conector Ethernet estándar RJ45 que permite conectar un Arduino a la red controlándolo con la librería Ethernet. b) Xbee Shield: La Xbee shield permite a una placa Arduino comunicarse de forma inalámbrica usando Zigbee que es un protocolo cuyo objetivo son las aplicaciones que requieren Grupo 5. Arquitectura Arduino Página 11 de 24

97 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 comunicaciones seguras con baja tasa de envío de datos y maximización de la vida útil de sus baterías. Muy útiles para su aplicación en domótica. c) Arduino Motor Shield: Permite manejar dos motores de corriente continua con una placa Arduino, controlando la velocidad y dirección de cada uno de manera independiente además de otras características. 5.- VARIABILIDAD Existe una placa base y sobre esta existen otras que amplían las características para cubrir todos los proyectos posibles. Estas a su vez tienen distintas versiones, pero no entraremos en los detalles de estas. La placa básica actual es la Duemilanove (2009) pero todavía existen muchos modelos que tienen como base la anterior, Diemicila. La diferencia entre ambas es el uso del microprocesador Atmel ATmega328 en la Duemilanove mientras que la Diemicila y los primeros diseños de los Duemilanove, usa un micro Atmel ATmega168. A continuación presentamos la placa básica y posteriormente las distintas versiones y sus usos. Grupo 5. Arquitectura Arduino Página 12 de 24

98 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Duemilanove: Micro-controlador ATmega368 (ATmega168 en versiones anteriores) Voltaje de 5V funcionamiento Voltaje de entrada 7-12V (recomendado) Voltaje de entrada 6-20V (limite) Pines E/S digitales 14 (6 proporcionan salida PWM) Pines de entrada 6 analógica Intensidad por pin 40 ma Intensidad en pin 3.3V 50 ma 16 KB (ATmega168) o 32 KB (ATmega328) de las Memoria Flash cuales 2 KB las usa el gestor de arranque(bootloader) SRAM 1 KB (ATmega168) o 2 KB (ATmega328) EEPROM 512 bytes (ATmega168) o 1 KB (ATmega328) Velocidad de reloj 16 MHz La alimentación puede ser por USB o externa. La externa puede ser por batería o por una pila. Presentamos a continuación las variantes de esta placa base: Arduino Nano, tiene la misma funcionalidad que la Duemilanove, pero en un formato compacto con el objetivo de ser integradas en protoboards (placas de desarrollo). El conector también difiere siendo un mini-usb. Arduino Mega, esta pensada para proyectos más grandes y con más requerimientos. Utiliza el micro ATmega1280. Esta preparada para dar mas funcionalidades. Consta de 54 entradas / salidas digitales y 128 KB de memoria. Los pines están diseñados de tal forma que sean compatibles con las placas diseñas para la Duemilanove. Arduino BT (Bluetooth), permite la comunicación inalámbrica, por lo que puede comunicarse y programarse sin cables. Tiene una diferencia Grupo 5. Arquitectura Arduino Página 13 de 24

99 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 importante y es que el voltaje oscila entre 1,2 y 5,5 V, Los voltajes superiores estropean la placa. Arduino Limpiad, de lejos nuestro favorito. Diseñado para prendas y etextil. Se puede coser a la ropa, lavar (acordándose de quitar la alimentación) pero no secar en la secadora. Esta diseñada en colores que las hace atractivas. Tiene límites de voltaje similares a la BT, o, como dice textualmente las especificaciones, la mataras. La velocidad del reloj baja a 8 MHz. Arduino FIO, diseñado para proyectos inalámbricos. Funciona a 3.3 V a 8 MHz. Tiene un zócalo para añadir un módulo XBEE ( ) de forma que pueden ser programados de forma inalámbrica. Arduino Mini, se utiliza en placas de prototipado que necesiten minimizar el espacio que requieren. Arduino Pro y Pro-mini: Diseñada para dejar incrustada en los diseños. Son mas baratas que las duemicila porque le faltan componentes extra y montaje, lo que las hace exclusivas para usuarios avanzados. La diferencia entre la pro y la pro-mini es el tamaño y el consumo. Diseños propios Evidentemente Arduino es una plataforma Hardware Open-Source, por lo que cualquiera puede diseñar sus propias placas Arduino. Los diseños están liberados de forma que cualquiera pueda usarlos. Si además quieres usar el nombre Arduino para el diseño, fabricación y distribución de estas placas, puedes hacerlo siguiendo una serie de requisitos que hacen que los productos cumplen con los estándares. Importante, no podrás fabricar un producto Arduino si no te aseguras que las condiciones laborales de las empresas que te proveen de hardware sean justas. 6.- HERRAMIENTAS DE DESARROLLO Arduino utiliza el lenguaje de programación Processing, que es básicamente C++, conjuntamente con la biblioteca Wiring (una especie de sistema operativo muy pequeño, que exporta las funciones para el Grupo 5. Arquitectura Arduino Página 14 de 24

100 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 control del hardware: entradas y salidas analógicas y digitales, temporización, interrupciones, manejo del puerto serie, etc.). Las librerías incluidas en la plataforma (Servomotores, EEPROM, Ethernet, LCD, etc.) permiten controlar, de forma inmediata (ahorrando nuevamente tiempo de desarrollo), diversos dispositivos externos o componentes del propio microcontrolador. Los archivos fuentes (llamados sketches o bocetos) son preprocesados y convertidos en ejecutables usando las herramientas de desarrollo GNU WinAVR. El entorno de desarrollo es un editor de texto muy sencillo e intuitivo con las opciones básicas de edición de texto, un área de mensajes, una barra de herramientas con botones para las funciones comunes y una serie de menús. A través de este entorno de desarrollo se puede comunicar directamente con el Arduino, cargar programas etc. Destaca también la posibilidad de crear librerías que se pueden incluir en el programa que estemos haciendo incluyendo la palabra #include. Al igual que el MPLAB habrá que seleccionar la placa a la que estamos haciendo referencia antes de programar nada. Grupo 5. Arquitectura Arduino Página 15 de 24

101 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Una de las principales ventajas que ya hemos destacado de Arduino y por lo que esta triunfando en el mundo académico es su facilidad de programación en lenguaje de alto nivel. Para reflejarlo exponemos a continuación un ejemplo típico y es un contador de 00 a 99. Podemos ver las diferencias con respecto a los contadores realizados este año en las prácticas. Grupo 5. Arquitectura Arduino Página 16 de 24

102 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 /* * contadordepulsos.pde * * Contador de dos dígitos de 00 a 99 * * Cada vez el pin de entrada va de ALTO a BAJO, el pin de salida * es basculado de ALTO a BAJO o de BAJO a ALTO. Hay un retraso * mínimo entre basculados para evitar los rebotes del circuito. * * Fecha: 30/08/10 * Autor: V. Garcia * */ int switchpin = 8; // switch se conecta al pin 8 int ledpin = 2; int val; // el LED se conecta al pin 2 // variable para lectura del estado del pin int val2; // variable para leer el estado delayed/debounced int botonstado; // variable para mantener el estado del botón int buttoncounter =0 ; // contador para el número de pulsos de botón int lightmode = 0; // Esta la luz EN o AP void setup() { pinmode(switchpin, INPUT); // pone el pin switch como entrada pinmode(ledpin, OUTPUT); Serial.begin(9600); // Comunicación serie puesta a 9600bps botonstado = digitalread(switchpin); // lee el estado inicial // buttoncounter = 92; // lo uso para saltarme los 91 primeros. Despues se quita } void loop(){ val = digitalread(switchpin); // lee el valor de entrada y almacénlo en val delay(10); // 10 milisegundos son una cantidad de tiempo buena val2 = digitalread(switchpin); // lee la entrada otra vez para comprobar saltos if (val == val2) { // asegúrar que conseguimos 2 lecturas constantes if (val!= botonstado) { if (val == LOW) { // el estado de botón ha cambiado! // compruebe si el botón es presionado buttoncounter + + ; if (lightmode == 0) { lightmode = 1; // esta la luz AP? // conecta la luz! digitalwrite(ledpin, HIGH); Grupo 5. Arquitectura Arduino Página 17 de 24

103 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 } else { lightmode = 0; // apaga la luz! digitalwrite(ledpin, LOW); } Serial.print("Número de pulsaciones: "); // muestro las if (buttoncounter <10) Serial.print("0"); Serial.println(buttonCounter, DEC); // pulsaciones // habidas } if (buttoncounter >= 99){ buttoncounter = 0; } } botonstado = val; // guardar el nuevo estado en la variable } } Ponemos en relieve ciertos aspectos que nos dan una visión de esta diferencia en la facilidad de programación: Retardo de 10 milisegundos: Delay(10) Guardar en memoria un valor: botonstado = val Asociar un valor a un pin: int switchpin = EJEMPLOS REALES CON ARDUINO Expondremos a continuación algunos ejemplos reales realizados con Arduino que intenten reflejar la potencialidad y la variabilidad de los proyectos realizados con el Cafetera Activada Vía Twiter: Pues eso, una cafetera conectada a una placa Arduino y esta a un ordenador, desde nuestro smartphone podremos darle la orden vía twitter de hacer el café. Grupo 5. Arquitectura Arduino Página 18 de 24

104 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 feature=player_embedded&v=61ojt-lxqlu Manejo de un Robot con el mando de la WII Con este ejemplo tratamos de reflejar que Arduino se puede adaptar a tecnologías ya existentes feature=player_embedded&v=qlukl5fli7s Grupo 5. Arquitectura Arduino Página 19 de 24

105 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Helicóptero de Aeromodelismo Una de las aplicaciones que mas esta creciendo el Arduino es en el modelismo, como ejemplo este Helicóptero de Radio control. v=guufuopofqs&feature=related Chaqueta de aviso con lilypad Una chaqueta orientada a ciclistas en la que a través de leds podemos señalar con un movimiento de cabeza la dirección que tomamos. Grupo 5. Arquitectura Arduino Página 20 de 24

106 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Arte Digital Otra de las disciplinas en las que Arduino ha entrado con mucha fuerza ha sido el arte Digital Impresora 3D Grupo 5. Arquitectura Arduino Página 21 de 24

107 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Mención especial hacemos aquí a la impresora 3D. Es una impresora que imprime objetos físicos en plástico, es decir, me bajo el diseño de un objeto físico (todo open) y soy capaz de imprimirlo y usarlo. Por ejemplo colgadores, abrebotellas, silbatos, coches de juguete etc CONCLUSIONES Las conclusiones que podemos sacar del estudio de esta arquitectura, al igual que todo el trabajo, quizás hay que verlas siempre desde dos vertientes, la propia tecnología y el concepto de hardware open-source. Desde el punto de vista de la tecnología quizás Arduino no sea la mejor de las opciones, probablemente su micro no sea de los mejores del mercado (los PIC están bastante por encima), ni por prestaciones, ni por tecnología, ni por velocidad y mucho menos por las capacidades que da. Tampoco destaca una gran variabilidad (simplemente comparar con la cantidad de familias que tienen los PIC) aunque si que tiene un modelo para casi cualquier proyecto y, aunque al principio eran a precios muy competitivos, ahora mismo tampoco es que sea una diferencia muy grande con otros fabricantes del mercado (solo unos pocos euros). Entonces, Qué ha hecho que Arduino cada vez se vea, use y oiga más?. Nosotros creemos que probablemente sea la facilidad de uso. El que venga totalmente integrado, se conecte al ordenador por USB, que el propio sistema de desarrollo sirva para quemar el micro y sobre todo, el lenguaje de programación de alto nivel, hace que sean muy atractivos Grupo 5. Arquitectura Arduino Página 22 de 24

108 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 tanto para los entornos educacionales (se programa en C, que mas decir) como para los neófitos en tecnología, acercando el uso y desarrollo de proyectos digitales a muchas mas personas. Con esta última aseveración enlazamos con la otra vertiente, hardware open-source y programas open source. El que hayan elegido el proyecto como hardware open-source y que todo lo que se desarrolle en el sea open-source hace que su popularidad haya crecido exponencialmente. Hay gran cantidad de información, ejemplos prácticos, modelos, esquemas etc a la disposición de cualquiera. Una comunidad que ha crecido mucho y sigue creciendo que presta apoyo y regala su conocimiento (no olvidar que sobre todo ha comenzado en entornos universitarios, y son sobre todo estos entornos donde mas se fomenta el altruismo) hace que sea una arquitectura muy atractiva para comenzar a adentrarte en el mundo de la electrónica. 9.- INDICE DE PALABRAS CRUZADAS Arduino BT...14 Arduino Ethernet Shield...11 Arduino FIO...14 Arduino Lilypad...14 Arduino Mega...13 Arduino Mini...14 Arduino Motor Shield...12 Arduino Nano...13 Arduino PRO...14 Arduino PRO-mini...14 Atmel...4 Atmega David Cuartielles...5 Diemicila...12 Duemilanove...7,13 Massimo Banzi...3 Hardware Open-source...3,4 Processing...15 Shields...11 WinAVR...15 Wiring...15 XBEE shield...11 Grupo 5. Arquitectura Arduino Página 23 de 24

109 Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática Grado en Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ REFERENCIAS Grupo 5. Arquitectura Arduino Página 24 de 24

110 Grupo 6

111 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 SERVICIOS DE TIEMPO REAL POSIX Antonio Javier Guerra Suárez Jaime Jesús González Santana Marco Antonio Santana Almeida

112 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Diciembre 2011

113 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Índice de contenido 0. Introducción Idea Original Características SSOO Convencionales vs SSOO Tiempo Real Sistemas tiempo real críticos y acríticos Sistemas con parada segura y con degradación aceptable Sistemas con respuesta garantizada y sistemas que hacen lo que pueden Sistemas con recursos adecuados e inadecuados Sistemas dirigidos por eventos y por tiempo Estándares POSIX Servicios básicos del Sistema Operativo (1003.1) Extensiones de tiempo real (1003.1b) Extensiones de threads (1003.1c) Extensiones adicionales de tiempo real (1003.1d) Extensiones de tiempo real avanzadas (1003.1j) Perfiles de aplicaciones de tiempo real ( ) Comunicaciones para sistemas distribuidos de tiempo real ( ) Consideraciones en tiempo real Mecanismos de comunicación Servicios Adicionales Scheduling (Planificación) Concurrencia Políticas de planificación Temporización Conclusiones Indice de palabras cruzadas Referencias...26

114 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Servicios de Tiempo Real POSIX 0. Introducción El estándar POSIX define una interfase portable para aplicaciones basadas en el sistema operativo UNIX. El principal objetivo de este estándar es la portabilidad de las aplicaciones a nivel de código fuente, mediante la unificación de las diferentes versiones del UNIX. Una parte importante del POSIX aborda las necesidades de las aplicaciones de tiempo real. Aunque el UNIX no ha sido hasta ahora un sistema operativo para sistemas de tiempo real, es posible adaptarlo a estos sistemas si se le añaden los servicios necesarios, y se eliminan también aquellas funciones que dificultan implementaciones pequeñas y eficientes. En este documento se comentarán las extensiones de tiempo real del POSIX y cómo estas extensiones permiten abordar las necesidades de aplicaciones con requerimientos de tiempo real. 1. Idea Original POSIX es el acrónimo de Portable Operating System Interface, la X viene de UNIX como seña de identidad de la API. El término fue sugerido por Richard Stallman en respuesta a la demanda de la IEEE, que buscaba un nombre fácil de recordar. Una traducción aproximada del acrónimo podría ser "Interfaz de sistema operativo portable" o "Interfaz portable de sistema operativo". Los trabajos de POSIX fueron iniciados por el grupo de usuarios UNIX, conocidos también como /usr/group, en un intento por integrar las interfaces de los sistemas AT&T System V y Berkeley CSGR. Este esfuerzo fue conocido como The 1984 /usr/group Standard. Después de la publicación del documento en el que presentaban sus resultados, el grupo decidió buscar reconocimiento del IEEE para el estándar. En 1984 el grupo dio por terminadas sus actividades y muchos de sus miembros se involucraron en los trabajos del Comité POSIX del IEEE de tal manera que lo hecho anteriormente pudiera servir como la base de un estándar internacional oficial. En Agosto de 1988 se aprobó dicho estándar como el IEEE Standard , a Portable Operating System Interface for Computer Environments Página 4 de 27

115 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Características Son una familia de estándares de llamadas al sistema operativo definidos y desarrollados conjuntamente por la Computer Society del IEEE y The Open Group : También denominado The Single UNIX Specification La denominación oficial es IEEE Std. 1003, e ISO/IEC 9945 Persiguen generalizar las interfases de los sistemas operativos para que una misma aplicación pueda ejecutarse en distintas plataformas. Estos estándares surgieron de un proyecto de normalización de las API y describen un conjunto de interfaces de aplicación adaptables a una gran variedad de implementaciones de sistemas operativos. Especifica las interfaces de usuario y software al sistema operativo. Los servicios a nivel de programa requeridos incluyen definición de estándares básicos de E/S, (file, terminal, y servicios de red). También especifican una API para las bibliotecas de threading, que es muy utilizada en una gran variedad de sistemas operativos de tiempo real. 2.1 SSOO Convencionales vs SSOO Tiempo Real Los sistemas operativos convencionales no son adecuados para realizar sistemas de tiempo real ya que no tienen un comportamiento determinista ni permiten garantizar los tiempos de respuesta. Por eso un sistema operativo de tiempo real debe soportar : Concurrencia: procesos ligeros (threads) con memoria común. Comunicación síncrona y asíncrona entre procesos. Temporización: medida de tiempos y ejecución periódica. Planificación: prioridades fijas con desalojo, acceso a recursos con protocolos de herencia de prioridad. Planificación de procesos de tiempo real. Planificación expulsiva. Garantía de respuesta a interrupciones. Prioridades dinámicas. Dispositivos de E/S: acceso a recursos de hardware e interrupciones. E/S de altas prestaciones. Adquisición de datos a altas velocidades. Acceso a redes con protocolos deterministas. Seguridad y fiabilidad. Los sistemas de tiempo real interaccionan con su entorno y ejecutan sus acciones dentro de intervalos de tiempo determinados. Tienen requisitos funcionales, temporales y de fiabilidad muy exigentes. Hay varias clases de sistemas de tiempo real: Página 5 de 27

116 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Críticos y acríticos. Con parada segura, degradación aceptable y tolerancia de fallos completa. Con respuesta garantizada y que hacen lo que pueden. Con recursos adecuados e inadecuados. Dirigidos por eventos y por tiempo Sistemas tiempo real críticos y acríticos En general se distinguen por sus requisitos temporales y de fiabilidad. Los sistemas críticos, se caracterizan por tener un plazo de respuesta estricto, dicho comportamiento temporal viene determinado por su entorno. Tienen un comportamiento de sobrecargas predecible, con un volumen de datos reducido y unos requisitos de seguridad críticos y redundancia activa. Los sistemas acríticos, se caracterizan por tener un plazo de respuesta flexible, dicho comportamiento temporal viene determinado por el computador. Tienen un comportamiento de sobrecargas degradado, con un gran volumen de datos y unos requisitos de seguridad acríticos y con recuperación de fallos. Para desarrollar software para sistemas de tiempo real críticos es necesario utilizar métodos y herramientas especiales : Lenguajes de programación: C, Ada. Sistemas operativos: normas POSIX para tiempo real Sistemas con parada segura y con degradación aceptable En general se distinguen por su comportamiento en caso de avería. Los sistemas con parada segura, se caracterizan por tener detenciones en estado seguro, obteniendo una elevada probabilidad de detección de fallos. Los sistemas con degradación aceptable, se caracterizan por tener un funcionamiento con pérdida parcial de funcionalidad o pérdida parcial de prestaciones, aunque también hay sistemas con tolerancia de fallos completa. Página 6 de 27

117 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Sistemas con respuesta garantizada y sistemas que hacen lo que pueden En general se distinguen por su grado de determinismo temporal. Los sistemas con respuesta garantizada, se caracterizan por tener un comportamiento temporal garantizado analíticamente, donde hace falta caracterizar con precisión la carga máxima y los posible fallos. Los sistemas que hacen lo que pueden, se caracterizan por tener un comportamiento temporal de tipo "lo mejor que se pueda", donde no tienen una caracterización precisa de carga ni de fallos. Sólo sirven para sistemas acríticos Sistemas con recursos adecuados e inadecuados En general se distinguen por la cantidad de recursos disponibles. Los sistemas con recursos adecuados, se caracterizan por tener un diseño con suficientes recursos para garantizar el comportamiento temporal con máxima carga y en caso de fallos. Los sistemas con recursos inadecuados, se caracterizan por tener un diseño con recursos "razonables" desde un punto de vista económico. Sólo sirve para sistemas acríticos Sistemas dirigidos por eventos y por tiempo En general se distinguen por la forma de arrancar la ejecución de sus actividades. Los sistemas dirigidos por eventos, se caracterizan por tener un arranque de su actividad cuando se produce un evento de cambio de estado. Su mecanismo básico para controlar dichos eventos viene determinado por la utilización de interrupciones. Los sistemas dirigidos por tiempo, se caracterizan por tener un arranque de su actividad en instantes de tiempo predeterminados. Su mecanismo básico de control viene determinado por el uso de un reloj. Página 7 de 27

118 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Estándares POSIX Se determinan de la siguiente manera : Servicios básicos del Sistema Operativo (1003.1) Define los servicios más básicos de un sistema operativo UNIX convencional, que se centran en dos objetos fundamentales: los procesos, que proporcionan la ejecución concurrente de programas en espacios de direcciones independientes; y los ficheros, que son objetos que representan distintas facilidades del sistema operativo (p.e. datos, dispositivos de I/O, etc.) sobre las que se pueden realizar operaciones de lectura o escritura. Los servicios definidos en el POSIX incluyen la gestión de procesos, identificación y entorno de procesos, notificación de eventos a través de señales, algunos servicios de temporización muy primitivos, servicios de ficheros y directorios, entrada/salida, control de terminales y bases de datos del sistema para usuarios y grupos. Ejemplos de algunos servicios : Servicios de administración de procesos fork() : Duplica el proceso. exit() : Finaliza el proceso. Servicios de identificación y entorno de procesos getpid() : Obtiene el ID del proceso. getuid() : Obtiene el ID del usuario. Servicios de señales kill() : Envía una señal. sigaction() : Fija el manejador de una señal. Servicios de temporización alarm() : Programa el envío de la señal SIGALRM al procesador. sleep() : Suspende el proceso por un tiempo. Página 8 de 27

119 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Servicios de archivo y directorio opendir() : Abrir un directorio. rename() : Renombrar un archivo. Servicios de entrada/salida pipe() : Crea un tubo entre procesos. read() : Lee de un archivo. Servicios de control de terminales tcsetattr() : Fija los atributos de un terminal. cfsetospeed() : Fija la velocidad de salida de un terminal. Servicios de acceso a la base de datos del sistema getgrpid() : Obtener información de un grupo. getpwpid() : Obtener información de un usuario Extensiones de tiempo real (1003.1b) Define las extensiones básicas de tiempo real que se consideraron esenciales para dar soporte a aplicaciones con requisitos de tiempo real. Los servicios descritos en este estándar se pueden agrupar en dos categorías: Servicios que facilitan la programación concurrente. Son necesarios porque la mayoría de las aplicaciones de tiempo real son concurrentes, y sus procesos cooperan estrechamente. Incluidos entre estos servicios podemos encontrar: la sincronización de procesos mediante semáforos contadores; objetos de memoria compartida, que permiten a los procesos con espacios de direcciones independientes compartir información; colas de mensajes, que permiten el intercambio de eventos o datos entre procesos; entrada/salida asíncrona, que permite a la aplicación ejecutarse en paralelo con las operaciones de entrada/salida; y entrada/salida sincronizada, que permite un mayor grado de predecibilidad en las operaciones de entrada/salida sobre ficheros. Servicios que se necesitan para conseguir un comportamiento temporal predecible: Incluyen la planificación expulsora de procesos mediante políticas basadas en prioridades fijas; la inhibición de memoria virtual para el espacio de direcciones de un proceso, con objeto de conseguir un tiempo de acceso a memoria predecible; señales de tiempo real, que proporcionan un comportamiento más predecible para las señales; y relojes y temporizadores, que permiten la gestión del tiempo desde la aplicación. Ejemplos de algunos servicios : Servicios para facilitar la programación concurrente Semáforos sem_wait() : Cerrar/esperar un semáforo. sem_post() : Abrir un semáforo. Memoria compartida shm_open() : Abrir un objeto de memoria compartida. shm_unlink() : Borrar un objeto de memoria compartida. Colas de mensajes mq_send() : Enviar un mensaje. m_receive() : Recibir un mensaje. Página 9 de 27

120 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 E/S asíncrona Aio_write() : Escribir de manera asíncrona en un archivo. Aio_suspend() : Esperar una operación de E/S asíncrona. E/S síncrona fsync() : Sincronizar los cambios de un archivo. fdatasync() : Sincronizar los datos de un archivo. Servicios para conseguir un comportamiento temporal predecible Planificación sched_setparam() : Fijar los parámetros de planificación. Sched_yield() : Ceder el procesador al planificador. Bloqueo/desbloqueo de memoria mlock() : Bloquear un rango del espacio de direccionamiento del proceso (residente en memoria). munlock() : Desbloquear un rango del espacio de direccionamiento de proceso. Señales de tiempo real sigqueue() : Enviar una señal a un proceso. sigwaitinfo() : Esperar una señal, sin llamar al manejador. Relojes y temporizadores clock_settime() : Fijar la hora. timer_settime() : Fijar el tiempo de expiración de un temporizador Extensiones de threads (1003.1c) Las unidades de concurrencia del POSIX son los procesos con espacios de direcciones independientes. Por el contrario, las tareas de un núcleo de tiempo real de alta eficiencia comparten el mismo espacio de direcciones y tienen un estado asociado pequeño. Con el propósito de incrementar la eficiencia, se introdujeron en el POSIX los threads, o procesos ligeros, como un mecanismo de concurrencia de alta eficiencia. Bajo la extensión de threads, cada proceso POSIX puede tener múltiples flujos de control concurrentes, todos ellos compartiendo el mismo espacio de direcciones. El estándar proporciona servicios para la gestión, cancelación, planificación, y sincronización de threads. Ejemplos de algunos servicios : Administración de hilos pthread_create() : Crear un hilo. pthread_exit() : Finalizar un hilo. Cancelación de hilos pthread_cancel() : Terminar la ejecución de otro hilo. pthread_setcancelstate() : Fija la opción de cancelación de un hilo. Planificación de hilos sched_get_priority_min() : Obtener el nivel de prioridad mínimo. Sincronización de hilos pthread_mutex_lock() : Cerrar un mutex (semáforo binario). pthread_cond_wait() : Esperar en una variable condicional. Página 10 de 27

121 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Extensiones adicionales de tiempo real (1003.1d) Dichos servicios incluyen el arranque rápido de procesos, tiempos límite en servicios bloqueantes, medida y limitación de tiempos de CPU, planificación de servidor esporádico e información para implementación de ficheros de tiempo real. Ejemplos de algunos servicios : Tiempo limite en servicios bloqueantes pthread_mutex_timedlock() : Bloquear un mutex (semáforo binario). Medida y limitación de tiempos CPU clock_getcpuclockid() : Acceder a un proceso de tiempo de CPU de reloj. pthread_getcpuclockid() : Acceder a un hilo de la CPU en tiempo de reloj. Información ficheros tiempo real posix_fallocate() : Control de espacio de archivos. posix_spawn_file_actions_addclose() : Añadir la acción cerrar el archivo para especificar una serie de acciones a ser realizadas Extensiones de tiempo real avanzadas (1003.1j) Estos servicios incluyen primitivas adicionales de sincronización en aplicaciones multiprocesador para lograr las ventajas de rendimiento de su arquitectura hardware. Permite la gestión de memoria de diversos tipos que están presentes en el sistema, compartiendo parte de esta memoria con programas de aplicaciones independientes. Nuevos relojes monotónico y sincronizado, para establecer el tiempo de un reloj en el tiempo de servicios y la adición de funciones para apoyar la suspensión relativa o absoluta basada en un reloj especificado por la aplicación. Ejemplos de algunos servicios : Sincronización multiprocesador pthread_barrierattr_getpshared () : Obtener el atributo de proceso compartido. pthread_rwlockattr_init() : Inicializar los atributos de lectura y escritura de bloqueo de objetos. Gestión memoria compartida posix_typed_mem_get_info() : Información de la consulta de memoria tipo. posix_mem_offset() : Encontrar desplazamiento y la longitud de un bloque de memoria asignada de tipo. Relojes monotónico y sincronizado pthread_condattr_getclock (): Obtener la selección del reloj condición de atributo variable. clock_nanosleep() : Modo sleep de alta resolución con el reloj especificado Perfiles de aplicaciones de tiempo real ( ) Página 11 de 27

122 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Intentar incluir todas las características definidas por POSIX en un sistema operativo pudiera no ser siempre lo más apropiado. Existen sistemas en los que basta un subconjunto de las interfaces propuestas por POSIX, como en los sistemas empotrados de tiempo real que tienen limitaciones de espacio y recursos. El estándar de perfiles de entorno de POSIX o POSIX.13 se definió para atender este problema, proporcionando los adecuados subconjuntos con características del estándar base que son necesarias para cada entorno particular de aplicación. Página 12 de 27

123 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 El estándar define cuatro perfiles de entorno de aplicación: PSE51 o Perfil de Sistema Mínimo de Tiempo Real : Desarrollado para sistemas empotrados pequeños sin Unidad de Administración de Memoria (MMU), sin discos o sistema de ficheros, y sin terminal. Tan sólo se permite un proceso con múltiples hilos en ejecución. PSE52 o Controlador de Tiempo Real : Orientado para un controlador de propósito específico, sin MMU pero con un disco conteniendo un sistema de ficheros simplificado. PSE53 o Sistema Dedicado de Tiempo Real : Corresponde con sistemas empotrados de gran tamaño, sin disco pero con MMU. Las aplicaciones pueden beneficiarse de los mecanismos de protección de memoria y comunicación de red en este perfil. PSE54 o Sistema de Tiempo Real de Propósito Múltiple : Este perfil esta orientado a grandes sistemas de tiempo real con todas los servicios incluidos, entre ellos con un ambiente de desarrollo, comunicaciones de red, sistema de ficheros en disco, interfaz gráfica de usuario, entre otros. Con los perfiles de tiempo real definidos, es posible implementar sistemas operativos conformes al estándar POSIX que sean aptos para una gran variedad de plataformas de tiempo real de diferentes tamaños, y con diferentes requerimientos. Las aplicaciones podrán ser portables de una plataforma a otra, siempre que sean conformes al mismo perfil, o que la nueva plataforma incluya todos los servicios de la anterior. Por ejemplo, una aplicación podrá ser portada de un sistema mínimo a un sistema con perfil de controlador de tiempo real, o a una plataforma con el perfil de sistema dedicado. Más aún, la misma aplicación que se ejecuta en un sistema empotrado muy pequeño podrá correr sobre un sistema de desarrollo dotado de todos los servicios, para poder ser depurada. Con el amplio espectro de posibilidades definidas por los perfiles actuales, los núcleos de tiempo real que se comercializan actualmente tendrán la posibilidad de proporcionar una interfase POSIX. Se prevé que la mayor parte de los núcleos y sistemas operativos de tiempo real que se distribuyan comercialmente en los próximos años serán conformes a uno de los perfiles POSIX de tiempo real; esto traerá la portabilidad de las aplicaciones al mundo del tiempo real. Página 13 de 27

124 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Comunicaciones para sistemas distribuidos de tiempo real ( ) Consideraciones en tiempo real La norma IEEE ha sido desarrollado para satisfacer las necesidades de las aplicaciones en el dominio de la computación en tiempo real, en particular, sistemas distribuidos. Las características incluidas para satisfacer las necesidades en tiempo real incluyen : Gestión de buffer: El estándar admite la administración de buffers que residen en el espacio de aplicación. Esta capacidad se espera que permita copiar cero implementaciones, teniendo en cuenta las latencias más cortas y más determinista para la transferencia de mensajes. Asíncrono y síncrono con la interacción de la aplicación: La mayoría de las operaciones se especifican, ya sea en una máquina asíncrona o síncrona. Esto permite el desarrollo de aplicaciones flexibles basados en sus necesidades de comunicación. Delimitación de bloqueo en la puesta en práctica: La mayoría de las operaciones tienen asociado un tiempo de aplicación. El uso de un tiempo muerto representa una demora, aunque sea la ejecución de una operación solicitada. Esto ayuda a eliminar problemas en los que una aplicación queda bloqueada mientras proporciona un servicio. Las prioridades de mensajes: Cada mensaje puede tener una prioridad de los mensajes asociados. La implementación debe atender mensajes de alta prioridad antes de dar servicio a los mensajes de baja prioridad. Este enfoque elimina problemas bien conocidos relacionados con las colas de mensaje FIFO. Dos representaciones de prioridad especificada. Uno se basa en una representación de entero simple, la otra en un plazo de representación. Las etiquetas de mensaje: Un mensaje puede tener una etiqueta de mensaje asociada que se transfiere con el mensaje. El uso de etiquetas de mensaje es un modelo eficiente para las aplicaciones, ya que no es Página 14 de 27

125 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 necesario conocer el conjunto de todos los receptores previstos. Una aplicación también puede registrarse para recibir mensajes de un tipo específico, lo que permite el filtrado de mensajes por la implementación. Este enfoque es similar a un modelo emisor receptor, en el cual, el elemento de negociación es la etiqueta del mensaje que se publica por las aplicaciones. Implementación del protocolo: La definición de un protocolo de cabecera para su uso entre aplicaciones. Este protocolo es necesario para apoyar la interoperabilidad de la prioridad del mensaje,tipo y formato. Estas son algunas de las consideraciones más importantes que el estándar incluye con respecto a los sistemas de tiempo real Mecanismos de comunicación Para comprender los mecanismos de comunicación proporcionados por el estándar , comenzamos señalando brevemente los componentes de interfaz básicos especificados en la norma. Estos incluyen : Criterios de valoración: Un punto final es un objeto que es creado y mantenido por la puesta en práctica. Es utilizado por las aplicaciones para enviar y recibir mensajes, y por la implementación para identificar el origen y destino de los mensajes. Mensajes: Un mensaje es una secuencia de octetos que se transfiere de un punto final local a uno o más terminales remotas. La semántica asociada a los datos del mensaje se define en su totalidad por una aplicación. Buffers: Un buffer es un área en la memoria utilizada para almacenar los mensajes de la aplicación. El uso de buffers impide las operaciones de copia, considerándose una importante optimización en tiempo real. Una aplicación también puede asignar memorias intermedias de espacio y el uso de los topes en las operaciones de transferencia de datos. Sin embargo, esta opción puede resultar menos eficiente en una operación de copia. Los nombres de lógica: Un nombre lógico se puede utilizar para identificar posiblemente uno o más puntos finales (en el caso de un grupo multicast). Los grupos de multidifusión: un grupo multicast se define como un conjunto de criterios de valoración. Grupos multicast se puede crear y eliminar por las aplicaciones, y los puntos finales pueden unirse o abandonar el grupo. El estándar apoya una serie de mecanismos de comunicación. La comunicación tiene lugar entre un extremo y sea un punto final de destino o un identificador que se utiliza para referirse a un conjunto de criterios de valoración. Los mecanismos básicos son : Uno a uno (unicast): transferencia de un mensaje de un extremo de origen a un destino de punto final. El punto final de destino no está obligado a estar dentro del mismo proceso que la fuente punto final. Uno a muchos (multicast): transferencia de un mensaje de un extremo de origen a un conjunto de conocidos puntos finales de destino, que se denota por un grupo de multidifusión. Uno a cualquiera: la transferencia de un mensaje de un extremo de origen a un conjunto de puntos finales de destino que se han registrado para recibir el mensaje, pero no se conocen al remitente. Los mensajes se indican con una etiqueta de mensaje que una aplicación puede registrar (o darse de baja) para recibir. El remitente no sabe quién recibe el mensaje. Uno a todos (broadcast): transferencia de un mensaje de un extremo de origen a todos los otros posibles puntos finales de destino. Asociado con un mecanismo de comunicación, puede haber varios servicios de calidad con atributos. Dos atributos importantes son : Página 15 de 27

126 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Prioridad: un requisito relativo a la aplicación para proporcionar una directiva de cola para el envío de y la recepción de un mensaje. Un mensaje puede tener una prioridad del mensaje de un entero valor o una fecha límite. Fiabilidad: un requisito relativo a la aplicación de entregar el mensaje sin errores. La relación entre el mecanismo de comunicación y calidad de servicio se resume de la siguiente manera: La prioridad de un mensaje puede ser incluido en cualquier mensaje. Una etiqueta del mensaje puede ser incluido en cualquier mensaje. La fiabilidad se puede especificar para uno a uno y los modelos de comunicación multicast Servicios Adicionales Los siguientes temas también están incluidos en el estándar : La inicialización y terminación: Una operación para la inicialización de la aplicación es proporcionada por el estándar. Esta inicialización se debe realizar antes de cualquier otra operación iniciada. La semántica de terminación también se define en la norma Hay dos diferentes casos en los que la semántica de terminación son necesarias. El primero es el caso de que finalice la aplicación por algún agente externo, como otro proceso. El segundo es el caso en que una unidad de aplicación programables (cualquiera de los procesos o subprocesos en el ámbito del proceso) termina voluntariamente. En el segundo caso, dos modos de terminación se proporcionan: elegante y abrupta. Como ejemplo de la semántica de terminación, si un hilo ha creado un extremo y el hilo se termina, los recursos asociados con el punto final están a disposición de otros subprocesos. Los servicios de directorio: Una interfaz de servicios de directorio ligero está incluido en el estándar. La interfaz permite que dos puntos de vista del modelo de nombres subyacente. En el primer caso, nombres lógicos se destacan, por ejemplo, es posible obtener un identificador local para un extremo remoto, especificado por su nombre lógico. En el segundo caso, el énfasis está en el buen protocolo dependiente de la dirección. Aquí, por ejemplo, una aplicación puede definir un identificador local para un determinado protocolo dependiente de la dirección. Protocolo de gestión y las asignaciones: La intención de la norma es hacer que la interfaz sea tan independiente como sea posible del protocolo. En la práctica, sin embargo, esto no es posible porque hay diferencias de base (de transporte) protocolos. El estándar proporciona soporte para el protocolo de TCP (Transmission Control Protocol), IP (Internet Protocol) y UDP (Universal Datagram Protocol). 3 Scheduling (Planificación) El problema al que se enfrenta la planificación consiste en que las tareas que se ejecutan concurrentemente compiten entre sí por los recursos del sistema, incluyendo entre ellos al procesador, y que estos deben ser asignados de tal manera que las tareas cumplan sus plazos. Para eso tenemos una serie de herramientas que comentaremos a continuación. 3.1 Concurrencia Página 16 de 27

127 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 En las primeras fases de desarrollo del estándar POSIX, la concurrencia únicamente estaba soportada a nivel de procesos. Los procesos tienen espacios de direcciones independientes y un estado asociado muy voluminoso. Los tiempos de cambio de contexto entre procesos son muy elevados, puesto que normalmente requieren la programación de la MMU. También son muy costosas las operaciones de creación y destrucción. Por estas razones su utilización resulta inadecuada en aplicaciones concurrentes que requieran alta eficiencia, como es el caso de muchas aplicaciones empotradas, o en sistemas que no dispongan de MMU, como es el caso de los sistemas empotrados pequeños. Para superar los problemas de falta de eficiencia presentados por los procesos, el estándar POSIX permite definir flujos de control concurrentes dentro de cada proceso, denominados threads. Los threads comparten el espacio de direcciones con los demás threads de su proceso y tienen un estado asociado mucho menor que el de aquellos, por lo que presentan tiempos de cambio de contexto, creación y destrucción mucho menores. El estándar define tres políticas de planificación para los procesos y los threads, que veremos a continuación. Estas tres políticas son compatibles entre sí, de forma que pueden ser utilizadas por threads pertenecientes al mismo proceso. El estándar c proporciona dos funciones de sincronización definidas para los threads son las exclusiones mutuas (mutex) y las variables condicionales. Las exclusiones mutuas permiten implementar secciones mutuamente exclusivas. En todo momento las exclusiones sólo puede encontrarse en uno de estos dos estados: libre o tomado por un único thread (denominado propietario). Cualquier thread que trate de tomar un mutex que no se encuentra libre se quedará bloqueado en dicho mutex. Cuando el thread propietario libera el mutex, éste será tomado por el thread de mayor prioridad de entre los encolados en él, quedando libre en caso de que no hubiera ninguno. Por su parte, las variables condicionales son utilizadas para la espera y señalización de eventos entre threads. La activación de un thread bloqueado en una variable condicional se realiza desde otro thread que, mientras se encuentra en posesión del mutex, señaliza la variable condicional y posiblemente modifica el predicado lógico. El thread se activa estando en posesión del mutex, por lo que el chequeo del predicado lógico se hace de forma mutuamente exclusiva. Cuando el predicado lógico es verdadero, la tarea libera el mutex y continúa su ejecución. 3.2 Políticas de planificación. Puesto que el número máximo de tareas que es posible ejecutar simultáneamente en un computador es limitado (como máximo igual al número de procesadores), es necesario definir un conjunto de reglas que permitan determinar qué tarea o tareas deben ser ejecutadas en cada momento. Estas reglas constituyen los denominados algoritmos o políticas de planificación, y de su elección depende en gran medida el que se satisfagan o no las restricciones temporales impuestas al sistema. La teoría de planificación proporciona diversas soluciones para conseguir un comportamiento temporal predecible junto a un alto nivel de utilización de la CPU. Una de las soluciones más simples y mejor conocidas es la planificación expulsora por prioridades fijas. En esta política cada proceso tiene una prioridad asignada, y el planificador elige para ejecución aquel que tiene mayor prioridad, de entre los que están listos para ejecutar. El POSIX especifica la planificación expulsora por prioridades fijas para los procesos y también para los threads, a partir de ahora los llamaremos tareas, pues las políticas sirven tanto para unos como para otros. Página 17 de 27

128 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 SCHED_FIFO: Este es el nombre de la política de planificación por prioridades,que usa orden FIFO (el primero en llegar es el primer en ser atendido) para determinar el orden en el que se ejecutan los elementos de la misma prioridad. Una vez que la tarea se comienza a ejecutar a nivel de prioridad alto, continuará en posesión de la CPU hasta que se bloquee, por ejemplo por esperar una acción de E/S, sea expulsada por otro de mayor prioridad o agote su capacidad de ejecución. Cuando la tarea agota su capacidad de ejecución, continúa en estado ejecutable pero a nivel de prioridad bajo. Página 18 de 27

129 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 SCHED_RR (Round Robin): este es el nombre de la política de planificación expulsora por prioridades que usa un esquema cíclico para planificar tareas de la misma prioridad. Después de que una tarea con esta política ha ejecutado durante un tiempo de duración fija, cederá a la próxima tarea de la misma prioridad, para que se ejecute. Este tiempo de duración fija se llama quantum y no se permite cambiarlo una vez especificado. También puede pasar que esta tarea pase a modo suspendido por una acción de E/S, u otra tarea de mayor prioridad reclame ser ejecutada. SCHED_OTHER: Se creo una tercera política en la cual el comportamiento viene definido por la implementación, y que se definió para permitir la compatibilidad con implementaciones ya existentes o predefinidas. Unix lo utiliza por defecto, realizando las tareas en un tiempo compartido sin prioridades. Las dos primeras políticas, que son generales a cualquier solución, la tercera política solo se utilizaría si queremos un comportamiento muy especial en una solución en concreto. Puede parecer un poco extraño que la política de planificación sea un atributo de cada tarea, y no un atributo global del sistema. Ello se debe a que las políticas de planificación definidas son compatibles entre sí y, de hecho, son idénticas excepto para el tratamiento de las tareas de la misma prioridad. En cualquier caso, la política recomendada para sistemas de tiempo real estricto es SCHED_FIFO. El estándar requiere como mínimo 32 niveles distintos de prioridad, que es un número suficiente para conseguir altos niveles de utilización incluso para números muy elevados de tareas. Página 19 de 27

130 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 En la siguiente imagen mostraremos cuales son las funciones posix para la creación de threads y como se estructura la planificación tanto para procesos como para threads. Para los procesos, los parámetros de planificación están encapsulados en una estructura sched_param. La llamada que permite cambiar la prioridad y la política de planificación de un proceso es sched_setscheduler. En el siguiente ejemplo, mostramos como se generan dos procesos con política SCHED_FIFO, y como uno de los procesos, en este caso el padre, espera a que se termine el hijo. Página 20 de 27

131 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Ejemplo de creación de procesos. Ejecución del ejemplo anterior En los threads los atributos de política de planificación y prioridad forman parte del objeto de atributos del propio thread que se usará posteriormente para crearlo. Es posible modificar o consultar estos atributos dinámicamente, después de que el thread haya sido creado (mediante las funciones pthread_setschedparam y pthread_getschedparam). Página 21 de 27

132 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Los atributos de planificación definidos en el estándar y que son útiles para aplicaciones de un solo proceso son los siguientes: política de planificación (schedpolicy): para tiempo real debemos elegir SCHED_FIFO o SCHED_RR. parámetros de planificación (schedparam): esta es una estructura extensible del tipo struct sched_params, que de momento sólo tiene un campo definido, sched_priority, que representa la prioridad del thread. herencia de atributos de planificación (inheritsched): este atributo define si los atributos de planificación usados para crear el thread se heredan del thread padre (PTHREAD_INHERIT_SCHED) o son los definidos en el objeto de atributos de thread (PTHREAD_EXPLICIT_SCHED). Es extremadamente importante colocar este atributo al valor PTHREAD_EXPLICIT_SCHED si deseamos que el nuevo thread tenga una política de planificación o una prioridad distinta de la del thread padre. Propiedades asociadas a los threads: Inicialización: pthread_attr_init y pthread_attr_destroy Tamaño de la pila: pthread_attr_setstacksize y pthread_attr_getstacksize Dirección de la pila: pthread_attr_setstackaddr y pthread_attr_getstackaddr Estado de desconexión: pthread_attr_setdetachstate y pthread_attr_getdetachstate Alcance: pthread_attr_setscope y pthread_attr_getscope Herencia: pthread_attr_setinheritsched y pthread_attr_getinheritsched Política de planificación: pthread_attr_setschedpolicy y pthread_attr_getschedpolicy Parámetros de planificación: pthread_attr_setschedparam y pthread_attr_getschedparam Página 22 de 27

133 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Temporización Un requisito general en sistemas de tiempo real es el poder medir el tiempo y ejecutar acciones específicas periódicamente, o en un instante de tiempo concreto, o cuando ha transcurrido un cierto intervalo de tiempo. Estos requisitos se pueden cubrir usando los servicios de relojes y temporizadores del POSIX b, que describimos brevemente a continuación: Relojes: El POSIX define un reloj de ámbito de sistema, identificado por el símbolo CLOCK_REALTIME. Aunque la resolución de este reloj puede ser de un nanosegundo, el estándar sólo impone a la implementación una resolución de al menos 20ms. Esto implica que el diseñador o diseñadora de la aplicación debe seleccionar cuidadosamente la implementación POSIX a usar, de modo que soporte al menos el nivel de resolución de reloj requerido por su aplicación. El estándar define funciones para consultar o modificar la hora tanto del reloj CLOCK_REALTIME como de cualquier otro reloj definido por la implementación que esté disponible (clock_gettime(), clock_settime()). Retraso de alta resolución: La función nanosleep() proporciona a un thread la capacidad de suspenderse a sí mismo hasta que transcurre un determinado intervalo temporal, medido según el reloj CLOCK_REALTIME. Aunque la función nanosleep() es útil para crear acciones temporizadas de forma relativa, es bien conocido que una operación de retraso relativo no sirve para crear acciones periódicas. Por esta razón se estandarizo en el POSIX P1003.1j una función de retraso basado en una hora absoluta del sistema. Temporizadores. Son objetos capaces de notificar a la aplicación del paso de un intervalo de tiempo o del momento en el que un reloj alcanza una determinada hora. La notificación que ocurre cada vez que el temporizador expira consiste en enviar al proceso una señal especificada por el usuario ( podemos esperar a que esta señal se produzca mediante la función sigwait()), o crear y ejecutar un thread. El instante de la primera ejecución se puede especificar como un intervalo relativo o una hora absoluta; además, el temporizador se puede programar para ejecutarse periodicamente después de la primera ejecución. El siguiente ejemplo muestra la implementación de threads periódicos mediante temporizadores. Este periodo y el número de señal a utilizar para la notificación de las ejecuciones del temporizador se le pasan al thread como parámetros. El thread espera a la señal mediante la función sigwait(), que requiere que la señal esté enmascarada en ese thread, y en todos los demás threads del proceso. Puesto que la máscara de señales se hereda del thread padre durante la creación, la mejor solución es que todas aquellas señales que van a ser usadas en operaciones sigwait() sean enmascaradas por el thread principal, y que posteriormente ningún thread toque su máscara de señales. Página 23 de 27

134 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Ejemplo de un thread periódico implementado mediante un temporizador #include <time.h> #include <pthread.h> /* Tipo de datos para el parámetro del thread */ struct periodic_data { struct timespec per; int sig_num; }; /* Thread periódico */ void * periodic (void *arg) { struct periodic_data my_data; int received_sig; struct itimerspec timerdata; timer_t timer_id; struct sigevent event; sigset_t set; /* Copiar el parámetro de entrada en una variable local */ my_data = * (struct periodic_data*)arg; /* Crear el temporizador */ event.sigev_notify = SIGEV_SIGNAL; event.sigev_signo = my_data.sig_num; timer_create (CLOCK_REALTIME, &event, &timer_id); /* Armar el temporizador */ timerdata.it_interval = my_data.per; timerdata.it_value = my_data.per; timer_settime(timer_id, 0, &timerdata, NULL); /* Preparar el conjunto de señales usado en la llamada a sigwait() */ /* La máscara de señales se heredará del thread padre */ sigemptyset (&set); sigaddset(&set,my_data.sig_num); /* Comenzar el lazo periódico */ while (1) {... do useful work; sigwait(&set,&received_sig); } } Como un ejemplo más cercano a este curso. Utilizaremos la Práctica 2, un reloj con horas, minutos, segundos y centésimas de segundo, que se mostrarán por pantalla, con un botón de parada y un botón para configurar la hora. La solución la plantearemos de la siguiente manera basándonos en un sistema basado en posix. Utilizaremos un proceso con tres threads con política SCHED_FIFO. Los dos con prioridad más alta serían el de parada y el de configurar la hora, ambos con la misma prioridad, para que cuando tomasen el control lo hicieran parando el thread que cuenta el tiempo, de menor prioridad, y además sean mutuamente exclusivos. Al principio del proceso lanzaremos los hilos de máxima prioridad haciendo que se mantenga a la espera de una señal para activarse. Y después lanzaríamos el thread contador de tiempo, que podríamos mantenerlo activo durante todo el tiempo, o utilizar temporización de una centésima de segundo para que se active. También se podría realizar con la misma política con procesos. Pero tendríamos que utilizar el MMU para poder guardar los datos a mostrar por pantalla, para la interacción entre los procesos, ahorrándonos esto si lo hacemos con threads, al tener el mismo espacio de memoria. Página 24 de 27

135 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Conclusiones A pesar de tener sus raíces en las interfaces de sistemas UNIX de complejidad elevada, el POSIX es un estándar de sistema operativo en evolución, donde una importante parte de este estándar está pensada para proporcionar la portabilidad de las aplicaciones, para una gran variedad de plataformas, desde los sistemas empotrados pequeños hasta los sistemas de tiempo real grandes. Aunque nunca se puede pretender que una aplicación de tiempo real pueda ser portada sin cambios de una plataforma a otra, las aplicaciones construidas de acuerdo a este estándar requerirán cambios sólo para las interfaces asociadas directamente al hardware y a los drivers de dispositivos, pero no requerirán cambios en todo lo que respecta a su concurrencia, sincronización, temporización, y funciones de acceso a los recursos del sistema. Este alto nivel de portabilidad se produce sin requerir una sobrecarga excesiva, tiempos impredecibles, o utilizaciones de memoria altas. Las funciones se han diseñado cuidadosamente para ser implementables de forma eficiente, y con una pérdida mínima de planificabilidad. La funcionalidad especificada en el estándar POSIX es similar a la que se encuentra en la mayoría de los núcleos y sistemas operativos de tiempo real disponibles comercialmente. A medida que las implementaciones comerciales vayan apareciendo, es razonable esperar que las aplicaciones construidas para cumplir este estándar se convertirán en una parte dominante del mercado de las aplicaciones pequeñas de tiempo real empotradas. Página 25 de 27

136 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Indice de palabras cruzadas Proceso o fork: Entidad de ejecución con espacio de direccionamiento independiente. Pág: 4, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20 Thread: Flujo de control concurrente dentro de cada proceso, que comparten el espacio de direcciones dentro proceso. Pág: 4, 10, 12, 17, 18, 19, 21, 22, 23, 24 MMU: Unidad de gestión de memoria. Pág: 13, 17 I/O: Entrada/salida, también se puede encontrar en algunos libros como E/S. Pág: 6 Multicast: Transferencia de un mensaje de un origen a un conjunto conocido de destinos. Pág: 15, 16 Broadcast: Transferencia de un mensaje de un extremo de origen a todos los otros posibles puntos finales de destino. Pág: 16 Mutex: Exclusiones mutuas. Pág: 10, 17 Concurrencia: Propiedad de los sistemas que permiten que múltiples procesos sean ejecutados al mismo tiempo y puedan interactuar entre sí. Pág: 4, 10, 17 Página 26 de 27

137 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Referencias POSIX. Diciembre Posix Realtime Test Suite. Diciembre Aldea Rivas, Mario. Planificación de Tareas en Sistemas Operativos de Tiempo Real Estricto para Aplicaciones Empotradas, Noviembre, Díaz Ramírez, Arnoldo. Marco de Referencia para la Definición de Planificadores a Nivel de Usuario en Sistemas de Tiempo-Real, González Harbour, Michael. Tostadores y Posix, Rendón Gallón,Álvaro. Sistemas de Tiempo Real, ftp://jano.unicauca.edu.co/cursos/sisttreal/transp/entornos.pdf, Marzo Alfonso Galipienso, Maria Isabel. Sistemas operativos y Soportes de Ejecución, De la Puente, Juan Antonio. Introducción a los sistemas de tiempo real, De la Puente, Juan Antonio. Diseño de sistemas de tiempo real, UPM.pdf, Septiembre Bill O. Gallmeister. POSIX.4: Programming for the Real World.O'Reilly, Página 27 de 27

138 Grupo 7

139 Sistema Operativo en Tiempo Real Salvo Sistemas Empotrados y de Tiempo Real Miguel Ángel Figueroa García. Grupo 7

140 RTOS Salvo Grupo 7 Índice de contenido Introducción...3 Idea Original...3 Características...3 Uso de recursos...4 Cómo se distribuye...4 Scheduling...5 Servicios de Tiempo Real...6 Control de tareas...6 Secciones críticas...7 Tiempo...7 Conclusión...7 Referencias...8 2

141 RTOS Salvo Grupo 7 Introducción El presente documento en una breve presentación de las características que ofrece el sistema operativo de tiempo real Salvo. Este documento no es una guía de programación y se ha evitado (en todo lo posible) el uso de terminología propia a la codificación de aplicaciones y tareas. Idea Original Salvo es un sistema operativo de tiempo real (RTOS) que implementa un sistema multitarea cooperativo basado en prioridades y manejado por eventos. El sistema ha sido diseñado para poder ser ejecutado en procesadores con muy limitados recursos (principalmente de ROM y RAM). En un sistema multitarea competitivo las tareas luchan por ser las siguientes en ejecutarse con bloques de tiempo de procesamiento limitado y complejidad en la utilización de datos globales en secciones críticas debido a la impredecibilidad de los cambios de contexto. Por el contrario en un sistema multitarea cooperativo son las propias tareas las que ceden el control al planificador (scheduler), por lo que las tareas completan sus unidades de procesamiento antes de entregarse al scheduler garantizándose la exclusividad del uso de las variables necesarias en entornos no paralelos. El sistema de prioridades en el RTOS Salvo se ha implementado para que el scheduler pueda ordenar por importancia las tareas que pasarán a ser ejecutadas en un cambio de contexto, e incluye servicios de eventos para la coordinación y comunicación entre tareas. Características Salvo es un RTOS con multitarea cooperativa y manejado por eventos puro. Tiene soporte completo a servicios de eventos y de tiempo. La multitarea está basada en prioridad con 16 niveles soportados, las tareas con la misma prioridad serán ejecutadas siguiendo el esquema round-robin. Salvo ofrece servicios de semáforos (binarios y contadores), mensajes, colas de mensajes y eventos asociados a flags (bits) para la comunicación entre tareas y manejo de recursos. También da soporte a las típicas funciones de un RTOS multitarea: cambios de contexto, iniciar/detener una tarea, etc. y funciones de temporización como: retardos, timeouts, temporizadores cíclicos, etc. Salvo está escrito en ANSI C, con un pequeño número de extensiones específicas al procesador. Es altamente configurable para soportar únicamente aquellas funciones necesarias en la aplicación a desarrollar y ahorrando memoria al sólo cargar aquellar funciones que serán utilizadas. Salvo ha sido diseñado para ser usado en microprocesadores y microcontroladores con recursos muy limitados, según sus creadores generalmente requerirá 3

142 RTOS Salvo Grupo 7 de 5 a 100 veces menos memoria que otros RTOS, lo que lo hace capaz de ser ejecutado en entornos donde ningún otro RTOS puede. Pero pese a su diseño ligero Salvo puede ser portado a muchas arquitecturas desde un PIC a un Pentium. Algunas características de Salvo que difieren de otros RTOS son: No necesita pila. Al ser un RTOS cooperativo se debe manejar explícitamente los cambios de contexto. Los cambios de contexto sólo pueden ocurrir al nivel de tarea y no desde funciones llamadas por la tarea o en cualquier otro lugar. Necesita muy poca RAM Uso de recursos La cantidad de ROM que Salvo requerirá dependerá de cuántas características del sistema se estén usando. Una aplicación multitarea mínima en un procesador RISC de 8 bits usará en torno a pocos cientos de instrucciones. Por otro lado una aplicación con uso de Salvo en su totalidad usará en torno a instrucciones. La cantidad de RAM que Salvo requiere es dependiente de la configuración particular. En una aplicación para un procesador RISC de 8 bits cada tarea requerirá de 4-12 bytes extra, cada evento 3-4 bytes y de 3-6 bytes se requerirán para manejar las tareas, eventos y retardos. El número de tareas y eventos disponibles, está limitado únicamente por la cantidad de memoria disponible. Un ejemplo, usando un PIC16 con la librería con soporte para multitarea, retardos y eventos (semáforos binarios y contadores y mensajes) una aplicación necesitará: 10 bytes de RAM para las variables globales de Salvo. 5 bytes de RAM por tarea. 3 bytes de RAM por evento. El compilador necesitará RAM adicional para asignar a variables locales cambios de contexto de interrupciones, etc. Pero los datos mostrados representan lo pequeña que son las necesidades de RAM de Salvo para implementar su funcionalidad. Cómo se distribuye Salvo se distribuye como un instalable de Windows 95 / 98 / ME / NT / 2000 / XP descargable a través de Internet. Salvo se distribuye en varias versiones: Salvo Lite: la versión freeware de Salvo, permite el desarrollo de pequeñas aplicaciones. Salvo LE: Añade las librerías estándar de Salvo a Salvo Lite, eso significa que el 4

143 RTOS Salvo Grupo 7 número de tareas, eventos, etc. en la aplicación a desarrollar sólo estará limitada por la RAM disponible. Salvo Pro: Incluye todo el código fuente lo que permite ampliar Salvo de acuerdo a tus necesidades. Scheduling Parte de la potencia de Salvo se basa en la simpleza de su scheduler. Las tareas en salvo están en uno de los estados que presenta el siguiente grafo: Al ser un RTOS con multitarea cooperativa el scheduler es ejecutado cuando las tareas dejan explícitamente el control al scheduler a través de llamadas a OS_Yield(), cuando entran en una espera, o cuando esperan un evento (las funciones que provocan un cambio de contexto y por tanto una llamada al scheduler suelen comenzar con OS_ ). Las tareas que se encuentran en el estado Eligible están preparadas para ejecutarse. El Scheduler selecciona las tareas con la mayor prioridad presente en este estado y de ellas la que lleve más tiempo en el estado Eligible (round-robin). Una tarea que se encuentre ejecutándose (estado Running) volverá al estado Eligible después de un cambio de contexto simple. Aunque también puede pasar a Destroyed, Stoped, Delayed o Waiting tras la llamada al servicio correspondiente del RTOS. Las tareas llegan al estado Delayed tras una llamada a una función de retardo y permanecerá en este estado hasta que el tiempo indicado expire. Una vez cumplido el periodo de espera la tarea pasará a Eligible de nuevo. Las tareas en estado Stopped se encuentran suspendidas indefinidamente y no volverán a ejecutarse hasta que se reactiven llamando al servicio correspondiente a (re-)comenzar una tarea. Las tareas en estado Waiting están suspendidas y continuarán así hasta que el evento por el que están esperando ocurra. 5

144 RTOS Salvo Grupo 7 Las tareas en estado Destroyed no pueden volver a ejecutarse, si bien una nueva tarea puede retomar el id de la tarea destruida y pasar a estado Stopped. Cuando una tarea queda a la espera de un evento o entra en un retardo el scheduler utiliza el tiempo disponible para ejecutar alguna de las tareas elegibles. Salvo se encarga de esta gestión. Para la gestión de tiempo hay que incluir en una interrupción temporal la llamada a la rutina de Salvo que incrementa el contador de tiempo del sistema. Para ello configuraremos la periodicidad de la interrupción según las necesidades de nuestra aplicación. Servicios de Tiempo Real Salvo provee de servicios de tiempo real a través de las funcionalidades que hemos agrupado en 3 categorías: Control de tareas: creación, destrucción, stop, inicialización, reemplazo, control de prioridades. Secciones críticas: semáforos binarios y contadores, mensajes, colas de mensajes y eventos asociados a flags. Tiempo: retardos, temporizadores cíclicos. Control de tareas Los servicios en esta categoría, corresponden al tratamiento de las tareas. Todos estos servicios implican un cambio de contexto. Creación: permite crear tareas, crear la tarea pone por defecto la tarea en el estado Eligible sin necesidad de llamar a la inicialización de la tarea. Destrucción: Destruye la tarea. Una vez una tarea es destruida no puede volver a ejecutarse. Sin embargo Salvo permite la reutilización del identificador de tarea por una nueva tarea. Stop: Permite poner la tarea en el estado Stopped. Una tarea en este estado únicamente podrá volver a estar elegible cuando se le aplique una inicialización. Inicialización/Reinicialización: Permite poner a una tarea en estado Eligible. Reemplazo: Permite la reutilización del Id de tarea reemplazando la tarea actual por otra. Útil entre otros casos para conservar memoria RAM ya que el uso de este servicio permite disminuir el número de tareas activas en cada momento. 6

145 RTOS Salvo Grupo 7 Control de prioridades: Permite cambiar la prioridad de las tareas en tiempo de ejecución. Secciones críticas Semáforos binarios y contadores: Permite también establecer un timeout tras el que salir de la espera y continuar la ejecución. Permite también establecer un timeout tras el que salir de la espera y continuar la ejecución. Mensajes, colas de mensajes: permite el envío de información entre tareas en forma de mensaje, o diversos mensajes en el caso de las colas de mensaje. También permite establecer un timeout. Eventos asociados a flags: permite la señalización y espera por la activación de cierto flag en el evento. Permite también establecer un timeout tras el que salir de la espera y continuar la ejecución. También permite establecer un timeout. Tiempo Retardos: Permite poner en espera la tarea un cierto número de ticks 1 o hasta un timestamp relativo a la ejecución de la tarea. Temporizadores cíclicos: Permite programar la ejecución de cierta funcionalidad tras un tiempo X y opcionalmente repetir la ejecución cada Y ticks. Conclusión Antes de comenzar el estudio sobre este RTOS pensábamos que añadir capas extra a la simplicidad de un microcontrolador se traduciría en una carga tanto en memoria como en procesamiento que no compensaría la limitada funcionalidad extra que añadiría un sistema operativo a este nivel. Sin embargo la funcionalidad añadida por el ligero RTOS Salvo, sobretodo en la aparente simpleza de su implementación de la multitarea cooperativa, supone una funcionalidad que multiplica la capacidad del microcontrolador a un nivel que no habíamos previsto. 1 Corresponde a cada llamada al timer del RTOS. Se recomienda llamarlo desde una interrupción asociada a un timer para garantizar su periodicidad. 7

146 RTOS Salvo Grupo 7 Referencias Manual de usuario: Capítulos 1,2,3,4,6 y 7. 8

147 RTOS Salvo Grupo 7 Índice alfabético Eventos asociados a flags...3, 7 Mensajes...3, 7 multitarea cooperativa...3 Retardos...3, 7 Semáforos...3, 7 Temporizadores cíclicos...3, 7 9

148 Grupo 8

149 Familia de Procesadores ARM Curso de Adaptación al Grado en Ingeniería Informática 4º Curso - 1er Semestre José David Marrero Montesdeoca Ángel Ramos de Miguel Martín Vega-leal Ordoñez 1

150 Índice Introducción Pág.3 Arquitectura Pág.4 Thumb Pág.8 Thumb Pág.13 ThumbEE Pág.15 VFP Pág.16 Trustzone Pág.19 Variablilidad Pág.21 Herramientas de Desarrollo Pág.32 Bibliografia Pág.35 2

151 Introducción El diseño del ARM comenzó en 1983 como un proyecto de desarrollo en la empresa Acorn Computers Ltd. Roger Wilson y Steve Furber lideraban el equipo, cuya meta era, originalmente, el desarrollo de un procesador avanzado, pero con una arquitectura similar a la del MOS La razón era que Acorn tenía una larga línea de ordenadores personales basados en dicho micro, por lo que tenía sentido desarrollar uno con el que los desarrolladores se sintieran cómodos. Por eso estos son los procesadores plus ultra en el mercado tecnológico actual. El equipo terminó el diseño preliminar y los primeros prototipos del procesador en el año 1985, al que llamaron ARM1. La primera versión utilizada comercialmente se bautizó como ARM2 y se lanzó en el año La mayor utilización de la tecnología ARM se alcanzó con el procesador ARM7TDMI, con millones de unidades en teléfonos móviles y sistemas de video-juegos portátiles. El diseño del ARM se ha convertido en uno de los más usados del mundo, desde discos duros hasta juguetes. Hoy en día, cerca del 75% de los procesadores de 32 bits poseen este chip en su núcleo. 3

152 Arquitectura En la arquitectura nos vamos a centrar en el ARM7 que es uno de los más extendidos. La arquitectura del ARM7 es de tipo Von Neuman con instrucciones de tipo RISC. Posee un bus de datos de 32 bits y ofrece un espacio de direcciones de 26 bits, junto con 37 registros de 32 bits, 31 de propósito general y 6 de estado. Uno de estos registros se utiliza como contador de programa, aprovechándose sus 4 bits superiores y los 2 inferiores para contener los flags de estado del procesador. No todos los registros pueden ser vistos a la vez, depende del modo de operación en el que se encuentre el procesador, y del modo de instrucciones (ARM o Thumb) que se encuentre. Modo ARM: 4

153 Modo Thumb: 5

154 Dispone de un pipeline de tres estado para conseguir que en cada ciclo de reloj se termine una instrucción. Las etapas son la de búsqueda, decodificación y ejecución. La etapa de búsqueda, se basa en buscar en la memoria la siguiente instrucción a ejecutar. La de decodificación, en caso en el que la instrucción este en modo Thumb. En la etapa de ejecución ya disponemos de la instrucción y de los datos para realizarla. Acción en cada etapa del pipeline. La siguiente imagen muestra como termina una instrucción a cada ciclo 6

155 Posee 6 fuentes de interrupción: Rápidas: Una interrupción con marca de interrupción rápida Normales. Por software: Cuando se llama a una instrucción de interrupción. Usadas sobre todo para invocar al sistema operativo Instrucción indefinida: Se llama una instrucción que no existe. Permite emular un coprocesador. Sistema: Interrupción producida por el sistema operativo. Abort: Fallo de memoria Dispone de varios modos de ejecución, que se puede cambiar de un estado a otro o por software o debido a una interrupción: Usuario: Modo normal de ejecución FIQ: Transmisión de datos IRQ: Interrupciones Supervisor: Modo protegido por el sistema operativo Abort mode: Violación de memoria System: Usuario con todos los privilegios Indefinido: Cuando hay una instrucción indefinida La arquitectura permite aumentar su numero instrucciones añadiendo en coprocesador en coma flotante, MMU, cache, TLB... Que le proporciona más funcionalidades. 7

156 Thumb Las arquitecturas de microprocesadores generalmente utilizan el mismo ancho para las instrucciones y para los datos. Por este motivo, las arquitecturas de 32 bit tienen una mayor potencia manipulando datos y direccionando una gran cantidad de memoria de forma más eficiente que las arquitecturas de 16 bits. Por el contrario, las arquitecturas de 16 bits logran una mayor densidad de código. La tecnología Thumb de ARM implementa un repertorio de instrucciones de 16 bits sobre una arquitectura de 32 bits, uniendo las cualidades de las dos soluciones: Mayor potencia que una arquitectura de 16 bits. Mayor densidad de código que una arquitectura de 32 bits. El set de instrucciones Thumb es un subconjunto de las instrucciones proporcionadas por ARM de 32 bits. Estas instrucciones tienen una longitud de 16 bits y cada una de ellas se corresponde a una del repertorio original, realizando la misma función y los mismos efectos sobre los registros del procesador. Esto proporciona la posibilidad de usarlos conjuntamente durante la ejecución de un código sin interferir en el correcto funcionamiento del mismo. La ejecución de las instrucciones Thumb de 16 bits son descomprimidas de forma transparente a su correspondiente instrucción de 32 bits, en tiempo real y sin pérdida de rendimiento. Thumb sigue teniendo todas las ventajas del núcleo de 32 bits: Espacio de direcciones de 32 bits Registros de 32 bits Desplazamientos y Operaciones lógicas de 32 bits Transferencias de memoria de 32 bits El uso del repertorio de instrucciones Thumb reduce el código producido en un 30% en comparación con el uso del repertorio normal, por término medio. Es especialmente útil para su uso en dispositivos empotrados donde la restricción en la cantidad de memoria disponible es un factor decisivo de diseño. Implementación El mecanismo que permite la traducción de instrucciones a 32 bits tiene lugar después del ciclo de búsqueda y antes del ciclo de ejecución. Su forma es la siguiente: 8

157 Podemos observar como dependiendo del valor del bit de estado Thumb (TBIT) se activa o no la decodificación de la instrucción de forma automática, sin que ellos repercuta en ciclos adicionales o perdida de eficiencia. Para que el procesador pueda conocer en todo momento el tipo de instrucciones que debe interpretar, el programador debe realizar un cambio de estado cada vez que se cambien las instrucciones del repertorio ARM de 32 bits, al modo Thumb de 16 bits. Para realizar este cambio de estado es necesario modificar el FLAG TBIT del procesador mediante la instrucción BX. La traducción de la instrucción produce una instrucción de 32 bits simplificada que puede ser ejecutada de forma normal. Pongamos por ejemplo una operación de suma ADD: 9

158 Se producen los siguientes cambios: Se transforma el código de operación al utilizado en las operaciones ARM Para el registro fuente y destino se utiliza el mismo Se completan con ceros el valor constante que se va a sumar En realidad la operación se traduce de: ADD Rd, #constant ADD Rd, Rd, #constant No todo son ventajas, la disminución del número de bits utilizados en las instrucciones también disminuye la capacidad de direccionar y esto se refleja en los registros internos del procesador a los que tenemos acceso. Solo 8 registros estarán disponibles, de los 16 existentes, como podemos observar en la siguiente imagen. 10

159 Al encontrarse el estado Thumb activo los registros SP, LR y PC no serán accesibles. El repertorio completo de instrucciones disponibles en modo Thumb es el que aparece en la siguiente tabla: 11

160 12

161 Thumb-2 Presenta una densidad de código mejorada con un eficiente rendimiento y potencia. Esta tecnología provee un nuevo set de instrucciones de la arquitectura ARM el cual genera un mejor nivel de rendimiento, consumo de energía y ofrece una densidad de código útil para un amplio rango de aplicaciones integradas. La tecnología thumb-2 se construyó gracias al éxito de la Thumb, el innovador set de instrucciones para núcleos de microprocesadores ARM incrementa la potencia de estos haciéndolos útiles para el desarrollo de sistemas de alto rendimiento. Esta tecnología es compatible con las existentes ARM y Thumb mientras se extiende las características disponibles del set de instrucciones Thumb-2, esto permite realizar más aplicaciones para beneficiarse de las mejores clases de código de la tecnología Thumb. El principio de funcionamiento es el mismo que Thumb, sin embargo, Thumb-2 amplia el tamaño de instrucción hasta los 32 bits, creando instrucciones de tamaño variable y creando otras condicionales para optimizar la predicción de código. Característica que en Thumb no estaba disponible. Por ejemplo, una sentencia condicional con las tres tecnologías se traduciría al siguiente código ensamblador: ARM Thumb-2 Thumb LDREQ r0, [r1] ITETE EQ BNE I1 LDRNE r0, [r2] LDR r0, [r1] LDR r0, [r1] ADDEQ r0, r3, r0 LDR r0, [r2] ADD r0, r3, r0 ADDNE r0, r4, r0 ADD r0, r3, r0 B I2 ADD r0, r4, r0 I1: LDR r0, [r2] ADD r0, r4, r0 I2: 16 Bytes 10 Bytes 12 Bytes 4 Ciclos 4 a 5 Ciclos 4 a 20 Ciclos Una de las desventajas más importantes de la tecnología Thumb era que por lo general acababa requiriendo de más ciclos de ejecución, ya que las instrucciones de 13

162 que dispone son demasiado simples, esto se arregla con Thumb-2. Podemos observar un Benchmark comparando diferentes acciones para las tres tecnologías. Con Thumb-2 se logra prácticamente el mismo desempeño del procesador que con el repertorio de instrucciones estándar, mientras que se sigue manteniendo una tasa de densidad de código similar a la de Thumb. 14

163 ThumbEE (Thumb Execution Environment) ThumbEE es otro de los posibles estados de un procesador ARM para interpretar un repertorio de instrucciones. Su aparición fue debida al tremendo éxito de thumb y thumb-2, y propició su mejora y adaptación a nuevos campos. Se basa en el mismo principio que sus antecesores. El funcionamiento e implementación son básicamente iguales. Su ventaja principal es que el repertorio de instrucciones que proporciona se adapta a la ejecución de código generado por compiladores de lenguajes interpretados como Java, C#, Perl o Python, por lo que entrando en este estado podemos ejecutar la mayor parte del código producido por un intérprete de estos lenguajes sin mayor complicación. ThumbEE añade también algunas características útiles para su aplicación como la comprobación automática de punteros nulos en cada ejecución, una instrucción para comprobar los límites de un array o la posibilidad de acceso a los registros del R8 al R15. La aparición de ThumbEE ha sustituido a otra tecnología creada por ARM denominada Jazelle, la cual consistía en un repertorio de instrucciones para la interpretación de bytecode Java, lo cual ya es realizado y de forma mejorada por ThumbEE. 15

164 VFP (Vector Floating-Point) Los procesadores ARM no contienen hardware específico para realizar operaciones en coma flotante. Este es uno de los motivos por los cuales no son óptimos para dispositivos que manejan aplicaciones multimedia como compresión de audio o video. La única forma disponible de realizar operaciones de coma flotante en un procesador ARM era mediante librerías software que emulaban dicho comportamiento, como fplib o FPE (Software Floating-Point Emulation), como es evidente esto solventa el problema de las operaciones, pero acarrea un altísimo coste computacional sobre las mismas. Sin embargo, su generalización en mundo de los dispositivos móviles ha propiciado la iniciativa de ARM por mejorar estas capacidades. Este es motivo de la aparición de VFP, el cual añade al procesador la capacidad de realizar operaciones en coma flotante de simple o doble precisión mediante hardware. El coprocesador VFP de ARM usa dos unidades separadas para el procesamiento de las operaciones de coma flotante, una para la simple precisión y otra para la doble precisión. Estas se conectan con el procesador principal mediante el bus de datos, instrucciones y la memoria principal. Para almacenar los elementos de las operaciones dispone de treinta y dos registros de 32 bits. Cada registro puede almacenar un número en coma flotante de simple precisión o un número entero. Cada par consecutivo de registros puede ser utilizado para almacenar un número en coma flotante de doble precisión. Estos registros 16

165 pueden ser utilizados como almacenamiento secundario por otra aplicación que los requiera en caso de estar libres. La siguiente figura muestra la distribución de la memoria para la simple y doble precisión. Los registros de la unidad VFP pueden ser accedidos a través de las instrucciones del núcleo ARM, MRC (Move Register from Coprocessor), MCR (Move to Coprocessor from Register), MCRR (doble precisión MRC) o MRCC (doble precisión MCR). Los valores en coma flotante sigue el formato marcado por el estándar IEEE 754 para representación y manipulación de números en coma flotante. El coprocesador VFS proporciona la capacidad de realizar operaciones de coma flotante mediante una combinación de hardware y software. Normalmente, el hardware del VFP ejecuta las instrucciones de forma directa mediante el hardware. Sin embargo, puede, bajo ciertas circunstancias, rechazar una instrucción, causando una excepción de Instrucción Indefinida. Existen dos razones por las que esto puede ocurrir: Excepción disparada por una operación en coma flotante Instrucción no permitida Cuando una instrucción es rechazada, el software instalado en el Vector de Instrucciones Indefinidas determina porqué la instrucción ha sido rechazada para tomar la acción que corresponda. Este software se denomina soporte de código de VFP y tiene dos componentes: Una librería de rutinas que realizan funciones en coma flotante Un conjunto de manejadores de excepciones que procesan las condiciones especiales 17

166 Para hacernos una idea de la mejora de rendimiento que supone el coprocesador de operaciones en coma flotante vamos a observar el siguiente Benchmark realizado sobre cuatro procesadores de similares características, entre los cuales dos disponen de la unidad VFP y otros dos no. Las diferencias más notables son que la unidad VFP reduce el tiempo de ejecución de las operaciones en coma flotante de una forma radical, cosa que cabría esperar. Pero también observamos que el código necesario para almacenar el programa disminuye considerablemente. Otro factor es el consumo de energía que se reduce en torno a un 15%, ya que el procesador toma mucho menos tiempo de funcionamiento en realizar dichas operaciones. 18

167 TrustZone Es una tecnología la cual ofrece parámetros de seguridad para la arquitectura ARM especialmente en productos de consumo de seguridad tales como: teléfonos portátiles, PDAs, juegos de video y en el funcionamiento de sistemas operativos tales como: Symbian OS, Linux y Windows CE. La tecnología TRUSTZONE garantiza la implementación fiable de aplicaciones de seguridad y servicios tales como: antivirus, ingreso promedios de usuarios incrementados a través de cuentas móviles, transacciones comerciales y la protecciones de secretos de los usuarios con claves personales. La tecnología TrustZone esta implementada dentro del mismo núcleo del procesador permitiendo la protección de la memoria del chip y sus periféricos de ataques de otros software. Desde que los elementos de seguridad del sistema son diseñados dentro del núcleo del hardware cualquier propuesta de seguridad que esté fuera del núcleo es negada. De esta forma la seguridad es mantenida como una característica intrínseca en el corazón del dispositivo con un impacto mínimo en el área del núcleo o en el rendimiento, habilitando concesiones para construir cualquier característica adicional de seguridad deseada como: criptografía con el propósito de tener un hardware seguro. Monitor de Seguridad, es un nuevo sistema el cual actúa dentro del núcleo poniendo una barrera por medio de interruptores entre los estados seguros y no seguros. Cuando el monitor cambia el sistema a un estado de seguridad el procesador da niveles de privilegio para ejecutar solo código que sea seguro. Lo cual permitirá posteriormente manejar tareas como: autenticación, manipulación de firmas y procesamiento de transacciones seguras. 19

168 La división del código de seguridad y datos dentro del sistema y la separación entre información segura y no segura, han habilitado un código de seguridad y datos para ejecutarse junto a un eficiente sistema operativo. El nivel de seguridad dentro de los sistemas con tecnología TrustZone puede variar desde medidas de seguridad implementadas dentro del núcleo a un primer nivel de sistema de memoria con el propósito de seguir implementando más seguridad que cubrirían las memorias y periféricos. El mecanismo que gestiona esta separación de estados de ejecución en el procesador se lleva a cabo a través de una serie de bits de estado, el principal es el NS (NonSecure bit) que indica al procesador en todo momento en qué modo se encuentra, seguro o no-seguro. La transición entre estos estados se realiza a través de interrupciones, concretamente el lanzamiento de la interrupción SMC (Secure Monitor Call) es la que realiza el cambio al modo seguro, almacenando el estado de los registros para poder ser recuperados al retornar de la interrupción. Otras interrupciones normales pueden ser configuradas para que sean ejecutadas en modo seguro. El acceso a memoria también es restringido en el modo seguro, este control es llevado a cabo por la MMU (Memory Management Unit), la cual también se guía por el estado del NS-Bit para controlar los accesos restringidos a memoria. 20

169 Variabilidad En cuanto a la familia de procesadores ARM, la primera versión utilizada comercialmente se bautizó como ARM2 y se lanzó en el año Hoy en día está obsoleta, y para encontrar la primera versión usada todavía tenemos que avanzar hasta la familia ARM7TDMI. A partir de ahí, nos encontramos con ocho familias de procesadores ARM (StrongARM, ARM8, ARM9TDMI, ARM9E, ARM10E, XScale, ARM11, Cortex). A continuación esquema con las arquitecturas usadas por cada familia: Detallando las principales características de cada familia: 21

170 ARM7TDMI Versión de arquitectura: ARMv4T Núcleo: ARM7TDMI(-S) Segmentación de 3 etapas, Thumb Cache Nula MHz 70 MHz Aplicaciones: Game Boy Advance, Nintendo DS, Apple ipod, Lego NXT, Atmel AT91SAM7, Juice Box, NXP Semiconductors LPC2000 and LH754xx, Actel's CoreMP7 Núcleo: ARM710T ARM7TDMI, caché Caché: 8 KB unificados, MMU MHz Aplicaciones: Psion Series 5mx, Psion Revo/Revo Plus/Diamond Núcleo: ARM720T ARM7TDMI, caché Caché: 8 KB unificados, MMU con FCSE MHz Aplicaciones: Zipit Wireless Messenger, NXP Semiconductors LH7952x Núcleo: ARM740T ARM7TDMI, caché MPU Versión de arquitectura: ARMv5TEJ Núcleo: ARM7EJ-S Segmentación de 5 etapas, Thumb, Jazelle DBX, mejora de instrucciones DSP Caché nula. 22

171 StrongARM Versión de arquitectura: ARMv4 Núcleo: SA-1 Caché: 16 KB/8 16 KB, MMU MHz DMIPS/MHz. Aplicaciones: SA-110 Apple Newton,, Acorn Risc PC, Rebel/Corel Netwinder, Chalice CATS SA-1100 Psion netbook, Empeg Car SA-1110 LART (computer), Intel Assabet, Ipaq H36x0, Balloon2, Zaurus SL-5x00, HP Jornada 7xx,Jornada 560 series, Palm Zire ARM8 Versión de arquitectura: ARMv4 Nucleo: ARM810 Segmentación de 5 fases, predilección de salto estático, memoria de doble ancho de banda Caché: 8 KB unificados, MMU Mhz 1.16 DMIPS/MHz Aplicaciones. : Acorn Risc PC prototipo de CPU card ARM9TDMI Versión de arquitectura: ARMv4T Núcleo: ARM9TDMI Segmentación de 5 fases, Thumb Caché nula. Núcleo: ARM920T 23

172 ARM9TDMI, caché. Caché: 16 KB/16 KB, MMU con FCSE (Fast Context Switch Extension) MHz Aplicaciones: Armadillo, Atmel AT91SAM9, GP32, GP2X (primer núcleo), Tapwave Zodiac (Motorola i. MX1), Hewlett-Packard Calculadoras HP49/50, Sun SPOT, Cirrus Logic EP9302, EP9307, EP9312, EP9315, Samsung S3C2442 (HTC TyTN, FIC Neo FreeRunner), Samsung S3C2410 (Dispositivos de navegación TomTom) Núcleo: ARM922T ARM9TDMI, cachés Caché: 8 KB/8 KB, MMU. Aplicaciones: NXP Semiconductors LH7A40x Núcleo: ARM940T ARM9TDMI, cachés 4 KB/4 KB, MPU. Aplicaciones: GP2X (segundo núcleo), Meizu M6 Mini Player ARM9E Versión de arquitectura: ARMv5T Núcleo: ARM946E-S Thumb, mejora de instrucciones DSP, caché Caché: variables, memoria estrechamente acoplada, MPU Aplicaciones: Nintendo DS, Nokia N-Gage, Canon PowerShot A470, Canon EOS 5D Mark II,7 Conexant chips, Samsung S5L2010 Núcleo: ARM966E-S Thumb, Mejora de instrucciones DSP Sin caché, TCMs Aplicaciones: ST Micro STR91xF, integra Ethernet Núcleo: ARM968E-S ARM966E-S. Sin caché, TCMs. 24

173 Aplicaciones: NXP Semiconductors LPC2900. Versión de arquitectura: ARMv5TEJ Núcleo: ARM926EJ-S Thumb, Jazelle DBX, Mejora de instrucciones DSP. Caché: variables, TCMs, MMU MHz. Aplicaciones: Teléfonos móviles: Sony Ericsson (K, W series); Siemens y Benq (serie x65 y posterior); LG Arena; Texas Instruments OMAP1710, OMAP1610, OMAP1611, OMAP1612, OMAP-L137, OMAPL138; Qualcomm MSM6100, MSM6125, MSM6225, MSM6245, MSM6250, MSM6255A, MSM6260, MSM6275, MSM6280, MSM6300, MSM6500, MSM6800; Freescale i.mx21, i.mx27, Atmel AT91SAM9, NXP Semiconductors LPC3000, GPH Wiz, NEC C10046F5-211-PN2-A SoC núcleo en la ATi Hollywood GPU usada en la Wii, Samsung S3C2412 usado en Squeezebox Duet's Controller. Squeezebox Radio; NeoMagic MiMagic Family MM6, MM6+, MM8, MTV; Buffalo TeraStation Live (NAS); Telechips TCC7801, TCC7901;ZiiLABS' ZMS-05 SoC; Western Digital MyBook "I World Edition"; Rockchip RK2806 y RK2808. Versión de arquitectura: ARMv5T Núcleo: ARM996HS Procesador sin reloj, como ARM966E-S Sin cachés, TCMs, MPU. ARM10E Versión de arquitectura: ARMv5TE Núcleo: ARM1020E Segmentación de 6 fases, Thumb, Mejora de instrucciones DSP, (VFP) Caché: 32 KB/32 KB, MMU Núcleo: ARM1022E ARM1020E. Caché: 16 KB/16 KB, MMU. 25

174 Versión de arquitectura: ARMv5TEJ Núcleo: ARM1026EJ-S Thumb, Jazelle DBX, Mejora de instrucciones DSP, (VFP) Caché: variable, MMU o MPU. Aplicaciones: Western Digital MyBook "II World Edition"; Conexant so4610 y so4615 ADSL SoC XScale Versión de arquitectura: ARMv5TE Núcleo: 80200/IOP310/IOP315 Procesador E/S, Thumb, Mejora de instrucciones DSP. Núcleo: /600 MHz Aplicaciones: Thecus N2100 Núcleo: IOP MHz. Aplicaciones: Iyonix Núcleo: IOP33x Núcleo: IOP34x 1 2 núcleos, Acelerador de RAID. Caché: 32K/32K L1, 512K L2, MMU. Núcleo: PXA210/PXA250 Procesador de aplicaciones, Segmentación de 7 fases. PXA210: 133 y 200 MHz, PXA250: 200, 300, and 400 MHz. Aplicaciones: Zaurus SL-5600, ipaqh3900, Sony CLIÉNX60, NX70V, NZ90 Núcleo: PXA255 Caché: 32KB/32KB, MMU MHz; MHz. Aplicaciones: Gumstix basix & connex, Palm TungstenE2, Zaurus SLC860,Mentor Ranger & Stryder, irex ILiad Núcleo: PXA , 300 y 400 MHz. 26

175 Aplicaciones: Sony CLIÉ NX73V, NX80V. Núcleo: PXA26x default 400 MHz, más de 624 MHz. Aplicaciones: Palm Tungsten T3. Núcleo: PXA27x (Bulverde) Procesador de Aplicaciones. Caché: 32 KB/32 KB, MMU MHz. Aplicaciones: Gumstix verdex,"trizeps-modules" PXA270 COM, HTC Universal,HP hx4700, Zaurus SL-C1000, 3000, 3100, 3200, Dell Axim x30, x50, and x51 series, Motorola Q, Balloon3,Trolltech Greenphone,Palm TX(312MHz), Motorola Ezx Platform A728, A780, A910, A1200, E680, E680i, E680g, E690, E895, Rokr E2, Rokr E6, Fujitsu Siemens LOOX N560, Toshiba Portégé G500, Trēo p,Zipit Z2, HP ipaq 614c Business Navigator. Núcleo: PXA800(E)F Núcleo: PXA3XX (Monahans) Caché: 32KB/32KB L1, TCM, MMU GHz. Aplicaciones: Samsung Omnia. Núcleo: PXA900 Aplicaciones: Blackberry 8700, Blackberry Pearl (8100). Núcleo: IXC1100 Procesador de control de vuelo. Núcleo: IXP2400/IXP2800 Núcleo: IXP2850 Núcleo: IXP2325/IXP2350 Núcleo: IXP42x Aplicaciones: NSLU2 IXP460/IXP

176 ARM11 Versión de arquitectura: ARMv6 Núcleo: ARM1136J(F)-S Segmentación de 8 etapas,simd, Thumb, Jazelle DBX, (VFP), Mejora de instrucciones DSP Caché: variable, MMU MHz (i.mx31 SoC), MHz Aplicaciones: Texas Instruments OMAP2420 (Nokia E90, Nokia N93, Nokia N95, Nokia N82), Zune, BUGbase,Nokia N800, Nokia N810, Qualcomm MSM7200 (con coprocesador MHz, usado eneten Glofiish, HTC TyTN II, HTC Nike), Freescale i.mx31 (del Zune original de 30 GB, Toshiba Gigabeat S y Kindle DX), Freescale MXC (Nokia E63, Nokia E71, Nokia 5800, Nokia E51, Nokia 6700 Classic, Nokia 6120 Classic, Nokia 6210 Navigator, Nokia 6220 Classic, Nokia 6290, Nokia 6710 Navigator, Nokia 6720 Classic, Nokia E75, Nokia N97, Nokia N81), Qualcomm MSM7201A visto en loshtc Dream, HTC Magic, Motorola Z6, HTC Hero, & Samsung SGH-i627 (Propel Pro), QualcommMSM7227 usado en ZTE Link. Versión de arquitectura: ARMv6T2 Núcleo: ARM1156T2(F)-S Segmentación de 9 etapas,simd, Thumb-2, (VFP), Mejora de instrucciones DSP. Caché: variable, MPU. Versión de arquitectura: ARMv6KZ Núcleo: ARM1176JZ(F)-S ARM1136EJ(F)-S. Caché: variable, MMU+TrustZone. Aplicaciones: Apple iphone (EDGE y 3G), Apple ipod touch (1ra y 2da generación), Conexant CX2427X, Motorola RIZR Z8, Motorola RIZR Z10, NVIDIA GoForce 6100; Telechips TCC9101, TCC9201, TCC8900, Fujitsu MB86H60, Samsung S3C6410 (ej. Samsung Omnia II, Samsung Moment, SmartQ 5), S3C

177 Versión de arquitectura: ARMv6K Núcleo: ARM11 MPCore As ARM1136EJ(F)-S, 1 4 core SMP. Caché: variable, MMU. Aplicaciones: Nvidia APX Cortex Versión de arquitectura: ARMv6-M Núcleo: Cortex-M0 Perfil microcontrolador, Thumb-2 subset (instrucciones 16-bit Thumb & BL, MRS, MSR, ISB, DSB, and DMB). Caché: Sin caché. 0.9 DMIPS/MHz Aplicaciones: NXP Semiconductors NXP LPC1100, Triad Semiconductor,Melfas, Chungbuk Technopark, Nuvoton, austriamicrosystems, Rohm Núcleo: Cortex-M1 FPGA targeted, Microcontroller profile, Thumb-2 subset (instrucciones 16-bit Thumb & BL, MRS, MSR, ISB, DSB, and DMB). Caché: Sin caché. Más de MHz Aplicaciones: Actel ProASIC3, ProASIC3L, IGLOO and Fusion PSC devices, Altera Cyclone III, otros productos FPGA están soportados, por ejemplo: Synplicity Versión de arquitectura: ARMv7-M Núcleo: Cortex-M3 Perfil microcontrolador, Thumb-2 únicamente. Reparto de instrucciones por Hardware. Caché: sin caché, MPU opcional MHz Aplicaciones: Texas Instruments Stellaris microcontroller family, ST Microelectronics STM32, NXP 29

178 Semiconductors LPC1700, Toshiba TMPM330FDFG, Ember's EM3xx Series, Atmel AT91SAM3,Europe Technologies EasyBCU, Energy Micro's EFM32, Actel's SmartFusion Versión de arquitectura: ARMv7-ME Núcleo: Cortex-M4 Perfil microcontrolador, Thumb y Thumb-2, FPU. MAC, SIMD e instrucciones divididas. Caché: sin caché, MPU opcional DMIPS/MHz Versión de arquitectura: ARMv7-R Núcleo: Cortex-R4 (F) Perfil Embebido, Thumb-2, (FPU) Caché: variable caché, MPU opcional MHz Aplicaciones: Broadcom, TMS570 from Texas Instruments Versión de arquitectura: ARMv7-A Núcleo: Cortex-A5 VFP, NEON, Jazelle RCT and DBX, Thumb-2, Segmentación de 8 fases, 1 4 núcleos SMP Caché: variable (L1), MMU+TrustZone Más de 1500 (1.5 DMIPS/MHz) Aplicaciones: "Sparrow" Núcleo: Cortex-A8 VFP, NEON, Jazelle RCT, Thumb-2, Segmentación Superscalar de 13 etapas Caché: variable (L1+L2), MMU+TrustZone Más de 2000 (2.0 DMIPS/MHz de reloj desde 600 MHz hasta más de 1 GHz) Aplicaciones: Texas Instruments serie OMAP3xxx, SBM7000, Oregon State University OSWALD, Gumstix Overo Earth,Pandora, Apple iphone 3GS, Apple ipod touch (3rd Generation), Apple ipad (SoCApple A4), Apple iphone 4 (Soc Apple A4, fabricado por Samsung e 30

179 Intrensity), Archos 5, FreeScale i.mx51-soc, BeagleBoard,Motorola Milestone, Motorola Milestone X, Palm Pre, Samsung Omnia HD, Samsung Wave S8500(Hummingbird), Samsung i9000 Galaxy S (Hummingbird), Sony Ericsson Satio, Woxter Tablet PC 80,Touch Book, Nokia N900, Meizu M9, ZiiLABS ZMS-08 SoC. Núcleo: Qualcomm Scorpion GPU Adreno 200, VFPv3, NEON, Jazelle RCT, Thumb-2, Segmentación Superscalar de 13 etapas, Caché: variable (L1+L2), MMU+TrustZone Más de 2000 (2.0 DMIPS/MHz de reloj desde 1 GHz hasta más de 1,5 GHz dual core Aplicaciones: Toshiba TG01, HTC Desire, Google Nexus One, HTC EVO 4G, HTC Incredible, HTC Scorpion, HTC HD2,HTC HD7 Núcleo: Cortex-A9 Perfil de aplicaciones, (VFP), (NEON), Jazelle RCT y DBX, Thumb-2, Out-of-order speculative issue superscalar Caché: MMU+TrustZone 2.5 DMIPS/MHz Aplicaciones:: Samsung Galaxy S II Núcleo: Cortex-A9 MPCore Cortex-A9, 1 4 núcleos SMP Caché: MMU+TrustZone 10,000 2 GHz optimizados en TSMC 40G (Doble núcleo) (2.5 DMIPS/MHz por núcleo) Aplicaciones:: Texas Instruments OMAP4430/4440, STEricsson U8500, Nvidia Tegra2, Qualcomm Snapdragon 8X72PlayStation Vita 31

180 Herramientas de desarrollo ARM nos ofrece dos entornos de programación uno orientado a aplicaciones de microcontroladores y otro para sistemas más potentes con sistemas operativos incluido. MDK-ARM es un software de desarrollo para aplicaciones de micro-controladores. Nos permite programar en C/C++ depurar y simular el entorno, tambien nos dispone de un pequeño sistema operativo asi como soporte a los protocolos más utilizados como el USB, TCP/IP, CAN o LINK. Este se encuentra disponible en cuatro formatos, aunque todas permiten la programación en C/C++: MDK-Lite MDK-Basic MDK-Standard MDK-Professional 32

181 ARM Development Studio 5 es un entorno de desarrollo que aprovecha todas las capacidades de los núcleos ARM. Su entorno es Eclipse nos permite programar en C/C++, la depuracion soparta sistemas operativos como Linux-based, nos ofrece estadisticas de uso de la CPU, hilos de ejecucion, uso de memoria, simulación en tiempo real 33

182 34

183 Bibliografía David Seal. ARM Architecture Reference Manual. Addison-Wesley, 2nd edition, Atmel Embedded RISC Microcontroller Core ARM7TDMITM 35

184 Grupo 9

185 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Bus CAN Controller Area Network José Antonio Lareo Domínguez Bycor Sánchez Sánchez John Wu Wu Página 1 de 12

186 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Índice de contenido 1. Introducción El bus CAN Características Capa física Baja velocidad tolerante a fallos: Alta velocidad Reloj, sincronización, bit timing Capa de enlace de datos Trama de datos y trama remota Gestión de Acceso al Bus Filtrado de mensajes, enmascaramiento Conclusiones Índice de palabras cruzadas Página 2 de 12

187 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Introducción En los últimos años, el desarrollo de las tecnologías de comunicación ha ejercido un fuerte impacto en distintos sectores de la industria, lo cual ha motivado la aparición de nuevos estándares. Uno de los sectores más beneficiados en cuanto a este desarrollo ha sido el de la industria automovilística. Dada la gran evolución de la tecnológica estas últimas décadas, los automóviles se han visto surtidos con un mayor número de componentes electrónicos. El problema radicaba en que a medida que iban a apareciendo nuevos componentes la implementación así como comunicación entre éstos se iba haciendo mucho más compleja, costosa e incluso caótica entre distintos fabricantes, de ahí surgió la necesidad de crear un estándar que normalizase este ámbito. A mediados de los 80, la multinacional alemana Robert Bosch GmbH comenzó el desarrollo de un estándar de comunicaciones basado en un bus de datos de comunicación serie destinado a paliar los problemas anteriormente mencionados. El protocolo fue presentado oficialmente en 1986 bajo el nombre de CAN (Controller Area Network) y no sólo solucionaría los problemas de implementación, comunicación y coste de la interconexión entre distintos dispositivos sino que además añadiría una capa adicional para control de errores, ancho de banda, gestión de prioridades y protocolo de mensajes. A día de hoy existen dos especificaciones del estándar CAN, la 2.0A (estándar) y la 2.0B (extendido), de los cuales no sólo se benefician la industria automovilística, sino también el de la medicina, aeronáutica, etc. Dada la importancia de esta tecnología, en el siguiente documento explicaremos distintos aspectos del bus CAN, del cual no pretendemos dar una explicación profunda pero sí suficiente para lograr la comprensión de su funcionamiento. Página 3 de 12

188 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ El bus CAN Se trata de un bus de datos de comunicación serie empleado en sistemas distribuidos en tiempo real. Fue ideado originalmente para la industria del automóvil, no obstante, su robustez y relación calidad/precio ha provocado su difusión a otros sectores. Para la correcta comprensión de la tecnología, a continuación explicaremos en más profundidad las características nombradas en el anterior apartado. 2.1 Características Económico y sencillo: Uno de los principales objetivos durante su desarrollo fue la simplificación del cableado para la interconexión entre distintos dispositivos, haciendo que el bus sólo requiriese de dos líneas lo cual se tradujo colateralmente en una reducción de los costes de implementación. Mensajes o CAN frames: Se trata de las tramas transmitidas por el bus. Están compuestas por una serie de cabeceras, un identificador que define el tipo de mensaje y/o la prioridad y una serie de bits para el dato. En la especificación 2.0A (estándar) la longitud del mensaje está comprendida entre 44 y 108 bits mientras que para la 2.0B (extendida) ésta puede estar entre los 64 y 128 bits. Orientado a mensajes: Los nodos no poseen una dirección como tal, ya que el protocolo no contempla unas cabeceras específicas, por lo que cada tipo de mensaje tendrá un identificador en la red, pudiendo ser aceptado o no por un determinado nodo en función del filtro que tenga programado. Detección de errores: Es un protocolo muy robusto frente a problemas de ruido ya que se diseñó específicamente para entornos industriales. Esto lo logra gracias a que el protocolo define una de las cabeceras del CAN frame para la realización de una suma de verificación o checksum. Tolerancia a errores: Si se produjese algún error en uno de los nodos, éste no comprometería la integridad de la red ya que el protocolo mismo se encargaría de aislarlo del resto. Funcionamiento en tiempo real: Como se ha mencionado previamente, cada mensaje parte con una cierta prioridad determinada por lo que, haciendo uso de un mecanismo especial de arbitraje, se asegura que mensajes más prioritarios lleguen antes en función de su identificador, que es lo que define su prioridad. Ancho de banda regulable: para cualquiera de los nodos que componen la red del bus CAN es posible regular su velocidad de transmisión de forma sencilla, pudiendo esta variar desde 125 Kbps (baja velocidad tolerante a fallos) a 1 Mbps. Página 4 de 12

189 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Capa física Originalmente, la especificación del protocolo CAN definía únicamente una capa de enlace de datos, haciendo referencia a la capa física como un término abstracto, no obstante, a día de hoy, el estándar define de forma concreta la definición para la parte eléctrica de la capa física. Esta especificación está basada en dos estándares de transmisión, ISO (baja velocidad tolerante a fallos, destinada originalmente al control de mecanismos no críticos del automóvil tales como puertas, techo corredizo, luces, etc.) e ISO (alta velocidad destinado a sistemas como el control del motor). Para poder lograr una mejor comprensión de los posibles valores del bus se ha de definir el concepto de valor dominante y valor recesivo. Valor dominante es aquel que siempre que varios nodos transmitan a la vez en el bus, sea el que marque el valor. Para el bus CAN dominante sería el 0 y el recesivo el 1. Los niveles eléctricos que definen estos valores son la diferencia de potencial entre las dos líneas que componen el bus, CAN L y CAN H Baja velocidad tolerante a fallos Niveles eléctricos para la definición del valor dominante y recesivo Es necesario que cada uno de los transceptores de los nodos CAN estén conectados a una resistencia de 120 ohms, para reducir la velocidad de transmisión y sean detectables los fallos en la red. Página 5 de 12

190 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Alta velocidad Niveles eléctricos para la definición del valor dominante y recesivo En este caso, la red CAN ha de estar conectada a cada extremo a una resistencia de 120 ohms, en vez de conectarlos a cada transceptor de cada nodo CAN ya que limita la velocidad de transmisión. De esta forma se alcanza a 1Mbps de velocidad de transmisión, no obstante,los errores de transmisión a este nivel, deberán de ser controlados por otros niveles o capas Reloj, sincronización, bit timing Es en la capa física donde se lleva a cabo la sincronización para la transmisión/recepción de tramas. A pesar de no tener una línea separada para un reloj, éste tampoco se transmite en el bus como puede pasar en otros protocolos. Es cada nodo el que se encarga del timing de cada bit, y esto se logra dividiendo el tiempo de transmisión de bit en distintas etapas. Es preciso definir una serie de términos para comprender este mecanismo. Tasa de bit nominal: número de bits transmitidos por segundos. Tiempo de bit nominal: tiempo necesario para la transmisión de un bit. Este tiempo se divide en las siguientes etapas: Cada etapa requiere una serie de cuantos de tiempo (quantum), el cual es la unidad discreta de tiempo mínima con la que trabaja cada nodo CAN. Dicho cuanto es Página 6 de 12

191 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 resultado de una división programable (prescaler) de la frecuencia oscilador a la que funciona el nodo CAN. Etapa Longitud en cuanto Descripción SYNC_SEG (Segmento de sincronización) 1 PROP_SEG (Segmento de propagación de tiempo) Programable 1-8 PHASE_SEG1 (Segmento de Fase de Buffer 1) Programable 1-8 PHASE_SEG2 (Segmento de Fase de Buffer 2) El máximo entre Tiempo de Proceso de Información y PHASE_SEG1 SAMPLE POINT (Punto de Muestreo) 0 Information Processing Time (Tiempo de Proceso de Información) <= 2 Se usa para sincronizar los nodos del bus. Este segmento del tiempo de bit se usa para compensar el retardo físico intrínseco a la red. Se usan para compensar los errores por cambio de flanco. Se trata del punto donde se muestrea el estado del bus para su lectura y se interpreta el valor del bit. Se produce entre PHASE_SEG1 y PHASE_SEG2. Es el segmento de tiempo, comenzando con el punto de muestreo reservado para el cálculo del bit posterior. Tipos de sincronización Hard Synchronization: Se realiza en el bit inicial. Consiste en resetear la cuenta del tiempo de bit Resynchronization: Se realiza para compensar los desfases entre el oscilador del emisor y el receptor, alargando o reduciendo PHASE_SEG1 y/o PHASE_SEG2 2.3 Capa de enlace de datos Define el método de acceso al medio así como los tipos de tramas para el envío de mensajes, las cuales describiremos a continuación. Tipos de tramas Trama de datos (Data Frame): Se trata de la trama que se transmiten usualmente a través del bus para el envío de datos. Dada su importancia se detallará en el siguiente sub-apartado. Trama remota (Remote Frame): Es la trama enviada por el nodo que solicita un dato. Dada su importancia se detallará en el siguiente sub-apartado. Trama de error (Error Frame): Se transmite cuando uno de los nodos de la red detecta un error en el bus. Página 7 de 12

192 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Trama de sobrecarga (Overload Frame): Indica que el nodo que la transmite, requerirá de cierto tiempo extra antes de poder recibir otra trama de datos o remota. Espaciado entre tramas (Inter-Mission): Entre cada trama transmitida, se transmite una secuencia predefinida para establecer el final de trama. Bus ocioso: La longitud de este periodo es arbitraria. El bus se detecta como libre y cualquier nodo con intención de transmitir una trama podrá acceder a él Trama de datos y trama remota Ambas tramas comparten una serie de campos comunes que son los que se muestran en la siguiente figura: Veamos a continuación los bits que componen cada campo y su significado: Nombre Longitud en bits Descripción SOF (Start of frame) 1 0 Arbitration Field: Identifier 11 Arbitration Field: RTR (Remote Transmission Request) Control Field: IDE (Identifier Extended Bit)/r1 (reserved bit 1) 1 1 Identifica tanto al tipo de mensaje como su prioridad Indica si se trata de una trama de datos (0) o remota (1) Si se trata de una trama estándar (0) o extendida (1) Control Field: r0 (reserved bit 0) 1 Bit reservado Control Field: Data Lenght Code 4 Data Field 0-64 Indica la longitud del segmento de datos (nº de bytes) Los bits del datos transmitidos en la trama, 0 en caso de una trama remota CRC Field: CRC 15 Checksum de la trama CRC Field: CRC delimiter 1 ACK Field: ACK Field 1 Separa el campo CRC del resto de la trama Indica que al menos un nodo ha recibido la trama con éxito ACK Field: ACK Delimiter 1 Análogo al CRC delimiter EOF: End Of Frame 7 Entre cada trama de datos y/o trama remota han de haber 7 bits consecutivos con valor recesivo (1) Página 8 de 12

193 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Gestión de Acceso al Bus Existe la posibilidad de que en un instante de tiempo determinado varios nodos quieran transmitir de forma simultánea a través del bus, para estos casos, el protocolo CAN proporciona un método de arbitraje, que es el que se muestra a continuación: El nodo 3 gana el arbitraje del bus Todos comienzan transmitiendo el identificador del mensaje (aparte obviamente del bit SOF). Mientras todos los nodos coincidan en el envío del un valor recesivo o dominante de forma simultánea, seguirán transmitiendo, no obstante; llegados a un punto, si uno o varios de los nodos transmiten un valor recesivo mientras existe al menos un nodo transmitiendo un valor dominante, será este último el que gane el arbitraje del bus, deteniendo los demás su transmisión y quedándose a la escucha. De esto se deduce que la forma de crear mensajes más prioritarios es dándoles un identificador de bajo valor decimal, ya que comenzaría con más valores dominantes (0) Filtrado de mensajes, enmascaramiento La subcapa LLC de la capa de enlace de datos proporciona a los nodos un mecanismo de filtros y máscaras para la aceptación de mensajes. Las máscaras son un conjunto de 11 bits por defecto a 0 donde se ponen a 1 indicando la posición del bit en el identificador del mensaje que se quiere verificar mediante el filtro. Veamos ahora un ejemplo, tenemos dos identificadores en formato estándar de 11 bits que representarán un rango de mensajes el 0x120 y el 0x13F. Observando individualmente los bits: Página 9 de 12

194 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/2012 Como queremos definir un rango, nos fijamos en la parte alta de cada tetra de bits (excepto los más significativos que son tres) que es invariante. Si obligamos a que se verifiquen dichos bits tendríamos las siguientes máscaras y filtros. Obligamos a que se verifique la parte invariante entre los dos identificadores, mediante la máscara, a continuación se comparará con los filtros qué tipo de mensaje es. Si está en el rango entre 0x120 y 0x13F se aceptará, cualquier otro identificador será descartado. Página 10 de 12

195 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Conclusiones El principal objetivo que nos marcamos a la hora de realizar esta memoria ha sido la de elaborar un documento ameno y sencillo evadiendo pues la necesidad de unos conocimientos previos acerca de la materia por parte del lector. Ello da pie pues a que el lector con un interés general sobre la materia adquiera una ligera idea, y por otra ayuda como punto inicial a la investigación más profunda por parte de un lector especializado. Tras realizar el trabajo, nos hemos dado cuenta de la importancia que toma la investigación y el estudio en la elección del protocolo que mejor se ajuste a la hora de desarrollar un proyecto. Decimos el que mejor se ajuste y no el mejor porque evidentemente todo dependerá de las características del proyecto, por otra parte resulta obvio destacar que si existiera un protocolo sin ningún tipo inconvenientes respecto a los otros, el objeto de la investigación resultaría inútil. Página 11 de 12

196 Universidad de Las Palmas de Gran Canaria Grado en Ingeniería Informática Escuela de Ingeniería Informática Sistemas Empotrados y de Tiempo Real Curso 2011/ Índice de palabras cruzadas A Arbitraje, pág. 9 B Bit nominal, pág. 6 Bit timing, pág. 6 C Capa de enlace de datos, pág. 7 Capa física, pág. 5 Cuanto, pág. 6 D Data Frame (ver Trama de datos) Dominante, pág. 5 E Enmascaramiento, pág. 9 Error Frame (ver Trama de error) F Filtrado de mensajes, pág. 9 I ISO , pág. 5 ISO , pág. 5 M Máscara, pág. 9 O Overload Frame (ver Trama de sobrecarga) Q Quantum (ver cuanto) R Recesivo, pág. 5 Remote Frame (ver Trama remota) S Sincronización, pág. 6 T Trama de datos, págs. 7, 8 Trama de sobrecarga, pág 8 Trama de error, pág. 7 Trama remota, pág 7 Página 12 de 12

197 Grupo 10

198 Motorola Freescale Aridany Santana Sánchez 22 diciembre de 2011

199 Índice de contenido Introducción...3 Freescale, La Empresa...4 Gráfica de ventas...5 Microcontroladores...6 Familia de microcontroladores...6 Microcontroladores de 8 bits...6 Microcontroladores de 16 bits...7 Microcontroladores de 32 bits...7 Arquitectura...9 Microcontroladores MC68H C908JL3 / JK3 / JK1...9 Características De la CPU Características de los microcontroladores...10 Registros de la CPU...11 Modos de direccionamiento...12 Distribución de pines del microcontrolador...14 Mapa de memoria del JL Registros de entrada / salida...18 Interrupciones...19 Interrupción IRQ:...19 Registro de control de teclado...20 Esquema interno Módulo de interrupción por teclado. Nos permite simplificar el proceso de capturar la tecla pulsada...21 Programación microcontroladores...22 IDE Codewarrior...22 Programadores...24 Bibliografía...25 Página 2/25

200 Introducción Actualmente los microcontroladores están presentes en nuestro trabajo, en nuestra casa y en nuestra vida en general. Se pueden encontrar controlando el funcionamiento de los ratones y teclados de los ordenadores, en los teléfonos, en los televisores, en frigoríficos, ascensores, juguetes, etc... Una de las empresas líderes en el sector es Freescale con más de 60 años de experiencia y liderazgo en la fabricación de microcontroladores. Gracias a su estabilidad, facilidad de programación y bajo costo frente a sus competidores. Este trabajo pretende mostrar las características básicas de los microcontroladores Freescale. Realizando un barrido por todas sus características, desde la distribución de pines, el mapa de memoria, los registros de la CPU, las interrupciones, el entorno de desarrollo entre otros.

201 Freescale, La Empresa Freescale Semiconductor, Inc. Es una empresa multinacional, líder en la industria de los semiconductores, especializada en microcontroladores y productos de conectividad. Actualmente centra su producción en productos para la industria automotriz, de redes, comunicaciones inalámbricas, control industrial e industria de consumo electrónico, gracias a su estabilidad, facilidad de programación y bajo coste. Freescale fue una de las primeras compañías de semiconductores a nivel mundial, comenzó como una división de Motorola en Phoenix, Arizona en Después de más de 50 años como parte de Motorola, Freescale comenzó una nueva vida como compañía independiente en Julio del Actualmente tiene su cede central en Austin, Texas, Estados Unidos, y está compuesta por empleados que operan en más de 30 países. Es una de las compañías más grandes de semiconductores con ventas en el 2006 de 6.4 Billones de dólares. El viernes 15 de septiembre de 2006 Freescale aceptó ser absorbida por Blackstone Group LP tras el pago de millones de dólares (40 dólares por acción). En una junta extraordinaria de accionistas celebrada el 13 de noviembre de 2006 se aprobó la absorción. La operación, cerrada el 1 de diciembre de 2006, fue una de las mayores absorciones ejecutadas en el ámbito de las compañías tecnológicas y una de las diez mayores de todos los tiempos Actualmente su base de datos de cliente está integrada por más de 10,000 clientes alrededor del mundo. Entre ellos más de 100 fabricantes entre los que cabe destacar: Sony electronics, Electrodomésticos Whirlpool, teclados y ratones Logitech, sistemas de entrenamiento Lifefitness, Routers Cisco, Radios Bose, Sistemas de calefacción y enfriamiento Trane, Vehículos Mercedes, BMW, Ford, Hyundai, General Motors entre otros fabricantes a nivel internacional. Es propietaria de siete fábricas de obleas, dos de ensamble y sitios de pruebas y una línea piloto de pruebas de 300 milímetros y centro de investigación y desarrollo en Crolles, Francia junto con STMicroelectronics y NXP. Invierte 1 Billón de dólares anualmente en investigación y Desarrollo y tiene familias de patentes. Motorola ha marcado varios hitos en la historia de los semiconductores. En 1955, fabricó el primer transistor para radio de coches. Y fue pionera en la producción masiva de semiconductores. En la década de los 60, suministró miles de dispositivos electrónicos al proyecto Apolo 11,nombre de la misión espacial que Estados Unidos envió al espacio el 16 de julio de 1969, siendo la primera misión tripulada en llegar a la superficie de la Luna. Ese mismo año, las tecnologías de Freescale se utilizaron para introducir las primeras radios two-way. (Walkie-Talkies). Varios años más tarde, en 1973, desarrolló el primer prototipo de teléfono móvil analógico. EL primer microcontrolador de la compañía, MC bit, fue creado en 1974 y utilizado diversos sectores como automoción, computación y vídeo juegos. La siguiente generación de microprocesadores de 32 bits, el MC68000, llegó en el año 1984 y encabezaron la ola de tecnologías que impulsó la revolución de la computación. Empresas como Apple, Sun o Hewlett Packard incorporaron el microcontrolador a sus dispositivos. Página 4/25

202 Freescale también se ha estado encargando de los procesadores PowerPC para los Apple PowerBook y Mac mini hasta la transición de Apple a Intel en La compañía forma parte desde 2006 de Power.org como miembro fundador de esta asociación para el desarrollo y promoción de la arquitectura Power. Gráfica de ventas

203 Microcontroladores Los microcontroladores Freescale se caracterizan por ser muy confiables, fáciles de programar, menor costo, mayor diversidad de instrucciones para la ejecución de operaciones matemática como multiplicaciones y divisiones, manejo de interrupciones vectorizadas más no jerarquizadas. Familia de microcontroladores Freescale cuenta con una gran diversidad de microcontroladores para todos los gustos y requerimientos que presente un usuario en un determinado momento, los cuales se pueden clasificar de la siguiente forma: Microcontroladores de 8 bits Familias HC08: HC08AB,HC08AP, HC08AS/AZ, HC08BD, HC08EY, HC08G, HC08JK/JL, HC08MR,HC08Q, HC08RF, HC08SR. El 68HC08, también conocida simplemente por HC08, es una familia de microcontroladores de 8 bits y arquitectura de von Neumann, con un solo bloque de memoria. Los HC08 son microcontroladores de propósito general, cada miembro de esta familia cuenta con diferentes periféricos internos, pero con una CPU común que permite migrar aplicaciones entre ellos, facilitando con ello el diseño. Entre los periféricos internos que cuentan estos microcontroladores esta conversores analógicos-digital, módulo de control de tiempos y sistemas de comunicación como SPI, I²C, USB o SCI o UART entre otros. La amplia variedad de microcontroladores dentro de esta familia nos permite elegir entre modelos de 8 a 64 pins. Con memoria de 1K,4K y 32k y con conectividad USB 1.1 o LIN. Sus principales características son: Código compatible con la familia M6805, M14805 y la familia HC05. El bus interno tiene una frecuencia de 8 MHz. Sistema para proteger el funcionamiento estable del programa. Reset opcional por watch-dog o (COP) (computer operating properly). Detección de baja tensión de alimentación seleccionable a 3.0 o 5.0 Volts. Detección de un código de instrucción ilegal o no existente con opción a reset automático. Detección de una dirección ilegal o no existente con opción a reset automático. Diseñado para sistemas que usan poca potencia. La memoria RAM es totalmente estática con los modos (STOP) y modo esperar un evento externo (WAIT). Dentro de las familias con mejoras significativas sobre las anteriores, incluyendo módulos I2C, SPI, entre otros, se pueden mencionar: Familias HCS08: HCS08AW, HCS08G/Q/R Freescale creo una mejora de la familia HC08 denominada HCS08 que ofrece mejoras en algunas instrucciones y agrega nuevas, además en esta mejora los microcontroladores pueden ser depurados por puerto dedicado llamado BDM (background debug module), que mejora su versatilidad y amplia su gama de aplicaciones. Familias RS08: MC9RS08KA1/2 Página 6/25

204 También denominadas de ultra bajo coste, está basada en el core de instrucciones reducidas RS08, donde sus principales ventajas son su muy reducido costo, facilidad de integración en aplicaciones de volúmenes elevados y los distintos modos de direccionamiento. Otras de las características a destacar es su módulo BDM que permite emulación en tiempo real a un solo hilo de ejecución, oscilador interno de gran estabilidad que permite lograr frecuencias de bus de hasta 10Mhz y un módulo KBI para manejo de teclado por interrupciones. Los dispositivos MC9RS08KA1/2 se encuentran disponibles en el mercado en encapsulados de 8 PDIP, 8 pines SOIC y la versión ultra pequeña de 6 pines DFN (3mm x 3mm), complementándose con el hecho de que Freescale dispone de un amplio portafolio de herramientas hardware y software que soportan esta nueva familia. Existen otras familias importantes, como es el caso de las familias HC05 y HC11, las cuales actualmente se encuentran descontinuadas. Microcontroladores de 16 bits Este grupo presenta diferencias significativas con las familias anteriores, no sólo por los recursos adicionales que ofrecen sino también por alta capacidad de procesamiento. Dentro de las familias fundamentales se pueden mencionar: Familias S12: S12XA/XD, S12A, S12C, S12D,S12E, S12H, S12G y una que permite a los usuarios establecer comunicaciones de alta envergadura, como el caso de la familia S12 ETHERNET Y USB. Familias HC12: HC912BXX, HC912DXX Las principales características de esta familia son: Bajo consumo de potencia y operación a bajo voltaje. Memorias flash y EEPROM en un solo chip. Instrucciones de Fuzzy logic. Bus de datos de 16 bits. 64 nuevas instrucciones adicionales con respecto al modelo 68HC11. Unidad Aritmética Lógica (ALU) de 20 bits. Conversor A/D. PWM. Familias HC16: 68HC16R1, 68HC16Y1/Y3, 68HC16Z1/Z3 Y la familia 568XX/E, que brinda al usuario la posibilidad de integrar todo el potencial de los microcontroladores y la capacidad de procesamiento de señales que brinda un DSP en un solo chip, denominados DSCs. Microcontroladores de 32 bits Este grupo presenta características avanzadas tanto en velocidad de procesamiento como en funciones especiales que realiza. Dentro de las familias más importantes se pueden mencionar: Familias 68K/ColdFire: ColdFire MCF52XX, 68K M683XX, 68K M680X0 Es el primer microcontrolador de 32 bit con Ethernet, CAN y memoria flash incorporada que incluye avanzadas características de comunicaciones, un amplio set de periféricos y una gran variedad de software y herramientas de desarrollo para sistemas de redes embebidas. Estos dispositivos contienen drivers para manejo de redes Ethernet, protocolos Internet como IP, UDP, TCP, ICMP, ARP y DHCP, http para pequeños servidores web, servidores FTP triviales para

205 actualizaciones del firmware a distancia y clientes para protocolos al nivel de la aplicación para SMTP y SNTP, entre otros recursos adicionales, que hacen de estos diminutos dispositivos unos gigantes en el campo tecnológico del desarrollo de aplicaciones. Entre sus principales características internas se puede destacar: Memoria FLASH incorporada de 512KB Mac Ethernet 10/100 Soporte para protocoles UDB, IP, TCP, ARP, DHCP e ICMP. Interfaces analógicos-digitales (QADC) Timers de 16 y 32 bits interfaz I2C 3 UARTS para comunicaciones serie local Herramienta gráfica de inicialización para reducir el ciclo de diseño Página 8/25

206 Arquitectura Los microcontroladores Freescale implementan una arquitectura Von Neumann que se caracteriza por utilizar el mismo dispositivo de almacenamiento tanto para las instrucciones como para los datos, a diferencia de la arquitectura Harvard. Esta arquitectura es compartida por la mayoría de microcontroladores. Emplea una arquitectura CISC caracterizada por tener un conjunto de instrucciones muy amplio y permitir operaciones complejas entre operandos situados en la memoria o en los registros internos, en contraposición a la arquitectura RISC. Este tipo de arquitectura dificulta el paralelismo entre instrucciones, por lo que, la mayoría de los sistemas CISC de alto rendimiento implementan un sistema que convierte dichas instrucciones complejas en varias instrucciones simples del tipo RISC, llamadas generalmente microinstrucciones. Microcontroladores MC68H C908JL3 / JK3 / JK1 Por analogía con el microcontrolador, PIC16F84, utilizado en los trabajos prácticos de la asignatura, se utilizará los modelos JL3 / JK1 y JK3 para describir las características y arquitectura de los microcontroladores Freescale. Estos modelos son miembros de muy bajo costo, alto desempeño en la familia de 8 bits M68HC08. Todos los miembros de la familia 08 de Freescale utilizan la unidad de procesamiento CPU08 y están presentes en una gran variedad de presentaciones de (20,28 y 40 pines) y en diversos tamaños de memoria de programa (1,5K, 4K y 32K). Dentro de las principales características destacan: memoria flash (borrable y programable eléctricamente) además de contar con conversores análogos digitales, interrupciones vectorizadas, interrupciones externas, timers, etc. Modelo Tamaño memoria Flash Nº. Pines MC68H-C908JL bytes 28 pines MC68H-C908JK bytes 20 pines MC68H-C908JK bytes 20 pines

207 Características De la CPU 08 Presenta un modelo de programación muy completo. Tiene un conjunto de instrucciones muy amplio, incluyendo varios modos de direccionamiento. Registro de 16 bits (H:X) y stack pointer manipulable por el usuario. Instrucciones de transferencia de memoria a memoria Instrucciones de multiplicación rápida 8*8. Instrucciones de división rápida de 16/8. Instrucciones de BCD. Fácil Soporte de lenguajes de alto nivel como el C Características de los microcontroladores CPU de 8 bits. Operación interna a 8MHz. Rango de operaciones entre 3v y 5v. LVI: Protección contra voltaje Opción de oscilador con red RC o cristal Sistema de programación Flash Seguridad Flash 128 bytes de Memoria RAM. 2 timers de 16 bits. 12 canales de conversores A/D de 8 bits (JL3), 10 canales de conversores AD para JK3 23 Pines de entrada / salida para uso general (JL3) 7 interrupciones de teclado con resistencias de Pull-up 10 drivers para LED. 2 ICAP / OCAP / PWM 15 Pines de entrada / Salida para uso general (JK3, JK1) 1 interrupción por teclado con resistencias de Pull-up. 4 drivers para LED. 2 ICAP / OCAP / PWM Modos de bajo consumo Watch dog time 7 Interrupciones vectorizadas. Pull-down programables por puerto de entrada. Página 10/25

208 Registros de la CPU Existen registros que se encuentran constantemente interactuando con el microcontrolador, efectuando tareas de acuerdo con las instrucciones que se vayan realizando. Uno de los detalles a tener en cuenta es que a pesar de que estos registros hacen parte constante de la programación e microcontroladores, son registros propios e internos de la CPU y por tal razón no se encuentran mapeados en la memoria. Acumulador(A): Registro de 8 bits de propósito general usado en las operaciones aritméticas y lógicas. El acumulador comunmente se utiliza para almacenar operandos, resultados de cálculos aritméticos, y de manipulación de datos, complementándose con el hecho de ser directamente accesible a la CPU para operaciones no aritméticas. Registro índice (X): Registro de 8 bits que puede ser utilizado como un acumulador auxiliar, similar al registro A. También se emplea en los modos de direccionamiento indexados. El registro X provee un valor de 8 bits que es sumado a la dirección base provista por la instrucción para crear una dirección efectiva. Registro índice (H:X) Este registro puede ser visto como uno solo formado por 16 bits o como dos registros de 8 bits independientes H y X. Es utilizado en los modos de direccionamiento indexados y si rve como apuntador, siendo capaz de cubrir todo el mapa de memoria con 16 bits. Puntero de Pila (SP): Registro de 16 bits contiene la dirección de la posición disponible en la pila. Contador de programa (PC): Es un registro de 16 bits que contiene la dirección de la siguiente instrucción u operación a procesar. Registro de Banderas (CCR): Es un registro de 8 bits que contiene el bit de enmascarado general de interrupciones y 5 banderas de estado, las cuales indican ciertas condiciones originadas por la instrucción previamente ejecutada. v: Flag overflow: Se activa si el resultado sale del rango de -128 a 127. Este bit puede ser modificado por operaciones no aritmética. H: Flag de medio carry: 1 si se produce un desbordamiento en los primeros 4 bits del resultado. 0 en caso contrario. I: Máscara de interrupción: Este bit habilita / deshabilita las interrupciones en el microcontrolador. Si tiene el valor 1 todas las interrupciones permanecerán deshabilitadas hasta que se asigne el valor 0. Cuando ocurre una interrupción, este bit se coloca automáticamente a 1 lógico. Si ocurre una interrupción interna mientras el bit I está a uno, la interrupción es almacenada y procesada cuando el bit I vuelva a tener el valor 0. N: Flag de valor negativo: Refleja el estado del bit de signo (bit 7) de la última instrucción. Al igual que el flag cero, esto se extiende a otro tipo de instrucciones.

209 Z: Flag cero: Bit a 1 cuando el resultado de una operación aritmética o lógica de como resultado cero. C: Bandera de carry: En instrucciones aritméticas sin signo, esta bandera indica si ocurrió un desbordamiento en el en el resultado, es decir, si salió del rango de 0 a 255. Las operaciones de desplazamiento y rotación pueden también modificar este bit. El valor 1 indica desbordamiento, 0 en caso contrario. Modos de direccionamiento Un modo de direccionamiento especifica la forma de calcular la dirección de memoria efectiva de un operando mediante el uso de la información contenida en registros y / o constantes, contenida dentro de una instrucción de la máquina o en otra parte. Los microcontroladores Freescale usan seis modos de direccionamiento. Direccionamiento Inmediato: En el modo de direccionamiento inmediato, el operando está contenido en el byte inmediato siguiente al código de operación. Se usa cuando se requiere un valor o constante conocido en el momento de escribir el programa y que no cambiará durante la ejecución del programa. LDA #$0F; A=$0F Direccionamiento inherente: Se caracteriza porque toda la información requerida para la operación ya es conocida por la CPU y no es necesario utilizar operandos adicionales. INCA; Incrementa el acumulador A Direccionamiento extendido: Es el más importante y utilizado en la programación de microcontroladores. Consiste en extraer la información almacenada en una dirección de memoria que para representarla requiere 2 bytes. Este modo se emplea para hacer referencia a cualquier dirección de la memoria RAM, ROM, EPPROM, Flash. Ejemplo: Supongamos que en la posición de memoria $0367 está almacenado el valor $0F LDA $0367 ;A=$0F Direccionamiento directo: Similar al modo de direccionamiento extendido, con la diferencia de que el byte correspondiente a la parte alta de la dirección del operando se asume con el valor $00. Esto delimita, de cierta forma, los registros y recursos del microcontrolador. Esta área de memoria en especial se denomina página directa, la cual incluye los registros de memoria RAM y puertos de entrada/salida del interior del chip. Ejemplo: Supongamos que en la posición de memoria $80 se encuentra el valor $0F LDA $80 ; A = $0F Direccionamiento indexado: La dirección efectiva del operando es variable y depende de dos factores: El valor almacenado actualmente en el registro índice X y el desplazamiento contenido en el byte o bytes siguientes al código de operación. Se puede clasificar de tres maneras diferentes: Indexado sin desplazamiento: Consiste en que la dirección efectiva del operando para la instrucción está Página 12/25

210 contenida en los 8 bits del registro índice. De tal forma que este modo de direccionamiento puede acceder a las primeras 256 posiciones de memoria. Ejemplo: Supongamos que en la dirección de memoria $80 se encuentra almacenado el valor $0F y se desea acceder a esta posición utilizando el modo de direccionamiento indexado sin desplazamiento. LDX #$80 LDA 0,X ; X = 80 Dirección a ser apuntada por el registro X ;Carga el registro A con el valor almacenado previamente en la dirección 80h. Indexado con desplazamiento de 8bits: Consiste en que la dirección efectiva es la suma del contenido del registro índice de 8 bits y el byte de desplazamiento siguiente a la instrucción. Ejemplo: Supongamos que en la posición de memoria $85 se encuentra almacenado el valor $0F. LDX LDX#$80 #$80 ; X;X=$80 = 80 Dirección direccióna aser serapuntada apuntadapor porelelregistro registroxx LDA 5,XLDX #$80 ;Carga ; X el = registro 80 Dirección A conael ser valor apuntada almacenado por el registro en la dirección X $85 Indexado con desplazamiento de 16 bits: La dirección efectiva se obtiene de la suma del registro X y los dos bytes siguientes a la instrucción. Se debe tener en cuenta que el byte de desplazamiento suministrado en la instrucción es un número entero sin signo de 16 bits. Ejemplo: Supongamos que en la posición de memoria $0315 se encuentra almacenado el valor $0F LDX #$5 ; X = $5 LDA $0310,X ; Carga el registro A con el valor almacenado en la dirección Direccionamiento relativo: Es usado solamente en las instrucciones de bifurcación. Como en algunos casos se desea que el salto sea en cualquier sentido, el byte de desplazamiento es un número que puede presentar bit de signo, comprendido en el rango -128 a 127. Direccionamiento de Memoria a Memoria: Se puede utilizar de cuatro formas diferentes: Inmediato Directo MOV #$30, $80 Directo Directo MOV $80,$90 Directo Indexado MOV $80,X+ Indexado Directo MOV X+,$90 Direccionamiento con Puntero Pila: Permite agregar 8 ó 16 bits con offset. LDA $50,SP LDA $0150, SP

211 Distribución de pines del microcontrolador Como se puede observar en la imagen anterior, el microcontrolador JL3 está constituido por 28 pines, mientras que los microcontroladores JK1 y JK3 poseen 20 pines. Una de las principales características de estos microcontroladores es que sus pines comparten recursos propios del dispositivo. Además tienen dos pines para conexión del oscilador, el cual permite el funcionamiento del microcontrolador, conversores analógicos-digital, fuentes de interrupciones externa como la IRQ1 y funciones de interrupción por teclado, este último solo en el modelo JL3. A continuación se describe cada uno de los pines. Página 14/25

212 Nombre del Pin Descripción del Pin Entrada / Salida Nivel de Voltaje VDD Alimentación positiva Entrada 3 5V VSS Tierra Salida 0V RST Reset activo en bajo Entrada VDD IRQ1 Interrupción externa Posee resistencia de Pull-Up Pin usado para seleccionar el modo de arranque Entrada VDD OSC1 Entrada del oscilador Entrada OSC2 Para oscilador a cristal: salida del OSC1 Para oscilador RC PTA[0:6] 7 bits de propósito general. Entrada /Salida Entrada / Salida VDD 7 bits interrupciones de teclado. Entrada Entrada VDD Resistencias Pull-Up programable VDD PTB[0:7] 8 bits de propósito general 8 conversores A/D ADC[0:7] PTD[0:7] Salida Entrada / Salida VDD Entrada / Salida VDD Entrada 8 bits de propósito general Entrada / Salida VDD PTD[3:0] 4 Conversores A/D ADC[8:11] Entrada PTD[4:5] canales TIM, TCH0, TCH1 Entrada / Salida VDD PTD[6:7] pines I/O drenador abierto Entrada / Salida VDD Nota: En los modelos JK3 y JK1 no está disponible el PTA,el PTD0 ni el PTD1

213 Mapa de memoria del JL3 Desde las direcciones $0000 hasta la $003F se encuentran todos los registros de control para entrada y salida de datos, configuración de los puertos, A, B y D, configuración y estado de los Página 16/25

214 timers, de los canales de conversión A/D. Dirección Nombre Detalle $0000 PORTA Registro del puerto A $0001 PORTB Registro del puerto B $0003 PORTD Registro del puerto D $0004 DDRA Registro de configuración del puerto A $0005 DDRB Registro de configuración del puerto B $0007 DDRD Registro de configuración del puerto D $000A PDCR Registro de control del purto D $000D PTAPUE Habilitación de la resistencia Pull-UP del puerto A $001A KBSCR Control del teclado $001B KBIER Habilitación de interrupción del teclado $001D INTSCR Control y estado de la IRQ $001E CONFIG2 Registro de configuración $001F CONFIG1 Registro de configuración $0020 TSC Registro de estatus y control del TIM $0021 TCNTH Byte alto contador del timer (TIM) $0022 TCNTL Byte bajo contador del timer (TIM) $0023 TMODH Módulo del contador del TIM byte alto $0024 TMODL Módulo del contador del TIM byte bajo $0025 TSC0 Estatus y control del TIM canal 0 $0026 TCH0H Timer CH0 byte alto $0027 TCH0L Timer CH0 byte bajo $0028 TSC1 Estatus y control del TIM canal 1 $0029 TCH1H Timer CH1 byte alto $002A TCH1L Timer CH1 byte bajo $003C ADSCR Control y estatus del ADC $003D ADR Datos del ADC $003E AD/CLK Reloj del ADC

215 Registros de entrada / salida Registro PORT A (PTA) dirección $0000 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit1 Bit 0 0 PTA 6 PTA 5 PTA PTA 3 PTA 2 PTA 1 PTA 0 Este registro posee 8 bits de los cuales solo 7 pueden ser configurados como pines de entrada o salida de manera independiente a través del registro DDRA. Este registro tiene la función especial de interrupción por teclado, efectuándose esta configuración a través del registro KBI. Una de las principales características de este puerto es que cada pin del puerto A posee configuración por software de las resistencias de Pull-Up a través del registro PTAPUE. Resistencias con valor de 30K. Registro DDRA dirección $0004 Mediante este registro se realiza la configuración de los bits del registro PORT A, ya sea como entrada o como salida. El valor 1 es configurado como salida. El valor 0 como entrada. Registro PTAPUE dirección $000D Este registro permite habilitar / deshabilitar las resistencias Pull-Up para cada uno de los pines del puerto A. El bit 7 permite configurar el OSC2. Registro PORTB (PTB) dirección $0001 Este registro proporciona 8 bits de propósito general. Adicionalmente puede actuar como conversor analógico-digital, en donde cada pin del puerto correspondería a un canal de conversión A/D. Cada uno de estos pines pueden ser configurado como entrada o salida de manera independiente a través del registro DDRB. Registro DDRB dirección $0005 Mediante este registro de 8 bits se realiza la configuración de los bits del registro PORT B ya sea como entradas o salidas. Registro PTD dirección $0003 Posee dos pines destinados para uso del módulo TIM, 4 pines destinados para canales de conversión A/D y dos pines (PTD6 y PTD7) que poseen drivers de corriente superior a 25ma y resistencias de Pull-Up programables de 5k. Registro DDRD Dirección $0007 Mediante este registro se efectúa la configuración de los bits del registro PORTD ya sea de entrada como de salida. Registro de control del PORTD PDCR dirección $000A Página 18/25

216 Este registro permite habilitar y deshabilitar las resistencias de Pull-Up, y manejo del driver de corriente para los pines PTD7 y PTD6 Interrupciones Una interrupción cambia temporalmente la secuencia del programa en ejecución y va a responder en un evento particular. Es decir, se emplean a veces para interrumpir el procesamiento normal o para responder a algún evento inusual. Los microcontroladores por lo general pueden ser interrumpidos mediante diferentes fuentes de interrupción. Una de las ventajas que presentan las interrupciones en los microcontroladores Freescale, es que su manejo se realiza de forma vectorizada. Esto quiere decir, que cada interrupción tiene asignada una dirección de programa donde se encuentra la rutina encargada de procesar la interrupción. A continuación se muestra una tabla con las prioridades de las distintas interrupciones. La instrucción SWI Las instrucción SWI no enmascarable que causa una interrupción indiferente del estado del bit I (bandera de interrupción), en la condición de registro de código. Una interrupción por software envía el PC, contador de programa, a la pila, pero no aplica el PC=PC-1, operación que si realiza las interrupciones por hardware. Interrupción IRQ: Interrupción externa. Equivale a la interrupción por flanco presente en el pin RB0 del PIC16F84. Tiene las siguientes características Pin para interrupción externa. Bit de control de interrupción IRQ Buffer de histéresis Interrupción programable como flanco o como flanco y nivel. Reconocimiento de interrupción automáticamente. Resistencias de Pull-Up seleccionable.

217 Registro de control de teclado Registro de control y estado del teclado KBSCR Dirección $001A Leer Escribir Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit KEYF 0 IMASKK MODEK Bit 0 - KEYF: bit flag de teclado Este bit es de sólo lectura y toma el valor 1 lógico cuando la interrupción por teclado ha ocurrido y se encuentra pendiente de atender. 1: Interrupción de teclado pendiente. 0: Interrupción de teclado no pendiente. ACKK: bit de reconocimiento de teclado Este bit es leído siempre como 0 lógico, pero cuando se escribe en él un 1 lógico se está indicando que la interrupción por teclado ya fue atenida y, el bit KEYF retorna a 0 lógico. MODEK: configuración de sensibilidad de activación del teclado 1: Interrupción activada por flanco descendente y nivel lógico bajo. 0: interrupción activada por flanco descendente solamente. Registro de interrupciones de teclado KBIER dirección $001B Este registro habilita o deshabilita independientemente los pines del puerto A para utilizar la interrupción por teclado. Cuando se habilita la interrupción en un pin específico, la resistencia de Pull-Up es habilitada también en el pin correspondiente. Página 20/25

218 Esquema interno Módulo de interrupción por teclado. Nos permite simplificar el proceso de capturar la tecla pulsada.

219 Programación microcontroladores Una de las características que presentan los programadores de microcontroladores Freescale sobre los de otros fabricantes es la capacidad de emulación en el circuito de aplicación, y aunque esta tarea no se ejecuta en tiempo real, si es de gran ayuda para agilizar el trabajo y disminuir el tiempo de desarrollo de los programas. Otras características que ofrece el entorno de desarrollo Freescale son: Ambiente de desarrrollo totalmente integrado bajo windows. Se puede examinar, modificar la memoria, registros y pines de entrada / salida. Diferentes modos de ejecución. Acepta hasta 64 breakpoints. Programa microcontroladores OTP y EPROM. Existen infinidad de entornos de desarrollo desde GNU Compiler Collection a freeware o software de pago. Dos de los paquetes más interesantes son los desarrollados por P&E Micro y el Freescale CodeWarrior (el compilador cruzado de pago por excelencia), y SDCC (Small Device C Compiler), un desarrollo Open Source muy interesante y funcional que permite compilar código escrito en lenguaje C para múltiples plataformas de microcontroladores. IDE Codewarrior Características IDE basada eneclipse 3.4 Nuevo asistente de proyectos para crear un proyecto en por lo menos 9 clicks Asistente para cambio del MCU en unos 6 clicks Compilador C/C ++ optimizado para HCS08, RS08 y ColdFire derivados soporte para assembler (absoluto, relocalizable, mixto y en linea) para HCS08, RS08 y ColdFire derivados Debugger a nivel de fuente grafico HCS08 y V1 ColdFire on-chip debug Soporte de programación Flash Full-chip simulation para HCS08 y RS08 derivados Herramienta de Device Initialization compatibles con HCS08, RS08 y ColdFire y codigo de inicialización de perifericos Processor Expert con asistentes para HCS08, RS08 y ColdFire, on-chip peripherals, external peripherals Ejemplos en C para usar como plantillas para nuevos proyectos Tutoriales para minimizar la curva de aprendizaje Soporte para importar proyectos de versiones anteriores de Codewarrior(CW MCU v6.x, CW CF v7.x) Kernel-aware debug support for OSEKturbo en HCS08 derivados Linux en ColdFire V2, V3, y V4 derivados Plataformas soportadas: Página 22/25

220 Windows XP (32-bit Business) Windows Vista (32-bit Business, Home Premium) Linux Red Hat Enterprise Edition 5.2 Imagen CodeWarrior IDE

221 Programadores Freescale ofrece una amplica variedad de programadores que permiten programar y depurar el código en el microcontrolador. Uno de los modelos utilizado en la programación de la familia HC08 es el DEMO9S08QG8. Algunas de sus características son: Interfaz USB-BDM Led de estado indica que la conexión USB con el ordenador está establecida. Led de estado La interfaz USB está proporcionando voltaje a la tarjeta. Interfaz RS232 Dimensiones 2.9 x 2.5 Jumpers SER_EN PWR_SEL COM_SEL VX_EN Página 24/25

222 Bibliografía Para la elaboración del trabajo se ha consultado las siguientes referencias 1. Microcontroladores Motorola Freescale. Juan Carlos Vesga Ferreira. (ISBN: Marcombo) es.wikipieda.org 4. en.wikipedia.org

223 Grupo 11

224 Familia de Microcontroladores Intel Trabajo Teórico Sistemas Empotrados y de Tiempo Real Título de Grado en Ingeniería Informática de Sistemas Universidad de Las Palmas de Gran Canaria Escuela de Ingeniería Informática - Diciembre Autores: Armando Tapia González Ícaro Niz Sedeño Luis Fernando Franco Ortiz

225 Indice Introducción... 1 Microcontroladores Intel... 2 Familia MCS Familia MCS Familia MCS Familia MCS Incorporación a nuevos mercados: netbooks, tablets, smartphones... 5 Nueva Familia de Procesadores Intel Atom... 5 Principales Tecnologías aplicadas en la familia Atom... 6 Tecnología de Proceso Intel de 45nm Basada en Hafnio... 6 Tecnología Hyper-Threading Intel... 7 Evolución de la familia Atom... 7 Atom CE Atom N Intel Atom Z Arquitectura ARM. Principal competidora en los nuevos mercados de dispositivos móviles El futuro de Intel en el mercado de tablets y smartphones Futuros Proyectos Conclusión Bibliografía... 18

226 Familia de Microcontroladores Intel Grupo 11 Sistemas Empotrados y de Tiempo Real Título de Grado en Ingeniería Informática de Sistemas Introducción Intel construyó durante un tiempo microcontroladores, aunque más tarde abandonaría este mercado para centrarse exclusivamente en el mercado de los microprocesadores. En la actualidad, Intel tiene intenciones de retomar este mercado que esta en un incipiente auge de un tiempo a esta parte. La trayectoria de INTEL no ha ido encaminada fundamentalmente al desarrollo de microcontroladores, sino que se ha basado en el desarrollo de microprocesadores para PC S y servidores, campo en el que ha sido líder indiscutible. Aunque las nuevas tendencias en la tecnología hacen peligrar su hegeomonía. En el floreciente mercado de smartphones y tablets se ha visto eclipsada por ARM. Es en este sector donde está queriendo abrirse camino desde los últimos años y donde hemos querido incidir en la elaboración de este trabajo. No obstante comenzamos citando a tres familias de microcontroladores intel, que aunque estén actualmente descatalogadas, debido a su bajo coste y bajo consumo, siguen usándose con distintas finalidades en el mundo industrial, ya sea con los modelos restantes en el mercado o con microcontroladores compatibles creados por otras compañías. Página 1

227 Familia de Microcontroladores Intel Grupo 11 Sistemas Empotrados y de Tiempo Real Título de Grado en Ingeniería Informática de Sistemas Microcontroladores de Intel Familia MCS-48 Esta fue la primera familia de microcontroladores de Intel, lanzada en Su modelo más representativo ejemplifica las características de este microcontrolador. Posee un repertorio de instrucciones de 8 bits, una ALU de 8 bits, 2 puertos de entrada/salida de 8 bits, un oscilador interno de 11MHz. Utilizan una arquitectura Harvard modificada, en la que la memoria de instrucciones y datos están separadas, pero se accede a ellas de la misma manera. Sus registros e instrucciones son de 8 bits. Posee un espacio de direcciones propio para la entrada y salida. La mayoría de los modelos incluyen una memoria de tipo ROM (no programable), EPROM (programable un número infinito de veces) o OTP EPROM (programable una única vez) para los programas incluida dentro del propio encapsulamiento, pero algunos modelos no incluyen este elemento y requieren de una memoria ROM externa. La memoria de datos de esta familia de microcontroladores es una RAM de 64 a 256 bytes. A pesar de que la siguiente generación se diseñó para sustituir a esta, siguió teniendo éxito debido a su bajo coste y su eficiente repertorio de instrucciones. Modelos Si bien el modelo más representativo de la familia es el 8048, existen diversos modelos. Microcontrolador Memoria de programa Memoria de datos Kb ROM 64b RAM Kb ROM 64b RAM Kb ROM 64b RAM b RAM b RAM b RAM Kb ROM 64b RAM Kb ROM 128b RAM Kb ROM 256b RAM Kb EPROM 64b RAM Kb EPROM 128b RAM Kb OTP EPROM 64b RAM Kb ROM 64b RAM Página 2

228 Familia de Microcontroladores Intel Grupo 11 Sistemas Empotrados y de Tiempo Real Título de Grado en Ingeniería Informática de Sistemas Familia MCS-51 Diseñada para sustituir a los MCS-48, esta familia de microcontroladores siguió los pasos de sus predecesores pero adaptando las nuevas tecnologías y requisitos de los usuarios. El modelo más representativo de la familia es el 8051, que sigue usando un repertorio de instrucciones de 8 bits, pero incluye nuevas funciones para trabajar a nivel de bits. También incluye 4 puerto de entrada/salida de 8 bits, interrupciones con 2 niveles de prioridad, 2/3 temporizadores e incluso un puerto serie UART. Al igual que la anterior familia, existen modelos con ROM o sin ella, pero algunos modelos incluyen EEPROM o memorias Flash. Modelos Existen los siguientes modelos Modelo Memoria de programa Memoria de datos Otros Kb ROM 128b RAM b RAM Kb ROM 256b RAM b RAM 80C537 8Kb ROM 256b RAM Tecnología CMOS Familia MCS-96 En esta generación de microcontroladores se introducen las instrucciones de 16 bits, algunas incluso de 3 operandos, y el trabajo con buses de 8 o 16 bits. Esta familia incluye unidades de cálculo de multiplicaciones y divisiones integrado en el encapsulamiento. Utiliza la tecnología HMOS, que mejora la antigua CMOS. Su propósito inicial era el uso en la industria automovilística, pero son muy versátiles y disponen de muchísimas configuraciones distintas. Se usa incluso en dispositivos de sonido como sintetizadores MIDI. Página 3

229 Familia de Microcontroladores Intel Grupo 11 Sistemas Empotrados y de Tiempo Real Título de Grado en Ingeniería Informática de Sistemas Modelos Existe una gran variedad de modelos. Estos son sólo unos pocos de los existentes. Modelo Memoria de programa Memoria de datos b RAM Kb ROM 256b RAM Kb EPROM 256b RAM 80C196-1Kb RAM 83C196 8Kb ROM 1Kb RAM Familia MCS-296 Esta familia de microcontroladores, también de 16 bits, fue la última desarrollada por Intel. Mejora a la familia previa y esta enfocada principalmente al procesamiento digital de señales. El 80296, su máximo representante, posee una RAM de 2Kb para datos y código, así como 512 bytes de registros. Posee 4 puertos de 8 bits de entrada/salida, 3 moduladores de ancho de pulso, 2 temporizadores, 4 pins de interrupciones, multiplicaciones y divisiones sin signo, todo ello aprovechando la tecnología CHMOS, más avanzada que la HMOS de la familia anterior. Trabaja a una frecuencia de 50 MHz, lo que remarca la distancia entre el rendimiento de los primeros 8048 que trabajaban a 11MHz. Página 4

230 Familia de Microcontroladores Intel Grupo 11 Sistemas Empotrados y de Tiempo Real Título de Grado en Ingeniería Informática de Sistemas INCORPORACIÓN A NUEVOS MERCADOS: NETBOOKS, TABLETS, SMARTPHONES Los principales inconvenientes que tienen los procesadores INTEL para este tipo de dispositivos, son su inapropiado tamaño, su excesivo calentamiento, que requieren ventiladores para la disipación del calor, agravando más aún, el problema del exceso de tamaño, y su elevado consumo energético que lo hace inapropiado para aparatos alimentados por batería. La arquitectura x86 en que se basa INTEL, que se trata de una arquitectura CISC, se compone de instrucciones complejas, distintos formatos, muchos modos de direccionamiento y distinta duración, esto produce un alto rendimiento pero requieren mayor consumo de energía, necesidad de más espacio físico tornándolos completamente incompatibles con la propuesta de dispositivos portátiles. Nueva Familia de Procesadores Intel Atom El 15 de octubre de 2007 Intel confirmó que estaba trabajando en un nuevo procesador para PC Ultra-portátiles de nombre en clave Diamondville, que finalmente aparecerían en el mercado con el nombre comercial registrado de Intel Atom. Intel Atom es el nombre de una línea de microprocesadores x86 y x86-64 de Intel, anteriormente denominados Silverthorne/Diamondville. Están diseñados para un proceso de fabricación de 45 nm CMOS y destinados a utilizarse en dispositivos móviles de Internet (MID, por sus siglas en inglés), Ultra-portátiles, Teléfonos inteligentes, y otros portátiles de baja potencia y aplicaciones. Los Atom implementan el conjunto de instrucciones x86-64 y x86 (IA-32); excepto en los primeros modelos del Intel Atom (versiones N2xx y Z5xx); dichos modelos solo implementan el conjunto de instrucciones x86. Hasta la fecha, todos los Intel Atom actuales ya integran instrucciones x86-64 (las versiones N2xx y Z5xx de Intel Atom están oficialmente descatalogadas). Los procesadores Intel Atom se han optimizado, para reducir la serie de inconvenientes anteriormente mencionados, de excesivo tamaño, consumo y calentamiento incorporando las siguientes características: Una nueva gama de dispositivos con consumo eficaz de energía y un excelente rendimiento gracias a la avanzada tecnología de compuerta metálica High-K de 45 nm y próximamente, la tecnología de proceso de silicio de 32 nm Procesador de aplicaciones sumamente integradas que transforma los dispositivos de uso cotidiano, incorporando la GPU y el controlador de memoria a la unidad de procesamiento. Diseños más pequeños y más compactos con una baja potencia de diseño térmico (TDP) que varía de menos de 1 vatio a 13 vatios. Este parámetro representa la máxima cantidad de calor que necesitaría disipar el sistema de refrigeración de un procesador cuando se ejecutan aplicaciones reales Página 5

231 Familia de Microcontroladores Intel Grupo 11 Sistemas Empotrados y de Tiempo Real Título de Grado en Ingeniería Informática de Sistemas Opciones de bajo consumo de energía en determinados dispositivos que permiten mantener un estado inactivo con poca energía y, por ende, ahorrarla Rendimiento superior y mayor capacidad de respuesta del sistema gracias a la Tecnología Hyper-Threading Intel (tecnología Intel HT) Principales Tecnologías aplicadas en la familia Atom - Tecnología de Proceso Intel de 45nm Basada en Hafnio - Tecnología Hyper-Threading Intel Tecnología de Proceso Intel de 45nm Basada en Hafnio Con materiales radicalmente nuevos, como los circuitos basados en hafnio, la nueva tecnología Intel de silicio de compuerta metálica Hi-k de 45nm, contribuye a incrementar de manera considerable el rendimiento y la eficacia en el consumo de energía del procesador, además de optimizar la flexibilidad de diseño. En la imagen superior se muestra como cambiando los materiales de los componentes de los transisitores, un nuevo material con una propiedad llamada highk, para el componente dieléctrico de la compuerta del transistor, y una nueva combinación de materiales metálicos para el electrodo de la compuerta del transistor, se consigue la tecnnología de 45nm, dando como resultado transistores con fuga de corriente muy baja y un récord de alto rendimiento. Como el componente dieléctrico de la compuerta high-k no es compatible con el electrodo de la compuerta de silicio actual, la segunda parte de la receta de materiales para transistores de 45 nm de Intel es el desarrollo de nuevos materiales para compuertas metálicas. Aunque los metales específicos que utiliza Intel siguen siendo un secreto, la compañía utilizará una combinación de diferentes materiales metálicos para los electrodos de las compuertas de los transistores. La combinación del componente dieléctrico de la compuerta high-k con la compuerta de metal de la tecnología de proceso de 45 nm de Intel ofrece un incremento de más de 20% en flujo de corriente o un mayor rendimiento de los transistores. A la inversa, reduce la fuga de drenaje en la fuente más de 5 veces, mejorando con ello la eficiencia de consumo de energía del transistor. La tecnología de proceso de 45 nm de Intel mejora también la densidad de transistores aproximadamente 2 veces con respecto a la generación anterior, permitiendo a la compañía incrementar el número total de transistores o hacer más Página 6

232 Familia de Microcontroladores Intel Grupo 11 Sistemas Empotrados y de Tiempo Real Título de Grado en Ingeniería Informática de Sistemas pequeños los procesadores. Como los transistores de 45 nm son más pequeños que la generación anterior, requieren menos energía para el encendido y apagado, reduciendo con ello la energía de switcheo activo en cerca de 30%. Intel utiliza alambres de cobre con un componente dieléctrico low-k para sus interconexiones de 45 nm para incrementar el rendimiento y reducir el consumo de energía. Tecnología Hyper-Threading Intel (HT) Permite a los programas preparados para ejecutar múltiples hilos (multithreaded) procesarlos en paralelo dentro de un único procesador, incrementando el uso de las unidades de ejecución del procesador. En el caso de la familia Intel Atom, el número de hilos que se pueden ejecutar simultáneamente es de 2. Esta tecnología consiste en simular dos procesadores lógicos dentro de un único procesador físico. El resultado es una mejoría en el rendimiento del procesador, puesto que al simular dos procesadores se pueden aprovechar mejor las unidades de cálculo manteniéndolas ocupadas durante un porcentaje mayor de tiempo. Esto conlleva una mejora en la velocidad de las aplicaciones que según Intel es aproximadamente de un 30 por ciento. La tecnología Hyper-Threading siguiente: - Procesador Intel compatible con la tecnología HT - Chipset Intel compatible con la tecnología HT. requiere un sistema informático con lo El rendimiento variará en función del hardware y el software que se utilicen. EVOLUCIÓN DE LA FAMILIA ATOM MARZO DE 2008: Intel anunció su primera versión de procesadores ATOM el 2 de marzo de Esta primera versión estaba destinada a usarse en dispositivos móviles de internet (MID) SEPTIEMBRE DE 2009 El Atom CE4100, construido con tecnología de proceso de 45nm, tiene una memoria caché L2 de 512KB y funciona a una velocidad de 1.2 GHz, y su consumo es muy bajo, tan sólo 7-9 vatios. Con estas características, Intel pretende adentrarse en el mundo de las televisiones y hacer mover a las empresas de los juegos de PC al televisor, sobre todo en aquellas pantallas 3D que requieren de hardware capaz de manejar el doble de capacidad de transferencia y proceso de datos de vídeo. Respecto al vídeo, el Atom CE4100 permite capturar vídeo en alta definición (1080p) sin comprimir. Permite decodificar dos vídeos stream en alta definición junto con los códecs de audio de alta calidad y también es capaz de renderizar los gráficos 3D, además soporta MPEG-4. Página 7

233 Familia de Microcontroladores Intel Grupo 11 Sistemas Empotrados y de Tiempo Real Título de Grado en Ingeniería Informática de Sistemas Este microprocesador está integrado en decodificadores de TV por cable y reproductores Blu-ray, streamers multimedia... ENERO 2010: Atom N450 En enero de 2010, Intel presenta el microprocesador N450 destinado a netbooks y portátiles La N450 es la primera plataforma de Intel que integra los gráficos y el controlador de memoria en la misma unidad de procesamiento. Están apoyados por un chipset Intel NM10 Express Página 8

234 Familia de Microcontroladores Intel Grupo 11 Sistemas Empotrados y de Tiempo Real Título de Grado en Ingeniería Informática de Sistemas 20% ahorro energético con generación anterior Dispone de un solo núcleo pero es capaz de realizar dos procesos simultáneamente, gracias a la tecnología HyperTreading Intel Enhanced Deeper Sleep (C4 / C4E/C6) Ahorra energía al convertir los datos de la caché a la memoria del sistema durante períodos de inactividad a fin de disminuir el consumo de energía y prolongar la duración de la batería. Microarquitectura Intel Atom y tecnología de fabricación de procesamiento de 45 nm Un procesador diseñado específicamente, con bajo consumo de energía, que ofrece una experiencia informática básica asequible. Tamaño de paquete de procesador de factor de formato pequeño El encapsulado Micro-Flip Chip libre de plomo², libre de halógeno³ es un 60 por ciento más pequeño (13.8 mm x 13.8 mm) que un procesador de un equipo notebook BGA (31 mm x 24 mm). Esto ahorra espacio de board en el sistema para un diseño industrial más delgado y pequeño, posibilitando atractivos factores de formato de equipos tablet y netbook sin ventilador. Tecnología Intel SpeedStep mejorada Varios puntos de voltaje y frecuencia de funcionamiento ofrecen un rendimiento óptimo con el mínimo consumo de energía. De esta manera, el rendimiento se ajusta más adecuadamente a las demandas de las aplicaciones. Baja potencia de diseño térmico (TDP) Una TDP baja (5.5 w) posibilita equipos tablet más delgados, livianos y portátiles, sin ventilador, al reducir los requisitos de enfriamiento. Página 9

235 Familia de Microcontroladores Intel Grupo 11 Sistemas Empotrados y de Tiempo Real Título de Grado en Ingeniería Informática de Sistemas Función mejorada de búsqueda previa de datos y administración de acceso al registro Anticipa los datos que el procesador necesitará y los almacena en la caché L2 del procesador, lo que incrementa el rendimiento ya que el procesador no tiene que esperar mucho tiempo por los datos. Controlador de memoria y gráficos integrados El acelerador de medios gráficos Intel 600 integrado, combinado con el controlador de memoria integrado, ofrece un mejor rendimiento y más capacidad de respuesta. Gráficos y medios enriquecidos El decodificador acelerado por hardware integrado permite una reproducción de video HD (hasta 1080p) fluida y una transmisión a una fracción del consumo de energía.3 Compatibilidad con los sistemas operativos Windows*, MeeGo* y Android* Posibilidad de elegir el sistema operativo para su equipo tablet o netbook sin ventilador. Consumo de energía promedio más bajo Permite que los consumidores permanezcan en movimiento durante períodos de tiempo más prolongados. Especificaciones de fabricante Essentials Status Launched Launch Date Q1'10 Processor Number N450 # of Cores 1 # of Threads 2 Clock Speed 1.66 GHz L2 Cache 512 KB Bus/Core Ratio 10 DMI 2.5 GT/s Instruction Set 64-bit Instruction Set Extensions SSE2, SSE3, SSSE3 Embedded Options Available Yes Lithography 45 nm Max TDP 5.5 W VID Voltage Range 0.800V-1.175V Recommended Customer Price N/A Memory Specifications Max Memory Size (dependent on memory type) 2 GB Memory Types DDR2-667 # of Memory Channels 1 Graphics Specifications Integrated Graphics Yes Package Specifications T JUNCTION 100 C Package Size 22mm x 22mm Processing Die Size 66 mm 2 # of Processing Die Transistors 123 million Sockets Supported FCBGA559 Página 10

236 Familia de Microcontroladores Intel Grupo 11 Sistemas Empotrados y de Tiempo Real Título de Grado en Ingeniería Informática de Sistemas MAYO Modelo para Smartphones y tablets. Intel Atom Z670 En mayo de 2010, nos presenta intel el Atom Z670, la nueva generación de chips móviles x86 bajo plataforma Oak Trail con el objetivo y difícil tarea de luchar contra la arquitectura RISC de ARM en Tablet que actualmente monopoliza el sector. Técnicamente, el Atom Z670 es un SoC ( sistema en un solo chip ) compuesto de una CPU Lincroft con un núcleo de procesamiento a 1,5 GHz y el chipset Whitney Point (SM35 Express). Dispone de 512 Kbytes de caché de segundo nivel y una gráfica GMA 600 integrada con frecuencia de 400 MHz y soporte para OpenGL ES 2.0, OpenGL 2.1 y OpenVG 1.1. Añade una controladora de memoria en la die LPDDR1/DDR2, es capaz de decodificar contenido en alta definición 1080p con salida HDMI y acelerar por hardware formatos como MPEG-2, VC-1 y vídeo AVC. Su consumo TDP es de 3 watios, inferior a los anteriores Atom y con adaptación específica al diseño de refrigeración pasiva de dispositivos como Tablet. Encapsulado de CPU de formato pequeño El nuevo encapsulado Micro-Flip Chip sin plomo y sin halógeno es un 70% más pequeño (22 x 22 mm) que en la CPU de los equipos de desktop (37,5 x 37,5 mm), por lo que se ahorra espacio en la board del sistema gracias a un diseño industrial más delgado y más reducido que permite crear equipos de desktop básicos de formatos pequeños. Integración eficiente El nuevo procesador Intel Atom integra el controlador de memoria, gráficos y visualización con el procesador. Esta integración da lugar a un ahorro en el costo de materiales en la plataforma, un mejor rendimiento y una reducción del espacio del encapsulado y el consumo de energía. Baja potencia de diseño térmico La baja potencia de diseño térmico (3 w) permite desarrollar dispositivos de desktop más pequeños y elegantes ya que son menores las necesidades de enfriamiento. Función mejorada de búsqueda previa de datos y administración de acceso al registro Anticipa los datos que el procesador necesitará y los almacena en la caché L2 del procesador, lo que incrementa el rendimiento ya que el procesador no tiene que esperar mucho tiempo por los datos. Página 11

237 Familia de Microcontroladores Intel Grupo 11 Sistemas Empotrados y de Tiempo Real Título de Grado en Ingeniería Informática de Sistemas Caché Intel inteligente avanzada El diseño de la caché y del bus asegura la distribución eficaz de los datos, lo que aumenta el rendimiento y la capacidad de respuesta, y reduce el consumo de energía. Núcleo de gráficos DX9* integrado El acelerador Intel 3150 para medios gráficos ofrece un rendimiento que permite disfrutar de excelentes imágenes tridimensionales. Sonido Intel de alta definición 5.1 El sonido integrado hace posible el audio de centro de entretenimiento doméstico de alta calidad y ofrece funciones avanzadas como los flujos múltiples de sonido y la reutilización de conectores. Interfaz de PCI Express* x1 Ofrece hasta 3,5 veces el ancho de banda por encima de la arquitectura PCI tradicional. Es compatible con la interfaz serie LPC, ExpressCard y minitarjetas, y ofrece un rápido acceso a los dispositivos periféricos y redes. Especificaciones del fabricante Essentials Status Launched Launch Date Q2'11 Processor Number Z670 # of Cores 1 # of Threads 2 Clock Speed 1.5 GHz Instruction Set 32-bit Instruction Set Extensions SSE2, SSE3, SSSE3 Embedded Options Available Yes Supplemental SKU No Lithography 45 nm Max TDP 3 W VID Voltage Range V Recommended Customer Price N/A Memory Specifications Max Memory Size (dependent on memory type) 2 GB Memory Types DDR2-800 # of Memory Channels 1 ECC Memory Supported No Graphics Specifications Integrated Graphics Yes Graphics Base Frequency 400 MHz Graphics Output LVDS Expansion Options PCI Support No Package Specifications Página 12

238 Familia de Microcontroladores Intel Grupo 11 Sistemas Empotrados y de Tiempo Real Título de Grado en Ingeniería Informática de Sistemas T JUNCTION 90 Package Size 13.8mmx13.8mm Sockets Supported T-PBGA518 Low Halogen Options Available See MDDS Arquitectura ARM. Principal competidora en los nuevos mercados de dispositivos móviles. Los procesadores ARM representan hoy la mayoría absoluta en equipamientos portátiles. iphone, Palm Pre, Calculadoras, Smartphones e incluso algunas laptops utilizan esa tecnología para las operaciones de procesamiento INTEL utiliza una arquitectura CISC, con soporte para instrucciones complejas, simultaneas y de ejecución más lenta, pero que resultan en códigos menores, por la simplificación de la estructura de programación recurrente y menos entradas y salidas (disminuyendo así la necesidad de usar más memoria). Los procesadores ARM, utilizan, por otro lado, una arquitectura RISC, que se caracateriza por la simplificación de las instrucciones, con la intención de alcanzar la máxima eficiencia por ciclo (pudiendo realizar tareas menores con procesos más cortos) y una mayor organización de las operaciones dentro del núcleo de procesamiento. Por eso, la industria en la mayoría de las veces prefiere privarse de la potencia y rendimiento en busca de portabilidad y de una mayor eficiencia de los dispositivos, características que la arquitectura ARM es capaz de proporcionar con mejores resultados. Es por eso, que recursos como multitarea, demoraron un poco más en aparecer en los smartphones, así como la evolución gráfica de los juegos también es inferior a los que los desktops y notebooks son capaces de exhibir. El futuro de Intel en el mercado de tablets y smartphones. Intel ya ha apostado por el Atom Z670 para terminales móviles, pero parece que éste modelo va a quedarse como una mera transición. Intel Medfield (plataforma móvil) parece ser un futuro mucho más prometedor, digno competidor para la actual competencia en el mundo de los tablets y los teléfonos móviles avanzados. De momento no existe ningún dispositivo de esas características en el mercado, aunque ya se han probado varios prototipos en el MIT de Massachusetts y los resultados fueron bastante esperanzadores. Medfield quiere acercarse más al estatus de ARM consiguiendo bajos consumos energéticos pero manteniendo un rendimiento aceptable. Según Intel, Medfield seguirá perteneciendo al ecosistema Atom, con lo que también supondremos que seguirán siendo procesadores x86 y no ARM, a pesar de los muchos rumores que sitúan un nuevo producto de Intel bajo esta última arquitectura. De esta forma, Intel Página 13

239 Familia de Microcontroladores Intel Sistemas Empotrados y de Tiempo Real Grupo 11 Título de Grado en Ingeniería Informática de Sistemas conseguiría dar sus primeros pasos en un mercado del que siempre ha quedado excluido. Intel y Google han anunciado la optimización de Android para arquitectura Intel destinada a smartphones y tablets. Según Intel: Mediante la optimización de la plataforma Android para la arquitectura Intel, traemos una nueva capacidad de gran alcance en el mercado que acelerará la elección y adopción de la industria, además de traer nuevos productos al mercado que aprovechan el potencial combinado de la tecnología de Intel y la plataforma Android Para Google: La combinación de Android con el bajo consumo inteligente de Intel se abre la oportunidad aún más de la innovación y elección. Esta colaboración impulsará el ecosistema Android mucho más. También ha establecido muchas líneas de cooperación con fabricantes de dispositivos móviles del sureste asiático, de las cuales dependerá el futuro inmediato de Intel en este mercado. Los Medfield tienen las siguientes características: Tecnología SoC de 32nm. SoC significa System on Chip, lo cual quiere decir que todos los componentes del sistema (procesador, chipset, bus, memoria, GPU) están dentro de un solo chip, con una distancia entre transistores de 32nm, lo cual permite transiciones más rápidas de las puertas lógicas (del orden de 3GHz) con un consumo muy reducido (0,65-3W). Memoria LPDDR2, memoria DDR móbile de segunda generación con velocidades de entre 100 a 533MHz. GPU (procesador gráfico) de alta definición integrado en el chip. Página 14

240 Familia de Microcontroladores Intel Sistemas Empotrados y de Tiempo Real Grupo 11 Título de Grado en Ingeniería Informática de Sistemas ARM, Principal rival en el mercado de las tablets y smartphones, Desconfía de la capacidad de intel Tras el anuncio de Intel de que va a apostar por la fabricación de chips para móviles y tabletas, el CEO de ARM, Tudor Browm ha asegurado que la marca de Santa Clara no llegará a ningún sitio en ese apartado. Para Brown, en Intel tienen mucha confianza en su estrategia en el mercado móvil pero al final sólo habrá falsas esperanzas y acciones de markerting baldías. Es más, el dirigente cree que a Intel no se la puede tomar en serio y ha explicado que aunque la compañía lance algún chip para dispositivos móviles no será una solución tan barata como la que ofrece ARM. Por otro lado, Brown habló sobre los ingresos por las licencias de uso de sus chips y declaró que después de un excepcional año 2011, en 2012 esperan que el crecimiento sea menor. Eso sí, el directivo desveló que en la industria de semiconductores se prevén crecimientos mayores en 2012 a los registrados en Crisis en la alianza Wintel La alianza Windows Intel ha dominado el Mercado de los PC desde hace décadas. Siendo AMD el único competidor que ha podido hacer sombra a Intel. Ha sido la más lucrativa de la industria de la tecnología. El matrimonio entre los chips de Intel y Windows (que se conoció como la alianza Wintel ) comenzó a principios de 1980, lo que definió el estándar para que los desarrolladores de software crearan aplicaciones. Sin embargo, ambas compañías han tenido dificultades para sacar provecho de los sectores del mercado en crecimiento. Sin embargo, esta relación idílica está pasando por uno de sus peores momentos, ya que Windows quiere entrar con fuerza en el mercado de las Tablets, anunciando en Enero de 2011 que su nueva versión de Windows (Windows 8) dará soporte a procesadores ARM. Esta estrategia de Microsoft no sólo afectará negativamente a los planes de Intel de entrar en el mercado de los dispositivos móviles, sino que permitirá a ARM iniciar su carrera en PCs, portátiles y netbooks. Incluso se habla de futuros proyectos de ARM para diseñar procesadores para servidores. Página 15

241 Familia de Microcontroladores Intel Sistemas Empotrados y de Tiempo Real Grupo 11 Título de Grado en Ingeniería Informática de Sistemas Futuros Proyectos Intel ha decidido apostar fuerte por el mercado móvil, lo cual resulta evidente en su línea de desarrollo Ivy Bridge, la cual consiste en una reducción drástica en la distancia entre transistores, de 32nm a 22, consiguiéndose mejor rendimiento (se espera un aumento del 20%) con una drástica disminución de potencia y, por tanto, de las necesidades de refrigeración. Se quiere también avanzar en la tecnología SoC, integrando en un único chip todos los componentes de un sistema, incluyendo las tecnologías más punteras como PCI Express 3.0, USB 3.0 o DDR3L de bajo voltaje. A continuación se detallan las principales características de estos nuevos procesadores en desarrollo. Tecnología de 22nm Tecnología Tri-Gate Transistor (Más del 50% de reducción de consumo con el mismo rendimiento que modelos anteriores) Soporte para PCI Express 3.0 USB 3.0 integrado Teconología DDR3L de bajo voltaje 20% de incremento en el rendimiento del procesador. 30% de incremento en la GPU integrada. Intel HD Graphics Comparativa de los futuros modelos de esta línea de procesadores: Página 16

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 Sistemas Embebidos Act 11: Reconocimiento Unidad 3 LECTURA 1

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 Sistemas Embebidos Act 11: Reconocimiento Unidad 3 LECTURA 1 LECTURA 1 Qué diferencias hay entre aplicaciones para PC convencional o para sistemas embebidos? No es lo mismo desarrollar aplicaciones para un PC convencional que para un sistema embebido. El desarrollo

Más detalles

Programación Concurrente

Programación Concurrente Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 1. Introducción al estándar POSIX Tema 3. Gestión de Threads Tema 4. Gestión del Tiempo Tema 5. Planificación

Más detalles

Contenidos. Sistemas operativos Tema 3: Estructura del sistema operativo. Componentes típicos de un SO. Gestión de procesos.

Contenidos. Sistemas operativos Tema 3: Estructura del sistema operativo. Componentes típicos de un SO. Gestión de procesos. Contenidos Sistemas operativos Tema 3: Estructura del sistema operativo Componentes típicos del SO Servicios del SO Llamadas al sistema Programas del sistema El núcleo o kernel Modelos de diseño del SO

Más detalles

Procesos. Bibliografía. Threads y procesos. Definiciones

Procesos. Bibliografía. Threads y procesos. Definiciones Procesos Prof. Mariela Curiel Bibliografía A. Tanembaum & M. Van Steen. Sistemas Distribuidos. Principios y Paradigmas. 2da. Edición. Smith & Nair. The Architecture of Virtual Machines. IEEE Computer.

Más detalles

Unidad 1: Conceptos generales de Sistemas Operativos.

Unidad 1: Conceptos generales de Sistemas Operativos. Unidad 1: Conceptos generales de Sistemas Operativos. Tema 3: Estructura del sistema operativo. 3.1 Componentes del sistema. 3.2 Servicios del sistema operativo. 3.3 Llamadas al sistema. 3.4 Programas

Más detalles

Departamento de Sistemas Informáticos. Linux como Sistema Operativo de Tiempo-Real

Departamento de Sistemas Informáticos. Linux como Sistema Operativo de Tiempo-Real Linux como Sistema Operativo de Tiempo-Real 1 Historia de Linux UNIX fue desarrollado en los Laboratorios Bell al rededor del año 1970. Los Sistemas Operativos UNIX y similares, dominaron el mercado de

Más detalles

TEMA 8. SISTEMAS OPERATIVOS PARA TIEMPO REAL.

TEMA 8. SISTEMAS OPERATIVOS PARA TIEMPO REAL. TEMA 8. SISTEMAS OPERATIVOS PARA TIEMPO REAL. 8.1. Introducción. 8.2. Problemas de los sistemas operativos convencionales. 8.3. Sistemas operativos para tiempo real 8.3.2. KU-Real-Time Linux (KURT). 8.3.3.

Más detalles

Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011

Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011 Módulo 1. Fundamentos de Computadores Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011 1 CONTENIDO Tema 1. Introducción

Más detalles

Unidad 1: Conceptos generales de Sistemas Operativos.

Unidad 1: Conceptos generales de Sistemas Operativos. Unidad 1: Conceptos generales de Sistemas Operativos. Tema 1: Introducción: 1.1 Introducción: Qué es un sistema operativo?. 1.2 Conceptos clave de un sistema operativo. 1.3 El sistema operativo como administrador

Más detalles

Enseñanza de programación multihilo y controladores de dispositivo en entornos Windows para alumnos de electrónica

Enseñanza de programación multihilo y controladores de dispositivo en entornos Windows para alumnos de electrónica Enseñanza de programación multihilo y controladores de dispositivo en entornos Windows para alumnos de electrónica A. Da Silva, V. Hernández y J.F. Martínez Departamento de Ingeniería y Arquitecturas Telemáticas.

Más detalles

Capítulo 5. Sistemas operativos. Autor: Santiago Felici Fundamentos de Telemática (Ingeniería Telemática)

Capítulo 5. Sistemas operativos. Autor: Santiago Felici Fundamentos de Telemática (Ingeniería Telemática) Capítulo 5 Sistemas operativos Autor: Santiago Felici Fundamentos de Telemática (Ingeniería Telemática) 1 Sistemas operativos Definición de Sistema Operativo Partes de un Sistema Operativo Servicios proporcionados:

Más detalles

La Arquitectura de las Máquinas Virtuales.

La Arquitectura de las Máquinas Virtuales. La Arquitectura de las Máquinas Virtuales. La virtualización se ha convertido en una importante herramienta en el diseño de sistemas de computación, las máquinas virtuales (VMs) son usadas en varias subdiciplinas,

Más detalles

MÁSTER ONLINE EN ADMINISTRACIÓN LINUX

MÁSTER ONLINE EN ADMINISTRACIÓN LINUX MÁSTER ONLINE EN ADMINISTRACIÓN LINUX Módulo 1 Hardware & Arquitectura de sistemas - 20 horas Este módulo permite conocer y configurar los elementos básicos del hardware del sistema, como también otros

Más detalles

2. Sistema Operativo Windows

2. Sistema Operativo Windows 2. Sistema Operativo Windows 2.1 Introducción al S.O. Windows NT y Windows 2000 2.2 Subsistema de Archivos 2.3 Subsistema de Procesos 2.4 Gestión de Memoria Dpto. Lenguajes Tema y 2: Sistemas 2. Sistema

Más detalles

Tema 2: Implementación del núcleo de un Sistema Operativo

Tema 2: Implementación del núcleo de un Sistema Operativo Tema 2: Implementación del núcleo de un Sistema Operativo 1. Sistema Operativo Unix 2. Sistema Operativo Windows (a partir de NT) Dpto. Lenguajes y Sistemas Informáticos. Universidad de Granada 1 1. Sistema

Más detalles

Fundamentos de Sistemas Operativos

Fundamentos de Sistemas Operativos Fundamentos de Sistemas Operativos Sistemas Informáticos Fede Pérez Índice TEMA Fundamentos de Sistemas Operativos 1. - Introducción 2. - El Sistema Operativo como parte de un Sistema de Computación 2.1

Más detalles

INDICE. Prefacio Parte 1: sistemas operativos tradicionales

INDICE. Prefacio Parte 1: sistemas operativos tradicionales INDICE Prefacio Parte 1: sistemas operativos tradicionales 1 1 Introducción 1.1 Qué es un sistema operativo? 1.1.1 El sistema operativo como una maquina extendida 3 1.1.2 El sistema operativo como controlador

Más detalles

Unidad 2: Gestión de Procesos

Unidad 2: Gestión de Procesos Unidad 2: Gestión de Procesos Tema 4, Procesos: 4.1 El concepto de proceso. 4.2 Planificación de procesos. 4.3 Procesos cooperativos. 4.4 Hilos (threads). Informática (Segovia) 1 4.1 El concepto de proceso.

Más detalles

Planos de ejecución en Velneo V7

Planos de ejecución en Velneo V7 Planos de ejecución en Velneo V7 Por Jesús Arboleya Introducción 3 Arquitectura Cliente/Servidor 4 1. Objetos que siempre se ejecutan en el servidor 5 2. Objetos que siempre se ejecutan en el cliente 6

Más detalles

Unidad 2: Gestión de Memoria

Unidad 2: Gestión de Memoria Unidad 2: Gestión de Memoria Tema 3, Gestión de Memoria: 3.1 Definiciones y técnicas básicas. 3.2 Gestión de memoria contigua: Partición, fragmentación, algoritmos de ubicación... 3.3 Paginación: Estructura

Más detalles

TEMA 3: INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.

TEMA 3: INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS. TEMA 3: INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS. 1. DEFINICIÓN DE SISTEMA OPERATIVO.... 2 2. FUNCIONES DE LOS SISTEMAS OPERATIVOS.... 2 3. CLASIFICACIÓN DE LOS SISTEMAS OPERATIVOS.... 4 4. MODOS DE EXPLOTACIÓN

Más detalles

Sistemas Operativos de red (NOS).

Sistemas Operativos de red (NOS). Sistemas Operativos 4 tareas principales: Proporcionar interfaz: de comando o gráfica. Administrar los dispositivos de hardware en la computadora. Administrar y mantener los sistemas de archivo de disco.

Más detalles

Sistema Operativo MAC. Francisco Jesús Delgado Almirón fjdelg@correo.ugr.es Diseño de Sistemas Operativos 5º Ingeniería Informática

Sistema Operativo MAC. Francisco Jesús Delgado Almirón fjdelg@correo.ugr.es Diseño de Sistemas Operativos 5º Ingeniería Informática Sistema Operativo MAC Francisco Jesús Delgado Almirón fjdelg@correo.ugr.es Diseño de Sistemas Operativos 5º Ingeniería Informática Introducción Mac OS (Macintosh Operating Systems) es un sistema operativo

Más detalles

Tema 2: EL MODELO CLIENTE/SERVIDOR

Tema 2: EL MODELO CLIENTE/SERVIDOR Tema 2: EL MODELO CLIENTE/SERVIDOR E. U. Informática en Segovia Departamento de Informática Universidad de Valladolid Definición de sistemas cliente/servidor (1) Clientes y servidores: entidades lógicas

Más detalles

Sistemas Operativos - Funciones del sistema operativo» Cargar y ejecutar programas (procesos)» Facilitar funciones de E/S» Controlar y distribuir el acceso a los recursos» Controlar errores Componentes

Más detalles

pdi-tools: Mecanismo de interposición dinámica de código

pdi-tools: Mecanismo de interposición dinámica de código pdi-tools: Mecanismo de interposición dinámica de código Descripción del proyecto Gerardo García Peña Jesús Labarta Judit Giménez Copyright 2004, 2005 Gerardo García Peña pdi-tools: Mecanismo de interposición

Más detalles

Sistemas Operativos de Red

Sistemas Operativos de Red Sistemas Operativos de Red Como ya se sabe las computadoras están compuestas físicamente por diversos componentes que les permiten interactuar mas fácilmente con sus operarios y hasta comunicarse con otras

Más detalles

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN PROFESOR: MSC. P. Norma Maya Pérez SISTEMAS OPERATIVOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN PROFESOR: MSC. P. Norma Maya Pérez SISTEMAS OPERATIVOS TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN PROFESOR: MSC. P. Norma Maya Pérez SISTEMAS OPERATIVOS I. Fundamentos del sistema operativo. OBJETIVO: El alumno seleccionará un sistema operativo de acuerdo

Más detalles

Denominamos Ordenador o Computadora, a una máquina electrónica que es capaz de dar un tratamiento automatizado a la información.

Denominamos Ordenador o Computadora, a una máquina electrónica que es capaz de dar un tratamiento automatizado a la información. INTRODUCCIÓN AL ORDENADOR Denominamos Ordenador o Computadora, a una máquina electrónica que es capaz de dar un tratamiento automatizado a la información. Se compone de dos elementos fundamentales que

Más detalles

Sistemas operativos: una visión aplicada. Capítulo 11 Estudio de casos: Linux

Sistemas operativos: una visión aplicada. Capítulo 11 Estudio de casos: Linux Sistemas operativos: una visión aplicada Capítulo 11 Estudio de casos: Linux Contenido Historia de Linux Características y estructura de Linux Gestión de procesos Gestión de memoria Entrada/salida Sistema

Más detalles

Módulos: Módulo 1. Hardware & Arquitectura de sistemas - 20 Horas

Módulos: Módulo 1. Hardware & Arquitectura de sistemas - 20 Horas Módulos: Módulo 1 Hardware & Arquitectura de sistemas - 20 Horas Este módulo permite conocer y configurar los elementos básicos del hardware del sistema, como también otros componentes adicionales como

Más detalles

TEMA 1: VISIÓN GENERAL DE LOS SISTEMAS OPERATIVOS

TEMA 1: VISIÓN GENERAL DE LOS SISTEMAS OPERATIVOS TEMA 1: VISIÓN GENERAL DE LOS SISTEMAS OPERATIVOS 1. Concepto de Sistema Operativo. Funciones Un sistema operativo (S.O.) es un programa o conjunto de programas de control que tiene por objeto facilitar

Más detalles

Conceptos Básicos de Software. Clase III

Conceptos Básicos de Software. Clase III Clase III Definición de Sistema Operativo El sistema operativo es el programa (o software) más importante de una computadora. Para que funcionen los otros programas, cada computadora de uso general debe

Más detalles

LINUX EN SISTEMAS EMPOTRADOS

LINUX EN SISTEMAS EMPOTRADOS El ritmo de cambio tecnológico es tal, que cualquier diseño que comience hoy pueda estar obsoleto antes de llegar al mercado, por lo que debes usar tecnología ya desarrollada en vez de reinventar la rueda

Más detalles

Desarrollo de Aplicaciones Móviles. Java

Desarrollo de Aplicaciones Móviles. Java Java Java es la base para prácticamente todos los tipos de aplicaciones de red, además del estándar global para desarrollar y distribuir aplicaciones móviles y embebidas, juegos, contenido basado en web

Más detalles

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática Tema 1 Introducción. Arquitectura básica y Sistemas Operativos Fundamentos de Informática Índice Descripción de un ordenador Concepto básico de Sistema Operativo Codificación de la información 2 1 Descripción

Más detalles

ESTUDIO DE CASOS: LINUX

ESTUDIO DE CASOS: LINUX ESTUDIO DE CASOS: LINUX En este capítulo se estudia el sistema operativo Linux. Se trata de un sistema operativo de libre distribución que proporciona una interfaz POSIX. Actualmente Linux es ampliamente

Más detalles

TEMA 3: SISTEMAS OPERATIVOS.

TEMA 3: SISTEMAS OPERATIVOS. TEMA 3: SISTEMAS OPERATIVOS. 1. QUÉ ES UN SISTEMA OPERATIVO? 2. SISTEMAS OPERATIVOS GRÁFICOS. 3. SISTEMAS OPERATIVOS MÓVILES. 4. EL ENTORNO DE WINDOWS PARA PC. 5. LA APLICACIÓN DEL TEMA. 6. ACTIVIDADES.

Más detalles

Tema 13. Metodologías en el desarrollo de Sistemas de Software. Prof. Oscar Adolfo Vallejos

Tema 13. Metodologías en el desarrollo de Sistemas de Software. Prof. Oscar Adolfo Vallejos Tema 13 Metodologías en el desarrollo de Sistemas de Software Prof. Oscar Adolfo Vallejos Desarrollo de Sistemas de Software Objetivo Conceptos en el contexto más amplio de Software e Ingeniería de Software

Más detalles

TEMA 37: Arquitecturas Cliente / Servidor. Tipos de cliente. Tipos de Servidor. Clasificación del software.

TEMA 37: Arquitecturas Cliente / Servidor. Tipos de cliente. Tipos de Servidor. Clasificación del software. . TEMA 37: Arquitecturas Cliente / Servidor. Tipos de cliente. Tipos de Servidor. Clasificación del software. Índice 1 INTRODUCCIÓN 2 2 CARACTERÍSTICAS 2 2.1 Características del cliente...2 2.2 Características

Más detalles

Administración de memoria: Funciones y operaciones

Administración de memoria: Funciones y operaciones Administración de memoria: Funciones y operaciones Facultad de Ingeniería, UNAM Instituto de Investigaciones Económicas, UNAM Índice Introducción 1 Introducción 2 3 4 5 El administrador de memoria Es otra

Más detalles

Concepto de Procesamiento Distribuido y Centralizado

Concepto de Procesamiento Distribuido y Centralizado Concepto de Procesamiento Distribuido y Centralizado Procesamiento Centralizado: En la década de los años 50 s las computadoras eran máquinas del tamaño de todo un cuarto con las siguientes características:

Más detalles

SISTEMAS OPERATIVOS EN MICROCONTROLADORES

SISTEMAS OPERATIVOS EN MICROCONTROLADORES DEPECA - UAH SISTEMAS OPERATIVOS EN MICROCONTROLADORES 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

Más detalles

Windows NT. Desdoble del sistema operativo Windows: Sucesor de Windows NT 3.51 Hereda el interfaz de usuario (GUI) de Win95 Versiones:

Windows NT. Desdoble del sistema operativo Windows: Sucesor de Windows NT 3.51 Hereda el interfaz de usuario (GUI) de Win95 Versiones: Windows NT Desdoble del sistema operativo Windows: Windows 3.1 -> usuarios particulares (basado en MS-DOS) -> W95 Windows NT 3.1 -> profesionales y empresas (nuevo) -> NT4 Windows NT 4 Sucesor de Windows

Más detalles

SENA CEET, Distrito Capital ADSI Instructor: Ing. Espec. Javier V.aquiro

SENA CEET, Distrito Capital ADSI Instructor: Ing. Espec. Javier V.aquiro SENA CEET, Distrito Capital ADSI Instructor: Ing. Espec. Javier V.aquiro Que hace un Sistema Operativo? El SO viste a la máquina desnuda * 4º INFORMÁTICA * La máquina desnuda es el ordenador sin S.O Definición

Más detalles

Tipos de comunicación La comunicación puede ser:

Tipos de comunicación La comunicación puede ser: Unidad 3. Procesos concurrentes 3.3 Semáforos (informática) Un semáforo es una variable especial (o tipo abstracto de datos) que constituye el método clásico para restringir o permitir el acceso a recursos

Más detalles

Gestión de Entrada/Salida

Gestión de Entrada/Salida Gestión de Entrada/Salida Transparencias basadas en el libro de referencia: Sistemas operativos. Una visión aplicada. J. Carretero, F.García, P. de Miguel, F. Pérez. McGraw Hill 2001 Curso 2005-2006 Contenido

Más detalles

Software Libre / Código Abierto Programa de contenidos

Software Libre / Código Abierto Programa de contenidos Software Libre / Código Abierto Programa de contenidos Resumen Se presenta a continuación la organización de un curso de cincuenta horas cuyo fin es dar a conocer la base ideológica que sostiene a los

Más detalles

Computación Tercer Año

Computación Tercer Año Colegio Bosque Del Plata Computación Tercer Año UNIDAD 3 Sistemas Operativos E-mail: garcia.fernando.j@gmail.com Profesor: Fernando J. Garcia Ingeniero en Sistemas de Información Sistemas Operativos Generaciones

Más detalles

Introducción a los Sistemas Operativos

Introducción a los Sistemas Operativos Introducción a los Sistemas Operativos 2º Ingeniero de Telecomunicación (Sonido e Imagen) Departamento de Ingeniería Telemática Universidad Carlos III de Madrid 2 Qué vamos a ver hoy? Qué es un sistema

Más detalles

Diseño del Sistema de Información

Diseño del Sistema de Información Diseño del Sistema de Información ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 2 ACTIVIDAD DSI 1: DEFINICIÓN DE LA ARQUITECTURA DEL SISTEMA... 7 Tarea DSI 1.1: Definición de Niveles de Arquitectura... 9 Tarea DSI

Más detalles

Módulo 2 Comunicación

Módulo 2 Comunicación Sistemas Distribuidos Módulo 2 Comunicación Facultad de Ingeniería Departamento de Informática Universidad Nacional de la Patagonia San Juan Bosco Comunicación en Sistemas Distribuidos Modelos de Comunicaciones

Más detalles

Maquinas Virtuales. Prof.: Huerta Molina Samuel. Cuellar Sánchez Jesús. Pinto López Luis Tonatiuh. Hecho por Jesús y Luis. 1

Maquinas Virtuales. Prof.: Huerta Molina Samuel. Cuellar Sánchez Jesús. Pinto López Luis Tonatiuh. Hecho por Jesús y Luis. 1 ESTRUCTURA Y PROGRAMACIÓN DE COMPUTADORAS. Grupo: 08. Prof.: Huerta Molina Samuel. Maquinas Virtuales Cuellar Sánchez Jesús. Pinto López Luis Tonatiuh. Hecho por Jesús y Luis. 1 Conceptos Básicos Sobre

Más detalles

Diseño del Sistema de Información

Diseño del Sistema de Información Diseño del Sistema de Información ÍNDICE DESCRIPCIÓN Y OBJETIVOS...2 ACTIVIDAD DSI 1: DEFINICIÓN DE LA ARQUITECTURA DEL SISTEMA...7 Tarea DSI 1.1: Definición de Niveles de Arquitectura...9 Tarea DSI 1.2:

Más detalles

Tema 4. Gestión Avanzada de Memoria

Tema 4. Gestión Avanzada de Memoria Departamento de Ingeniería y Tecnología de Computadores Universidad de Murcia Índice 1 El sistema de gestión de memoria 2 Generación de un ejecutable Bibliotecas Formato del ejecutable Mapa de memoria

Más detalles

Unidad I Fundamentos de Sistemas Distribuidos. M.C. Juan Carlos Olivares Rojas

Unidad I Fundamentos de Sistemas Distribuidos. M.C. Juan Carlos Olivares Rojas Unidad I Fundamentos de Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas Temario 1.1. Características de un sistema distribuido 1.2. Objetivos de los sistemas distribuidos 1.3. Ventajas y desventajas

Más detalles

Aplicaciones Informáticas

Aplicaciones Informáticas Aplicaciones Informáticas Profesor: Eduardo Zúñiga Sistema de aprobación: 2 parciales y recuperatorio Promoción: Sumar 14 o más puntos entre los dos parciales y no sacar menos de 6 en ninguno de los dos

Más detalles

Sistemas Operativos. Pedro Cabalar TEMA III. PROCESOS. Depto. de Computación Universidade da Coruña

Sistemas Operativos. Pedro Cabalar TEMA III. PROCESOS. Depto. de Computación Universidade da Coruña Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS P. Cabalar Sistemas( Operativos Depto. de Computación Universidade Tema da Coruña III. Procesos ) 1 / 41

Más detalles

Unidad 1: Conceptos generales de Sistemas Operativos.

Unidad 1: Conceptos generales de Sistemas Operativos. Unidad 1: Conceptos generales de Sistemas Operativos. Tema 2: Estructura de los sistemas de computación. 2.1 Funcionamiento de los sistemas de computación. 2.2 Ejecución de instrucciones e interrupciones

Más detalles

UNIVERSIDAD DE LOS ANDES NÚCLEO UNIVERSITARIO RAFAEL RANGEL

UNIVERSIDAD DE LOS ANDES NÚCLEO UNIVERSITARIO RAFAEL RANGEL UNIVERSIDAD DE LOS ANDES NÚCLEO UNIVERSITARIO RAFAEL RANGEL CARRERAS: Comunicación Social - Contaduría Publica Administración -Educación MATERIA: Int. a la Computación - Computación I-Introducción a la

Más detalles

LINUX. GNU/Linux. Cuatro características muy peculiares lo diferencian del resto de los sistemas que podemos encontrar en el mercado:

LINUX. GNU/Linux. Cuatro características muy peculiares lo diferencian del resto de los sistemas que podemos encontrar en el mercado: LINUX GNU/Linux GNU/Linux es un sistema operativo de libre distribución, basado en el kernel Linux creado por Linus Torvalds y los desarrolladores del grupo GNU (Fundación para el software libre encabezada

Más detalles

Programación Concurrente

Programación Concurrente Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 2. Sistema Operativo MaRTE OS Tema 3. Gestión de Threads Tema 4. Gestión del Tiempo Tema 5. Planificación

Más detalles

Scheduling. Ricardo Corin

Scheduling. Ricardo Corin Scheduling Ricardo Corin Introducción Múltiples procesos en estado READY compiten por tiempo de CPUs Si Ready > CPU, no podemos ejecutar todos simultáneamente El planificador o scheduler se ocupa de seleccionar

Más detalles

Procesos. Planificación del Procesador.

Procesos. Planificación del Procesador. Procesos. Planificación del Procesador. Sistemas Operativos. Tema 2. Concepto de Proceso. Una definición sencilla: Programa en ejecución. Entidad pasiva Programa RECURSOS CPU Memoria Ficheros Dispositivos

Más detalles

Prof. Ing. Miguel Angel Aguilar Ulloa 2009-2010

Prof. Ing. Miguel Angel Aguilar Ulloa 2009-2010 LECCIÓN 3 ARQUITECTURA DE SOFTWARE DE SISTEMAS EMPOTRADOS Prof. Ing. Miguel Angel Aguilar Ulloa 2009-2010 Copyright 2009. Ing. Miguel Angel Aguilar Ulloa. Última actualización: 15/02/2010. Usted es libre

Más detalles

Sistemas Operativos Tema 1: conceptos generales. 1998-2008 José Miguel Santos Alexis Quesada Francisco Santana

Sistemas Operativos Tema 1: conceptos generales. 1998-2008 José Miguel Santos Alexis Quesada Francisco Santana Sistemas Operativos Tema 1: conceptos generales 1998-2008 José Miguel Santos Alexis Quesada Francisco Santana 1 Contenidos Qué es un SO? Evolución histórica de los SO Tipos de sistemas informáticos 2 Elementos

Más detalles

Memoria central del Ordenador

Memoria central del Ordenador Memoria central del Ordenador Víctor González Núñez Nuria Cancho Díaz Josue Prieto Lentijo Grupo 7 Fundamentos de Informática II INTRODUCCIÓN: Con esta breve memoria expondremos las principales características

Más detalles

Chipsets página 1 CONJUNTO DE CHIPS PARA SOCKET 7

Chipsets página 1 CONJUNTO DE CHIPS PARA SOCKET 7 Chipsets página 1 El conjunto de chips, o chipset, es un elemento formado por un determinado número de circuitos integrados en el que se han incluido la mayoría de los componentes que dotan a un ordenador

Más detalles

INFORME PREVIO DE EVALUACIÓN DE SOFTWARE N EI-007-2007

INFORME PREVIO DE EVALUACIÓN DE SOFTWARE N EI-007-2007 INFORME PREVIO DE EVALUACIÓN DE SOFTWARE N EI-007-2007 1. NOMBRE DEL ÁREA División de Sistemas de Información 2. RESPONSABLE DE LA EVALUACIÓN Luis Antonio Manya Aqquehua 3. CARGO Jefe de Sistemas de Información

Más detalles

Introducción En este apartado se va a proporcionar una apreciación global del SRS.

Introducción En este apartado se va a proporcionar una apreciación global del SRS. INTRODUCCIÓN Se pretende desarrollar una aplicación web para la gestión de un restaurante que ofrece espectáculos en fechas determinadas con el fin de poner en práctica los principios de planificación

Más detalles

Experiencia docente en el desarrollo de aplicaciones empotradas

Experiencia docente en el desarrollo de aplicaciones empotradas Experiencia docente en el desarrollo de aplicaciones empotradas con MarteOS Silvia Terrasa, Patricia Balbastre, Alfons Crespo Dept. de Informática de Sistemes y Computadores Universidad Politécnica de

Más detalles

Rendimiento. Página 50

Rendimiento. Página 50 Rendimiento En general entender el rendimiento de redes es más arte que ciencia. La teoría no ayuda mucho. Fuentes de problemas de rendimiento: Congestión. Desequilibrios entre recursos. Por ejemplo, una

Más detalles

! " # $!% & % '" ()!*++,

!  # $!% & % ' ()!*++, !" # $!%&%'" ()!*++, Qué es Linux? Antecedentes. Licencia. Características. Entorno de Trabajo. Estructura General. Sistema de Ficheros. Tipos. Path. Permisos de Acceso. Distribuciones Comerciales. Elementos

Más detalles

CUALIFICACIÓN PROGRAMACIÓN DE SISTEMAS INFORMÁTICOS PROFESIONAL. Nivel 3. Versión 6. Actualización

CUALIFICACIÓN PROGRAMACIÓN DE SISTEMAS INFORMÁTICOS PROFESIONAL. Nivel 3. Versión 6. Actualización Página 1 de 19 CUALIFICACIÓN PROGRAMACIÓN DE SISTEMAS INFORMÁTICOS PROFESIONAL Familia Profesional Informática y Comunicaciones Nivel 3 Código IFC303_3 Versión 6 Situación Contraste externo Actualización

Más detalles

Análisis de desempeño y modelo de escalabilidad para SGP

Análisis de desempeño y modelo de escalabilidad para SGP Análisis de desempeño y modelo de escalabilidad para SGP Este documento es producto de la experiencia de Analítica en pruebas de stress sobre el software SGP. Estas pruebas se realizaron sobre un proceso

Más detalles

Memoria Virtual. Figura 1: Memoria Virtual

Memoria Virtual. Figura 1: Memoria Virtual 1 Memoria Virtual. Qué podemos hacer si un programa es demasiado grande para caber en la memoria disponible? Una posibilidad es usar superposiciones (overlays), como en MS-DOS: dividimos el programa en

Más detalles

Tema 1: Implementación del sistema de archivos

Tema 1: Implementación del sistema de archivos Tema 1: Implementación del sistema de archivos 1. Introducción 2. Implementación 3. Estructura del almacenamiento secundario Dpto. Tema Lenguajes 1: Implementación y Sistemas del Informáticos. sistema

Más detalles

Centro Universitario de Ciencias Exactas e Ingenierías DIVISION DE ELECTRONICA Y COMPUTACION

Centro Universitario de Ciencias Exactas e Ingenierías DIVISION DE ELECTRONICA Y COMPUTACION SISTEMA DE MONITOREO POR INTERNET CON ENVÍO DE IMÁGENES Ricardo Hernández Durán (Ingeniería en Comunicaciones y Electrónica) Gabriela Ramos Rosas (Licenciatura en Informática) Víctor Jiménez García (Ingeniería

Más detalles

UNIVERSIDAD NACIONAL DE INGENIERÍA

UNIVERSIDAD NACIONAL DE INGENIERÍA UNIVERSIDAD NACIONAL DE INGENIERÍA Facultad de Ingeniería Industrial y de Sistemas Escuela Profesional de Ingeniería de Sistemas SÍLABO CURSO: SISTEMAS OPERATIVOS I. INFORMACIÓN GENERAL CODIGO : ST-324

Más detalles

UNIVERSIDAD DE LOS ANDES FACULTAD DE CIENCIAS ECONOMICAS Y SOCIALES. PROF. ISRAEL J. RAMIREZ israel@ula.ve

UNIVERSIDAD DE LOS ANDES FACULTAD DE CIENCIAS ECONOMICAS Y SOCIALES. PROF. ISRAEL J. RAMIREZ israel@ula.ve UNIVERSIDAD DE LOS ANDES FACULTAD DE CIENCIAS ECONOMICAS Y SOCIALES PROF. ISRAEL J. RAMIREZ israel@ula.ve UNIVERSIDAD DE LOS ANDES FACULTAD DE CIENCIAS ECONOMICAS Y SOCIALES LOS SISTEMAS OPERATIVOS 1.-

Más detalles

1. Introducción 2. Historia 3. Características clave 4. Cuestiones de diseño

1. Introducción 2. Historia 3. Características clave 4. Cuestiones de diseño Tema 1. Introducción a los sistemas distribuidos 1. Introducción 2. Historia 3. Características clave 4. Cuestiones de diseño Tema 1 Introducción a los Sistemas Distribuidos 1 Introducción y objetivos

Más detalles

Tema 1: Introducción a la gestión y planificación de redes

Tema 1: Introducción a la gestión y planificación de redes Tema 1: Introducción a la gestión y planificación de redes 1. Introducción general 2. Objetivos de la gestión de redes 3. Objetivos de la planificación de redes 4. Sistemas de gestión de red Gestión de

Más detalles

Notas técnicas de JAVA Nro. 4 White Paper

Notas técnicas de JAVA Nro. 4 White Paper Tema: Notas técnicas de JAVA Nro. 4 White Paper (Lo nuevo, lo escondido, o simplemente lo de siempre pero bien explicado) JAVA Basics : Entendiendo la Java Virtual Machine (JVM) Java, JVM, objetos, introducción,

Más detalles

GRID COMPUTING MALLA DE ORDENADORES

GRID COMPUTING MALLA DE ORDENADORES GRID COMPUTING MALLA DE ORDENADORES Introducción Concepto Compartir potencia computacional; Aprovechamiento de ciclos de procesamiento; El Grid Computing se enmarca dentro de la tecnología de computación

Más detalles

Unicenter Asset Management versión 4.0

Unicenter Asset Management versión 4.0 D A T A S H E E T Unicenter Asset Management versión 4.0 Unicenter Asset Management es una completa solución para gestionar los activos TI de su entorno empresarial de forma activa. Proporciona funciones

Más detalles

Software libre. El software libre provee la libertad de: Documentación (guías, wikis, faqs, etc.). Programa ejecutable. Código fuente del programa.

Software libre. El software libre provee la libertad de: Documentación (guías, wikis, faqs, etc.). Programa ejecutable. Código fuente del programa. GNU / Linux Software libre Es una forma ética de entender el software (en su desarrollo, comercialización, distribución y uso). Con el software libre se distribuye: Documentación (guías, wikis, faqs, etc.).

Más detalles

Programación en LabVIEW para Ambientes Multinúcleo

Programación en LabVIEW para Ambientes Multinúcleo Programación en LabVIEW para Ambientes Multinúcleo Agenda Introducción al Multithreading en LabVIEW Técnicas de Programación en Paralelo Consideraciones de Tiempo Real Recursos Evolución de la Instrumentación

Más detalles

Federico Peinado www.federicopeinado.es

Federico Peinado www.federicopeinado.es Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es

Más detalles

Interfaces y Manejadores de Dispositivos

Interfaces y Manejadores de Dispositivos Informática Electrónica Unidad 6 Interfaces y Manejadores de Dispositivos Modalidad y Materiales Dos clases expositivas a cargo del docente responsable (jlsimon@fceia.unr.edu.ar) Una práctica cargo de

Más detalles

CAPÍTULO 1 Instrumentación Virtual

CAPÍTULO 1 Instrumentación Virtual CAPÍTULO 1 Instrumentación Virtual 1.1 Qué es Instrumentación Virtual? En las últimas décadas se han incrementado de manera considerable las aplicaciones que corren a través de redes debido al surgimiento

Más detalles

Sistema Operativo Linux

Sistema Operativo Linux Fundación Colegio Aplicación Toico Palo Gordo. Municipio Cárdenas. Cátedra: Informática Objetivo N. 2 (SISTEMA OPERATIVO LINUX) Segundo Año. Secciones: A y B. Prof. Dayana Meléndez Sistema Operativo Linux

Más detalles

Historia de revisiones

Historia de revisiones Proyecto Help-Desk Plan de Verificación y Validación Versión 1.0 Historia de revisiones Fecha Versión Descripción Autor 16/08/2005 1.0 Primera versión del documento Martín Boero Plan de Verificación y

Más detalles

Una mirada práctica a los Micro-Kernels y los Virtual Machine Monitors François Armand, Michel Gien INFORMATICA III

Una mirada práctica a los Micro-Kernels y los Virtual Machine Monitors François Armand, Michel Gien INFORMATICA III Una mirada práctica a los Micro-Kernels y los Virtual Machine Monitors François Armand, Michel Gien INFORMATICA III DI PIETRO, Franco RODRIGUEZ, Matías VICARIO, Luciano Introducción En este papper se muestran

Más detalles

CÓMO TRABAJA TU SISTEMA OPERATIVO?

CÓMO TRABAJA TU SISTEMA OPERATIVO? CÓMO TRABAJA TU SISTEMA OPERATIVO? AUTORÍA MARÍA CATALÁ CARBONERO TEMÁTICA SISTEMAS OPERATIVOS ETAPA CICLO MEDIO Y SUPERIOR DE INFORMÁTICA Resumen Los sistemas operativos nacen de la informática. Su función

Más detalles

Reproductor Multimedia Streaming v0.1

Reproductor Multimedia Streaming v0.1 Reproductor Multimedia Streaming v0.1 Joaquín Gutiérrez Gil Universidad Pablo de Olavide Ingeniería Técnica en Informática de Gestión Asignatura Proyecto Introducción El presente documento trata sobre

Más detalles

Ministerio de Educación, Cultura y Deporte. Aulas en Red. Windows. Módulo 1: Tareas Iniciales. Virtualización

Ministerio de Educación, Cultura y Deporte. Aulas en Red. Windows. Módulo 1: Tareas Iniciales. Virtualización Ministerio de Educación, Cultura y Deporte Aulas en Red. Windows Módulo 1: Tareas Iniciales. Virtualización Aulas en red. Aplicaciones y servicios. Windows Virtualización En numerosas ocasiones necesitamos

Más detalles

Informe de avance Implementación herramientas de back-end (3-III).

Informe de avance Implementación herramientas de back-end (3-III). Proyecto RG-T1684 Desarrollo e implementación de las soluciones Prueba piloto del Componente III Informe Número 1. Informe de avance Implementación herramientas de back-end (3-III). Lautaro Matas 11/04/2013

Más detalles

Sistemas operativos: una visión aplicada. Capítulo 12 Estudio de casos: Windows-NT

Sistemas operativos: una visión aplicada. Capítulo 12 Estudio de casos: Windows-NT Sistemas operativos: una visión aplicada Capítulo 12 Estudio de casos: Windows-NT Contenido Introducción Principios de diseño de Windows NT Arquitectura de Windows NT El núcleo de Windows NT Subsistemas

Más detalles

Conceptos Generales Tabla de Contenidos

Conceptos Generales Tabla de Contenidos Conceptos Generales Tabla de Contenidos 1. Conceptos Generales... 2 1.1 Introducción:... 2 1.2 Definición de un Sistema Operativo... 2 1.3 Estructura, elementos y funciones...5 1.3.1 Evolución de los sistemas

Más detalles