Story Transcript
Arquitectura de Computadores II Facultad de Ingeniería Universidad de la República
Instituto de Computación
Temas
Repaso de conceptos Sistemas Embebidos Microcontroladores System on a Chip
Single Board Computers
Sistemas Operativos
Arquitectura de Computadores II
CISC vs RISC
CISC Complex Instruct Set Computers RISC Reduced Instruct Set Computers Características de CISC
Gran número de instrucciones. Instrucciones útiles para el programador.
Arquitectura de Computadores II
Hardvard vs Princeton
Princeton (Von Neumann)
Memoria común para almacenar el programa y las variables. Permite la ejecución de código automodificable. Un único bus entre la CPU y la memoria.
Arquitectura de Computadores II
Harvard vs Princeton
Harvard
Ejecuta las instrucciones en menor cantidad de ciclos por instrucción, pues logra un paralelismo a nivel de instrucción mayor Cada palabra (datos e instrucción) tiene un tamaño adecuado.
Arquitectura de Computadores II
Sistemas Embebidos
Arquitectura de Computadores II
¿Qué es un Sistema Embebido?
Un sistema embebido (S.E) es un sistema computador destinado a una aplicación en particular. Los sistemas computadores de propósito general tienen muchas aplicaciones, según el software que se instale.
Arquitectura de Computadores II
Caracteristicas Es una combinación de hardware, software y elementos mecánicos. Específicos para una tarea por lo que son optimizados para la misma.
Arquitectura de Computadores II
Caracteristicas
Interactuan con el entorno Directamente sensando y controlando señales sobre el cable. Comunicándose con otros dispositivos. Interaccion con restricciones de tiempo real. Bajo consumo.
Arquitectura de Computadores II
Los S.E en nuestras vidas
Electrodomésticos, periféricos para computadora, control industrial, teléfonos celulares, GPS, routers, mp3, máquinas de fotos, consolas de videojuegos, equipos para medicina, canaleras para TV, DVD, autos, entre otros.
Arquitectura de Computadores II
Mayores exigencias Calidad Disponibilidad
Seguridad (safety)
Confiabilidad Arquitectura de Computadores II
Formas de implementar S.E.
Basados en microcontroladores Basados en System on chip (SOC) / Single board computers (SBC) Híbrido
Arquitectura de Computadores II
Microcontroladores
Arquitectura de Computadores II
Introducción
(1/4)
Un microprocesador (µP) es una CPU en un solo circuito integrado. Un computador es una CPU, más memoria y puertos de E/S. Un sistema computador es un computador más periféricos. Arquitectura de Computadores II
Introducción
(2/4)
Un microcontrolador (µC) es un sistema autocontenido donde el microprocesador, soporte, memoria y entrada/salida se presentan dentro de un mismo integrado. Power
Reset
Reset Control
Processor
Clocking
Clock & Timing
RAM
I/O Ports
Control Store
Power
Arquitectura de Computadores II
Input & Output Pins
Introducción
(3/4)
Características
Fáciles de utilizar. Bajo costo. Flexibles. Debido a su tamaño puede incluirse dentro del dispositivo que gobierna.
Arquitectura de Computadores II
Introducción
(4/4)
Firmware
Rutinas de software almacenadas en memoria ROM. Software que se encuentra embebido en un dispositivo de hardware. Es una combinación de software y hardware.
Arquitectura de Computadores II
Tipos de Microcontroladores
Los microcontroladores se pueden clasificar en:
Microcontroladores embebidos de 8 bits. Microcontroladores de 16-32 bits Procesadores de señales digitales (DSP)
Arquitectura de Computadores II
Microcontroladores de 8 bits
Todos los recursos necesarios están incluidos en el chip. Solo necesitan alimentación y reloj. Proporcionan control e interfaz con dispositivos externos de manera económica y programable.
Arquitectura de Computadores II
(1/3)
Microcontroladores de 8 bits
Disponen de:
Reset Reloj Procesador Memoria ROM para el programa e interfaz de programación Memoria RAM para variables. I/O Pins.
Adicionalmente pueden incluir:
Capacidad de debugging Interrupciones I/O analógica Comunicación serial y/o paralela Interfaz con memoria Arquitectura de Computadores II
(2/3)
Microcontroladores de 8 bits
Muy poca RAM (decenas de KB). Muy poca velocidad de reloj (decenas de MHZ). Muy utilizados en aplicaciones de control. Bajo costo. Bajo consumo energético (algunos µA).
Arquitectura de Computadores II
(3/3)
Procesador de señales digital
Es una categoría relativamente nueva de microprocesadores. El objetivo de los DSP es tomar un señal analógica y calcular una respuesta apropiada. Ejecutan a gran velocidad para permitir el control en tiempo real.
Arquitectura de Computadores II
Fabricantes
Intel
Microchip
PIC
Motorola
8048 8051 (Intel y Otros) 80186, 80186 y 80386 EX.
68HC11 (Motorola y Toshiba) 683xx
Atmel
AVR
Arquitectura de Computadores II
Registros de E/S
Son los componentes más utilizados del microcontroladores . Los microcontroladores disponen de registros para controlar los dispositivos de E/S. Espacios
E/S mapeada en memoria. Mapa E/S y mapa de memoria.
Arquitectura de Computadores II
Reset
Permite llevar al microcontrolador a un estado conocido. Inicializando todos los componentes del µC. Power on reset (POR). Brown out reset (BOR).
Arquitectura de Computadores II
Reloj del sistema
Los µC están diseñados para ejecutar con poco soporte externo para el reloj del sistema. Los µCs corren en el entorno de las decenas de megahetz. Existen diversos métodos para proporcionarle el reloj al µC:
Usando un cristal Resonador cerámico Oscilador RC Ninguno.
Arquitectura de Computadores II
Protección ante fallas
Watch Dog Timer
Es utilizado para prevenir caídas del software. En entornos con ruido eléctrico, puede ocurrir que el PC del µC se vea afectado y éste comience a ejecutar en un lugar indeterminado. El circuito WDT se encarga de resetear el µC si el registro WD se desborda.
Protección ante caídas en la alimentación.
Arquitectura de Computadores II
Alimentación
Minimizar el consumo de corriente es un tema a tener en cuenta. Hay que tener en cuenta el consumo:
Del microcontrolador en modo normal. • Depende de la frecuencia y del voltaje proporcionado.
Del microcontrolador en modo sleep. Del los dispositivos conectados a la E/S. • Particular de cada aplicación. • Pueden gestionarse adecuadamente los dispositivos.
Arquitectura de Computadores II
Timers
Se utiliza para trabajar con eventos de tiempo. Contadores: cuentan acontecimientos que suceden en el exterior. Temporizadores: controlan períodos de tiempo.
Arquitectura de Computadores II
E/S Digital
La comunicación del µC con el mundo se da a través de sus pines de E/S. Estos pines son compartidos con módulos del µC. Pueden configurarse con entrada o salida.
Arquitectura de Computadores II
E/S Analógica
En el mundo las cosas no son solo blancas y negras. Conversión
ADC, es utilizado para procesar las entradas analógicas. El µC puede incluir convertidores y comparadores analógicos. DAC, es utilizado para generar salidas analógicas.
Arquitectura de Computadores II
Comunicación
Serial o paralela. Síncrona o asíncrona. Redes de dispositivos.
Arquitectura de Computadores II
Arquitectura
Arquitectura de Computadores II
Desarrollo de software
Herramientas y entornos de desarrollo Programación Debug
Arquitectura de Computadores II
Herramientas y entornos de desarrollo (1/4)
Editor Compilador Ensamblador Simulador Emulador Programador
IDE
Arquitectura de Computadores II
Herramientas y entornos de desarrollo (2/4)
Assembler
Instrucciones assembler. Directivas Debe estar bien comentado
Arquitectura de Computadores II
Herramientas y entornos de desarrollo (3/4)
Lenguaje de alto nivel
C, C++, Basic, Forth, JavaMe. Proporcionan • • • • • • •
Mayor nivel de abstracción Bibliotecas. Tipos de datos. Variables locales y globales. Estructuras de datos y punteros. Asignación de memoria para datos. Acceso a registros.
Decrementa el tiempo de desarrollo.
Arquitectura de Computadores II
Herramientas y entornos de desarrollo (4/4)
Real Time Operating System (RTOS)
Multitasking Scheduling Context Switching Respuestas en tiempo a eventos del mundo. Comunicación entre procesos. Stack TCP/IP Ejemplos: Salvo, FreeRTOS, µC/OS, ...
Arquitectura de Computadores II
Evolución del hardware embebido:
Cada vez hay más aplicaciones ya que pueden hacerse dispositivos que:
Consuman menos por transistor Cuesten menos por transistor Sean más rápidos
Ley de Moore: Cada 2 años, el doble de transistores Arquitectura de Computadores II
System on chip (SOC)
Se refiere a integrar todos los componentes de un computador u otro dispositivo electrónico en un chip. La principal diferencia con un µC es la memoria disponible. En general, los SOC corren sistemas operativos (S.O) tradicionales.
Arquitectura de Computadores II
Single Board Computers (SBC)
Una SBC es un sistema computacional completo realizado en una sola placa que utiliza un SOC. Un SOC por si solo no puede funcionar, necesita de alimentación, acondicionamientos de señales, conectores, y algun controlador adicional. Más pequeñas, energéticamente más eficientes, y con mayores posibilidades de E/S que un sistema tradicional.
Arquitectura de Computadores II
Hardware Embebido basado en SBC (1/2)
La arquitectura de hardware para los sistemas embebidos por lo general difiere a la de los sistemas de escritorio. ARM, MIPS o PowerPC son muy utilizados por su bajo consumo y buena performance. X86 no es tan frecuente, pero también es utilizado. Almacenamiento en flash Tengo que tener en cuenta que los ciclos de borrado son limitados, para alargar la vida útil de la memoria. • Existen técnicas para “gastar”IIde forma Arquitectura de Computadores
Hardware Embebido basado en SBC (2/2)
Cantidad de RAM limitada (desde unos pocos MB a varias decenas de MB) Velocidad de CPU inferior a sistemas de escritorio. Varios buses de interconexión (I2C, SPI, USB, serial) y puertos de E/S.
Arquitectura de Computadores II
Arquitecturas utilizadas en S.E.
Extraido de: http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Snapshot-of-the-embedded-Linux-market-April-2007/
Arquitectura de Computadores II
SBC FoxBoard G20
(1/3)
Procesador: Atmel AT91SAM9G20 ARM9 CPU
Frecuencia de reloj: 400Mhz
RAM: 64 MB
Flash: 8 MB
USB host: 2
USB device: 1
UART: 4
GPIO: 80
A/D: 4ch 10 bits
I2C: 2
SPI: 2
Tensión: 5V
Corriente: ~70 mA
Costo: 139 euros
Arquitectura de Computadores II
SBC FoxBoard G20
(2/3)
Ethernet Conector para pantalla touch screen Serial port (debug) Slot mini-sd RTC 1 Switch y 1 Led
Arquitectura de Computadores II
SBC FoxBoard G20
(3/3)
Sistemas Operativos Soportados:
OpenEmbedded Debian Gentoo OpenWRT
Arquitectura de Computadores II
SBC BeagleBoard C4
(1/3)
Procesador: OMAP3530DCBB72 ARM Cortex-A8
Frecuencia de reloj: 720 MHZ
RAM: 256 MB
Flash: 256 MB
USB host: 1 + 1OTG
GPIO: 28
I2C: 1
SPI: 1
Tensión: 5V
Corriente:350 mA
Costo: 149 dolares
Arquitectura de Computadores II
SBC BeagleBoard C4
(2/3)
Salida HDMI Entrada/Salida audio Salida Super Video DSP Conector JTAG RS232 header Slot SD/MMC Conexión para LCD GPU con soporte para OpenGL Arquitectura de Computadores II
SBC BeagleBoard C4
(3/3)
Sistemas operativos soportados: Angstrom Symbian Debian Ubuntu Android QNX WinCE Gentoo Arquitectura de Computadores II
Puntos Fuertes Beagleboard C4
Esta orientada a aplicaciones multimedia donde puede ser sacado provecho al DSP. Posee una cantidad de RAM considerable, lo que posibilita ejecutar un manejador de ventanas (X server). La línea ARM Cortex AX es utilizada en muchos dispositivos comerciales: Ipad, archos5, pandora, Sony Ericsson Satio. Muy bajo consumo y alto rendimiento. No necesita disipación mecánica (coolers). Arquitectura de Computadores II
Puntos Debiles Beagleboard C4
Pocos puertos de E/S. No posee Ethernet onboard. No posee UART No posee Wifi onboard
Arquitectura de Computadores II
Puntos fuertes FoxBoard G20
Muchos puertos de E/S RTC Bajo consumo/No necesita disipación 2 puertos USB Ethernet onboard Muy adecuada para aplicaciones de control y robótica embebida.
Arquitectura de Computadores II
Puntos debiles FoxBoard G20
Costo Ausencia de DSP Poca memoria Flash No esta diseñada para multimedia No posee wifi onboard
Arquitectura de Computadores II
Tendencias en S.O. para embebidos
Extraido de: Arquitectura de Computadores II http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Snapshot-of-the-embedded-Linux-market-April-2007/
GNU/Linux para S.E.
GNU/Linux: Sistema operativo libre compuesto por el kernel (Linux) y herramientas del sistema GNU. El Kernel es el componente del S.O. que nos abstrae del hardware y nos facilita su uso. Actualmente es el sistema operativo de uso general más utilizado en sistemas embebidos. Arquitectura de Computadores II
El Kernel Linux
Originalmente no fue pensando como un sistema operativo embebido. Escrito originalmente para la arquitectura IA-32, portado por primera vez a procesadores Motorola. El proceso fue costoso, lo que implicó un rediseño de la arquitectura para hacerlo fácilmente portable. Este cambio abrió la puerta para ser portado a otras arquitecturas. Arquitectura de Computadores II
El Kernel Linux
Soporta numerosas arquitecturas (2.6.33): alpha, blackfin, h8300, m32r, microblaze, parisc, score, um, arm, cris, ia64, m68k, mips, powerpc, sh, x86, avr32, frv, m68knommu, mn10300, s390, sparc, xtensa.
Arquitectura de Computadores II
Requerimientos mínimos
Un CPU soportado por gcc y el Kernel Linux.
CPU de 32 bits CPU's sin MMU son también soportados mediante el proyecto uClinux. 4 MB RAM
Arquitectura de Computadores II
Ventajas en el uso de GNU/Linux en S.E
Reutilización de bibliotecas de software existente. Nos permite centrarnos en dar valor agregado a una solución y no en “reinventar la rueda”. Calidad. Uso de lenguajes de programación de mayor nivel de abstracción (Java, Python, Lua). Posibilidad de prototipar y debugear en un PC muchos de los componentes del sistema. Brinda portabilidad de mi sistema a otras arquitecturas (independecia tecnológica). Arquitectura de Computadores II
Ventajas en el uso de GNU/Linux en S.E
Extensiones para manejo de tiempo real. Mantenibilidad Puedo auditar el código fuente. Libertad de modificar el código fuente. Menor costo en licencias. Acceso más sencillo al software y a las herramientas. Permite hacer frente a los requerimientos cada vez más complejos impuestos por el mercado. Herramientas de desarrollo independientes de la plataforma Arquitectura de Computadores II
Desventajas de GNU/Linux en S.E
Algunos drivers propietarios solo existen para versiones viejas del kernel y el fabricante no publica sus fuentes. Algunos Sistemas Embebidos basados en GNU/Linux toman un fork del kernel vainilla y nunca integran sus cambios. Muchas veces no tengo opción de que distribución usar. Puede ocurrir que ni siquiera exista una distribución (usar Buildroot, OpenEmbedded).
Arquitectura de Computadores II
Linux y el tiempo real
RTOS: S.O con la habilidad de brindar el nivel requerido de servicio en un período de tiempo acotado (POSIX 1003.1b) Con el tiempo Linux fue incorporando parches RT, como los timers de alta resolución. Es raro tener restricciones de tiempo blandas que un Kernel Vanilla no pueda proveer (Latencia de peor caso ∼ 1ms). Si se necesita menor latencia usar parches para el Kernel: PREEMPT_RT Ofrece una latencia máxima de 100us Arquitectura de Computadores II
Estado actual de los S.E
Cada vez se dispone de hardware con mayores prestaciones, que incluso permite ejecutar un S.O de proposito general con RT y seguir siendo económicamente viable. El mercado le exige más requerimientos a los dispositivos embebidos.
Arquitectura de Computadores II
Estado actual de los S.E.
Hoy en día los S.E. tienen más puntos en común con los sistemas de propósito general que en el pasado. Herramientas de desarrollo de mayor nivel de abstracción. Reutilización de software y periféricos utilizados en sistemas de proposito general Es necesario contar con equipos interdisciplinarios.
Arquitectura de Computadores II
Linux Embebido en nuestras vidas
Arquitectura de Computadores II
Componentes de Software
Cross-toolchain: Compilador que corre en la máquina de desarrollo, pero genera código para el sistema embebido. Bootloader: Iniciado por el hardware. Responsable de la inicialización básica, cargar y ejecutar el kernel. Kernel Linux: Contiene el manejo de los procesos, memoria, red, drivers y provee servicios para las aplicaciones de usuario. Biblioteca de C: Interfaz entre el Kernel y las aplicaciones (glibc, µClibc). Bibliotecas y aplicaciones: reutilizadas o desarrolladas por nosotros. Arquitectura de Computadores II
Bibliografía
http://www.linuxfordevices.com/ http://free-electrons.com/ http://beagleboard.org http://eshop.acmesystems.it Embedded Linux System Design and Development (Auerbach, 2006)
Arquitectura de Computadores II
Preguntas
Arquitectura de Computadores II