LECCIÓN 4 ARQUITECTURA DE HARDWARE DE LOS SISTEMAS EMPOTRADOS Prof. Ing. Miguel Angel Aguilar Ulloa 2009-2010
Copyright 2009. Ing. Miguel Angel Aguilar Ulloa. Última actualización: 04/10/2009. Usted es libre de: Copiar, distribuir y comunicar públicamente la obra. LICENCIA Hacer obras derivadas. Bajo las siguientes condiciones: Reconocimiento Debe reconocer los créditos de la obra de la manera especificada por el autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo o apoyan el uso que hace de su obra). No comercial No puede utilizar esta obra para fines comerciales. Compartir bajo la misma licencia Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Texto de la licencia: http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode. 2
1. Arquitectura de hardware de una computadora vs sistema empotrado. 2. Componentes de hardware de un sistema empotrado. 1. Procesadores. 2. Memorias. 3. Entradas/Salidas Digitales (GPIOs). 4. Buses, redes y protocolos de comunicación. 5. Periféricos. CONTENIDO 3. Interfaz de componentes. 4. Compromiso entre Hardware y Software. 3
1. ARQUITECTURA DE HARDWARE DE UNA COMPUTADORA VS SISTEMA EMPOTR ADO
Arquitectura Básica de una Computadora EMPOTRADO ARQUITECTURA DE HARDWARE DE UNA COMPUTADORA VS SISTEMA 5
Arquitectura genérica de una computadora EMPOTRADO ARQUITECTURA DE HARDWARE DE UNA COMPUTADORA VS SISTEMA 6
Arquitectura de hardware de un sistema empotrado EMPOTRADO ARQUITECTURA DE HARDWARE DE UNA COMPUTADORA VS SISTEMA 7
2. COMPONENTES DE HARDWARE DE UN SISTEMA EMPOTRADO
Un procesador es un dispositivo electrónico capaz de manipular datos de una determinada manera mediante una secuencia de instrucciones. Las instrucciones son conocidas como opcodes o código de máquina. La secuencia de instrucciones es lo que es en sí un programa. Un concepto más genérico para definir un procesador es el de elemento de procesamiento (PE), que puede ser un microprocesador, microcontrolador, SoC, DSP, GPU, entre otros, los cuales se conectan entre ellos en sistemas donde hay más de un PE o bien con el resto de componentes del sistema mediante buses. PROCESADORES 9
Microprocesadores Un microprocesador es un procesador implementado en un solo circuito integrado. Un microprocesador es algunas veces llamado CPU (Central Processing Unit). PROCESADORES Algunas arquitecturas de procesadores actuales son la serie Intel Pentium, Freescale/IBM, PowerPC, MIPS, ARM, and the Sun SPARC, entre otros. 10
Microcontrolador Un microcontrolador es un procesador, memoria y algunos dispositivos E/S contenidos en un solo circuito integrado con el objetivo de ser empleado en sistemas empotrados. Los buses que interconectan el procesador con sus E/S se encuentran dentro del mismo circuito integrado. PROCESADORES PIC 16F877 11
System-on-Chip (SoC) Los SoC tienen una amplia variedad de dispositivos de E/S según la aplicación deseada y están diseñados para interconectarse con grandes bancos de memoria externa. A diferencia de los microcontroladores que usualmente tienen toda su memoria integrada y ofrecen un soporte limitado para memoria externa. PROCESADORES OMAP35x 12
Procesadores de Señales Digitales - DSP Éstos procesadores tienen sets de instrucciones y arquitecturas optimizadas para el procesamiento numérico de arreglos de datos. DSPs usualmente tienen hardware dedicado para incrementar la velocidad de operaciones aritméticas. PROCESADORES Los DSPs son comúnmente empleados en aplicaciones embebidas y se incluyen en Microcontroladores y SoCs. 13
Unidad de procesamiento gráfico - GPU Es un procesador dedicado exclusivamente al procesamiento de gráficos, para aligerar la carga de trabajo del procesador central en aplicaciones como los videojuegos y o aplicaciones 3D interactivas. PROCESADORES 14
RAM: Random Access Memory. ROM: Read-Only Memory. EPROM: Erasable Programmable Read-Only Memory. MEMORIAS EEPROM: Electrically Erasable Programmable Read-Only Memory. FLASH: Es la tecnología dominante actualmente. Existen actualmente tres versiones NOR, NAND y OneNAND. 15
Flash NOR: La escritura y lectura está basada en acceso aleatorio, es decir, byte a byte. Los tamaños típicos de los bloques son de 64, 128 o 256Kb. MEMORIAS NAND: La escritura y lectura está basada en bloques. Los tamaños típicos de bloque son 16, 128, 256 o 512KB. Los sistemas basados en NAND son más baratos y rápidos pero carecen de una fiabilidad que los haga eficientes, lo que demuestra la necesidad imperiosa de un buen sistema de archivos. 16
NAND Tamaños típicos de bloque: 32 páginas de 512 bytes, con un tamaño de bloque de 16 KB. 64 páginas de 2048 bytes, con un tamaño de bloque de 128 KB. 64 páginas de 4096 bytes, con un tamaño de bloque de 256 KB. 128 páginas de 4096 bytes, con un tamaño de bloque de 512 KB. MEMORIAS Cada página tiene asociado unos cuantos bytes adicionales que se emplean para almacenar información extra, como por ejemplo marcar una determinada página como mala con el fin de no ser usada más o bien almacenar información de corrección de errores (ECC) asociada a la página. Usualmente a estos bytes se les conoce como memoria fuera de banda (out-of-band memory - OOB). 17
Estructura de las páginas de una memoria NAND MEMORIAS 512 bytes 16 bytes 512 bytes 2048 bytes 16 bytes 512 bytes 16 bytes 512 bytes 64 bytes 16 bytes 18
OneNAND Es una tecnología de memorias desarrollada por Samsung, la cual combina la alta densidad de la memoria NAND y la simple interfaz de la memoria NOR, además posee una memoria RAM interna. MEMORIAS Algunas características de la memoria OneNAND son: Bootloader interno (Un bloque de 1KB). Un controlador de memoria flash interna. Un búfer de datos interno (4kB SRAM-512Mb/2kB, SRAM-256Mb). ECC por hardware (2-bit EDC/1-bit ECC). 19
Estructura de una memoria OneNAND Celda de memoria NAND MEMORIAS SRAM Interface NOR Software Interface de Traducción 20
Entradas y Salidas Digitales de Propósito General (GPIO) Éstos puertos son configurados por software en una base de pin a pin, tanto como entradas como salidas. En muchos Microcontroladores y SoCs los pines de los GPIOs son compartidos con otros subsistemas lo cual permite ahorrar pines y le da una gran versatilidad al sistema. ENTRADAS Y SALIDAS DIGITALES Y ANALÓGICAS 21
Entradas analógicas Muchos microcontroladores poseen entradas analógicas que permiten monitorear sensores y voltajes. Así, un sistema empotrado puede medir niveles de luz, temperatura, vibración o aceleración, presiones, humedad campos magnéticos entre otros. ENTRADAS Y SALIDAS DIGITALES Y ANALÓGICAS 22
Conceptos generales Bus: es un sistema digital que transfiere datos entre los componentes de un sistemas, existen dos tipos: paralelo y serie. Red: es un conjunto de sistemas conectados por medio de cables, señales, ondas o cualquier otro método de transporte de datos, que comparten información, recursos, servicios, etc. Protocolo: es un conjunto de reglas usadas por sistemas para comunicarse unas con otras a través de un bus o una red. Un protocolo es una convención o estándar que controla o permite la conexión, comunicación, y transferencia de datos entre dos puntos finales. La diferencia entre bus y red es muy sutil, los buses refieren a medios de comunicación internos a los sistemas placas de circuitos impresos, o bien a lo interno de los chips, por otra parte las redes usualmente comunican sistemas de manera externa y a mayores distancias. La lógicas de los protocolos es otra diferencia. BUSES, REDES Y PROTOCOLOS DE COMUNICACIÓN 23
UART Actualmente el protocolo UART es impráctico para transmitir datos en aplicaciones finales, sin embargo es la forma más simple y barata de conectar una computadora de trabajo al sistema empotrado con el propósito de ser empleado en la etapa de diseño y para depuración del sistema. BUSES Diagrama funcional de UART Datos seriales asincrónicos 24
Serial Peripheral Interface - SPI Es un protocolo maestro/esclavo. BUSES Todos los dispositivos de una determinada red emplean una señal de reloj común y el máster decide con que dispositivo establecer una comunicación. Puede ser empleado para interfazar memorias, controladores de periféricos en general como ADCs, DACs, Real-Time Clocks, LCDs, sensores, chips de audio, entre otros. 25
Señales del SPI Master Out Slave In (MOSI) Master In Slave Out (MISO) Serial CLocK (SCLK or SCK) Chip Select (CS) BUSES Arquitectura del bus Señales 26
I2C Es un protocolo multimaster lo cual significa que cada dispositivo puede actuar como master o como esclavo. Señales Serial Data (SDA) Serial Clock (SCL) BUSES Cada dispositivo conectado a la red tiene una dirección única. Éste bus es bidireccional, de baja velocidad y sincrónico a un reloj común. Arquitectura del bus 27
Infrarojo (IrDA) El propósito básico de IrDA es proveer una comunicación dispositivo-dispositivo en cortas distancias. Paquete de transmisión BUSES Soporta tasas de transmisión de 1.152Mbps y 4Mbps. Arquitectura del bus Ángulo de transmisión 28
Universal Serial Bus - USB Un sistema de USB consiste de uno o más dispositivos USB (periféricos) y uno o más hubs y un host. Al host a veces se le conoce como host controller. BUSES Sistema USB 29
Características fundamentales del USB Característica Bajo costo Descripción El USB provee una solución de bajo costo para conectar dispositivos a PCs. Conexión en caliente La conexión del dispositivo se detecta automáticamente y el software igualmente lo configura Un solo tipo de conector Velocidades Cable de poder Cualquier dispositivo se conecta usando el mismo estándar de conector Low speed 1.5Mbps Full speed 12Mbps High speed 480Mbps Los dispositivos pueden ser alimentados y cargados por USB. El voltaje es de 5V y la corriente oscila entre 100mA y 500mA. BUSES 30
Enumeración Antes de que una transferencia se lleve a cabo, el host debe aprender sobre el dispositivo con el cual se va a comunicar. Éste proceso se le conoce como enumeración. BUSES El proceso de enumeración incluye las siguientes funciones: asignar una dirección al dispositivo, leer los descriptores del dispositivo, asignar y cargar el driver del dispositivo y seleccionar la configuración del dispositivo. 31
Endpoinds de un dispositivo USB El endpoint es un buffer que reside en el dispositivo. En él se almacenan datos que van a ser enviados desde el dispositivo al host o bien que han sido recibidos desde el host. El host también cuenta con buffers pero no son endpoints. BUSES La dirección de un endpoint consiste del número de endpoint (0-15) y la dirección IN o OUT desde la perspectiva del host. Todo dispositivo debe tener un endpoint 0 configurado como endpoint de control. Los endpoints son unidireccionales con excepción de los endpoints de control que son bidireccionales. 32
Tuberías (Pipes) Antes de empezar una transferencia entre el host y el dispositivo se debe establecer una tubería. El host establece las tuberías durante a la enumeración. BUSES Todo dispositivo tiene una tubería bidireccional de control por defecto que usa el endpoint 0. 33
Diagrama de comunicación entre el host y el dispositivo USB Host Dispositivo BUSES Buffer de datos IO Tubería Endpoint 0 Buffer de datos IN Tubería Endpoint Buffer de datos OUT Tubería Endpoint 34
Tipos de Transferencias de USB Una transferencia de control es empleada para configurar el bus y los dispositivos del bus y para retornar información de estatus. BUSES Una transferencia bulk mueve datos asincrónicamente sobre USB. Una transferencia isocrónica se emplea para mover datos que tienen tiempo crítico como el audio que son datos destinados a un dispositivo de salida. Una transferencia de interrupción se emplea para mover datos en intervalos regulares desde 1 a 255 ms. 35
Transacciones de USB Cada transferencia consiste de una o más transacciones, y cada transacción consistes y uno o más paquetes. BUSES Básicamente existen tres tipos de paquetes, los cuales determinan cada una de las fases de una transacción: símbolos (token), datos (data) y reconocimiento (handshake). Fase de Token Fase de datos Fase de reconocimiento Una transacción 36
Paquetes de Símbolos de USB (Token packets) Los tokens son paquetes de 24 bits que determinan el tipo de transferencia que se llevará a cabo sobre el bus. BUSES USB token packets 37
Paquetes de datos de USB (Data packets) Hay dos tipos de paquetes de datos DATA0 y DATA1. La transmisión de los paquetes alterna entre los dos tipos. Cada uno puede transferir entre 0 y 1023 bytes. El CRC es de 16 bits. BUSES USB data packets 38
Paquetes de reconocimiento de USB (Handshake packets) Hay tres tipos de paquetes de reconocimiento. Una recepción exitosa es reconocida con un ACK (acknowledged). El receptor notifica al host de un transmisión fallida enviando un NAK (No acknowledged). Finalmente un STALL pausa una transferencia. BUSES USB Handshaking packets 39
Descriptor de datos Un descriptor es un paquete de datos usado para informarle al host las capacidades del dispositivo. BUSES Contiene un identificador del manufacturador, un identificador del producto, el tipo de clase y configuración interna del dispositivo. Cada manufacturador y producto tiene IDs únicos. 40
Interfaz Física de USB Pin Señal Propósito Color de cable 1 VBUS Alimentación 5V Rojo 2 D+ Línea diferencial Verde 3 D- Línea diferencial Blanco 4 GND Referencia Negro BUSES Conectores y receptáculos Cable USB y receptáculos en un hub Tipo A Tipo B 41
Controller Area Network (CAN) Está diseñado para operar en ambientes ruidosos. REDES Ésta red tiene una alta inmunidad al ruido y además posee detección de error con retransmisión de los paquetes fallidos. La velocidad de transmisión es de 1Mbps sobre una pareja de cables TX/RX. 42
Red CAN Señales REDES Pin Señal 1 Reservado 2 CAN_L 3 Tierra 4 Reservado 5 Reservado 6 Tierra 7 CAN_H 8 Reservado 9 V+ 43
Ethernet Es la interfaz de red más empleada. REDES Al incorporar Ethernet a un sistema empotrado las posibilidades de comunicación se amplían y permite enviar datos al sistema a alta velocidad, así también se puede acceder a impresoras, servidores, otros sistemas empotrados y por supuesto al internet. Las tasas de transferencia disponibles son 10Mbps, 100Mbps y 1000Mbps. 44
Algoritmo de Ethernet Inicio Formato del paquete de Ethernet REDES Espere? Incremente Preámbulo Marco de inicio Transmite Espere Tamaño Datos Colisión? Aborte Relleno No Hecho? CRC Fin 45
Señales de Ethernet REDES Pin Señal Propósito Color del Cable 1 TD- Transmisión Blanco/Anaranjado 2 TD+ Transmisión Anaranjado 3 RD+ Recepción Blanco/Verde 4 NC Sin conexión Azul 5 NC Sin conexión Blanco/Azul 6 RD- Recepción Verde 7 NC Sin conexión Blanco/Café 8 NC Sin conexión Café 46
Concepto de periférico Son los dispositivos auxiliares e independientes conectados a la CPU de una de un sistema y no están conectados al núcleo fundamental de una computadora (CPU + memoria). PERIFÉRICOS En general los periféricos comunican al CPU con el mundo exterior y con dispositivos de almacenamiento. En general el CPU, la memoria y los periféricos se comunican por medio de los siguientes buses: Bus de direcciones. Bus de control. Bus de datos. 47
Controladores de dispositivos Los controladores de dispositivos se refieren a dos cosas: Desde el punto de vista de software, son las rutinas que manejan a nivel del kernel los dispositivos del hardware y le permiten a las aplicaciones hacer uso del hardware (device drivers). PERIFÉRICOS Desde el punto de vista del hardware, son chips que actúan como interfaz entre el fenómeno físico que rige el comportamiento del periférico y el sistema digital como tal (CPU). Fenómeno físico Controlador CPU (Sistema) 48
Tipos de periféricos Periféricos de entrada: captan y envían los datos al dispositivo que los procesará. Periféricos de salida: son dispositivos que muestran o proyectan información hacia el exterior del sistema. Periféricos de entrada/salida (E/S) Periféricos de almacenamiento: son los dispositivos que almacenan datos e información por bastante tiempo. La memoria RAM no puede ser considerada un periférico de almacenamiento, ya que su memoria es volátil y temporal. Periféricos de comunicación: son los periféricos que se encargan de comunicarse con otros sistemas, ya sea para trabajar en conjunto, o para enviar y recibir información. Periféricos del sistemas: son usualmente periféricos que tiene que ver con funciones de administración del sistema, como relojes de tiempo real, watch dog timers, temporizadores, circuitos de manejo de potencia, etc. PERIFÉRICOS 49
Dispositivos de entrada Teclados. Sensores. PERIFÉRICOS Mouse. Micrófonos (CODECs de audio). Convertidores A/D. 50
Dispositivos de salida Pantallas (Ej. LCD). LEDs. PERIFÉRICOS Parlantes / Bocinas (CODECs de audio). Impresoras. Convertidores D/A. 51
Pantallas Una pantalla puede ser manejada directamente o bien mediante un frame buffer. Típicamente, simples son manejados directamente por lógica digital, mientras que las pantallas más grandes son manejadas por frame buffers en RAM. PERIFÉRICOS 52
Dispositivos de Entrada/Salida Pantallas táctiles. Sistemas de audio full-duplex micrófono y parlantes. PERIFÉRICOS 53
Pantallas táctiles Una pantalla táctil es un dispositivo de entrada y salida. La pantalla táctil registra la posición del toque sobre su superficie. Existen dos tipos: las pantallas táctiles resistivas y las capacitivas. PERIFÉRICOS 54
Pantalla resistiva Una pantalla táctil resistiva esta formada por varias capas. Las más importantes son dos finas capas de material conductor entre las cuales hay una pequeña separación. Cuando algún objeto toca la superficie de la capa exterior, las dos capas conductoras entran en contacto en un punto concreto. De esta forma se produce un cambio en la corriente eléctrica que permite a un controlador calcular la posición del punto en el que se ha tocado la pantalla midiendo el voltaje. PERIFÉRICOS 55
Pantalla capacitiva Esta cubierta con un material, habitualmente óxido de indio y estaño que conduce una corriente eléctrica continua a través del sensor. El cuerpo humano también se puede considerar un dispositivo eléctrico en cuyo interior hay electrones, por lo que también dispone de capacitancia. Cuando el ser humano toca la pantalla distorsiona la capacitancia lo cual se mide mediante la distorsión en la corriente. PERIFÉRICOS 56
Dispositivos de almacenamiento Discos duros. Memorias flash. PERIFÉRICOS Memorias flexibles (Ej. SD). 57
Secure Digital - SD Es un formato de tarjeta de memoria flash. Se utiliza en dispositivos portátiles tales como cámaras fotográficas digitales, PDAs, teléfonos móviles e incluso videoconsolas (Wii), entre otros. PERIFÉRICOS Los dispositivos con ranuras SD pueden utilizar tarjetas MMC, que son más finas, pero las tarjetas SD no caben en las ranuras MMC. 58
SDIO Las ranuras SD pueden ser utilizadas para más cosas que una tarjeta de memoria flash. Los dispositivos que soportan SDIO (típicamente PDA, pero cada vez más ordenadores portátiles y teléfonos móviles) pueden usar pequeños dispositivos diseñados para las dimensiones SD, como receptores GPS, Wi-Fi o adaptadores Bluetooth, modems, lectores de códigos de barras, adaptadores IrDA, sintonizadores de radio FM, cámaras digitales acoplables, etc. PERIFÉRICOS 59
Dispositivos de comunicación Modem. Red (Ethernet). PERIFÉRICOS Wireless. Hubs. 60
OMAP4 PERIFÉRICOS 61
3. INTERFAZ DE COMPONENTES
Memorias Si se puede conseguir la memoria del tamaño exacto que se necesita la estructura es simple. Las dificultades comienzan cuando se emplean múltiples chips de memoria. Esto implica diseñar un bus de direcciones y de datos apropiado. CPU INTERFAZ DE COMPONENTES Memoria Memoria Control CS / RW Direcciones Datos 63
Periféricos Los periféricos usualmente tiene un controlador con un conjuntos de registros unos dedicados a control y otros al manejo de datos, el objetivo de interfazar dispositivos a los sistemas digitales es permitirle al CPU leer y escribir esos registros. Existen fundamentalmente dos formas de interfazar un periférico a un sistema: INTERFAZ DE COMPONENTES 1. Mediante el uso de buses (I2C, SPI, etc) unos dedicados al control y otros a los datos. 2. Mapeando los dispositivos en memoria así se escriben y leen los registros como si se tratara de posiciones de memoria RAM. 64
Interfaz de un periférico mediante buses Cuando se interfaza un periférico a un sistema mediante buses usualmente se emplean dos: un bus para control del dispositivo y otro para transmisión de datos masivos. El CPU se conecta mediante un bus a los controladores de los buses de control y datos, los controladores de los buses se conectan a su vez a los periféricos. Usualmente los buses de control empleados son SPI, I2C, entre otros, y los buses de datos son buses especializados, ya sean serie o paralelo. CPU Controlador de bus de control (SPI, I2C, etc) Periférico INTERFAZ DE COMPONENTES Controlador de bus de datos 65
Interfaz de un periférico mapeándolo en memoria Un alternativa para interfazar periféricos es mapeándolos en memoria, así el CPU puede leer y escribir los registros como si estuviera tratando con la memoria RAM, lo cual es más eficiente. Éste es el enfoque empleado en los SoC para interfazar los periféricos que están integrados en el propio SoC con el CPU. CPU Mapa de memoria INTERFAZ DE COMPONENTES Memoria RAM Reg val Reg id R/W Periférico Reg1 Reg2 Reg3 Periféricos Control CS / RW Direcciones Datos 66
4. COMPROMISOS ENTRE HARDWARE Y SOFTWARE
Las decisiones iniciales en software y hardware influyen hasta las etapas de producción. En general el proceso de diseño de un sistema empotrado inicia con el hardware (procesador). Una vez diseñado el hardware se inicia la implementación del software. La elección del microprocesador es el punto de partida para el diseño de un sistema empotrado, ya que determina las herramientas de hardware y software que emplearan, la experiencia necesaria del equipo de trabajo que desarrollará el sistema y el soporte de software necesario como base del sistema (bootloader, kernel). COMPROMISOS ENTRE HARDWARE Y SOFTWARE 68
Ahorrar hardware para disminuir costos puede aumentar demasiado el tiempo de programación. Sin embargo, emplear demasiado hardware incrementa el costo de producción. Los diseñadores en general poseen mayor expertise en una de las dos áreas, sea en software o hardware. La eficiencia de la implementación mejora cuanto más temprano se inicia el diseño del software. El tamaño y el tipo de memoria (NAND, NOR) influyen en el desarrollo del software. COMPROMISOS ENTRE HARDWARE Y SOFTWARE 69
Anderson, Don. USB Architecture.1997 Catsoulis, J. Designing Embedded Hardware. O Reilly. 2005. Wolf, W. Computers as components: Principles of embedded computing design. Morgan Kaufmann. 2007. Wolf, W. High-Performance Embedded Computing. Morgan Kaufmann. 2007. BIBLIOGRAFÍA 70