Logo Studenta

SE-COPIA - DraxCraber slvc

¡Este material tiene más páginas!

Vista previa del material en texto

Página 2
Sistemas Embebidos
Roberto Miguel Alzamora Mori,
Sergio Augusto Gaona Macedo,
Sergio Luis Vásquez Canayo y
Johann José Ríos Espinar.
Facultad de Ingeniería de Sistemas e Informática, Universidad Nacional de San Martín
0701060020: Arquitectura de Computadoras
Ing. Victor Alejandro Ávila Tuesta
10 de mayo del 2023
I. Objetivo General
El objetivo principal de este informe es evaluar la eficiencia y funcionalidad de los sistemas embebidos utilizados en una aplicación específica, para identificar sus fortalezas y debilidades y hacer recomendaciones para mejorar su desempeño y optimizar su operación en ese contexto específico. Para ello, se realizará un análisis detallado de los sistemas embebidos, teniendo en cuenta factores como la capacidad de procesamiento, la capacidad de almacenamiento, la facilidad de uso y la estabilidad del sistema, con el objetivo de determinar la idoneidad del sistema para la aplicación en cuestión.
Además, se espera que este informe ayude a mejorar la comprensión de los sistemas integrados y su relevancia en el mundo actual al enfatizar sus ventajas y limitaciones, así como su importancia en una variedad de áreas de aplicación. Se espera que este informe sea útil para los desarrolladores de sistemas embebidos, ingenieros y profesionales en campos relacionados, así como para los usuarios finales de estos sistemas, ya que proporcionará información valiosa para tomar decisiones informadas sobre la selección, implementación y optimización de sistemas embebidos en una variedad de contextos y aplicaciones.
II. Objetivos Específicos:
1. Evaluar la capacidad de procesamiento de los embebidos seleccionados para determinar su capacidad para gestionar las tareas requeridas en la aplicación.
2. Evaluar la capacidad de almacenamiento de los sistemas embebidos seleccionados para ver si es suficiente para la aplicación en cuestión.
3. Evaluar la estabilidad del sistema, incluyendo su capacidad para operar de manera confiable en condiciones adversas o en entornos hostiles.
4. Evaluar la facilidad de uso de los sistemas embebidos seleccionados, incluyendo la interfaz de usuario y la facilidad de integración en la aplicación.
5. Identificar las fortalezas y debilidades de los sistemas embebidos evaluados, y proporcionar recomendaciones para mejorar su desempeño y optimizar su operación en el contexto específico.
6. Proporcionar información sobre las tendencias actuales y futuras en el campo de los sistemas embebidos, incluyendo nuevas tecnologías y aplicaciones emergentes.
7. Ofrecer sugerencias para la selección, implementación y mantenimiento de sistemas embebidos en la aplicación en cuestión, incluyendo información sobre herramientas y recursos disponibles.
III. Desarrollo
III.I. Definición del Sistema Embebido (SE)
Es una máquina computacional que está basado en los microprocesadores, cuyo uso es controlar una o varias funciones y que no permite ser programado por el usuario final, por lo que su resultado se asemeja a la gran mayoría de computadoras personales.
Un sistema embebido es aquel que no tiene una función informática primaria, sino que está controlado por una computadora integrada. Esta computadora puede ser un microcontrolador o un microprocesador. El término "embebido" implica que algo está oculto dentro del sistema más grande.
Es parte de un sistema más grande que puede ser o no una computadora y funciona en un entorno dinámico con limitaciones de tiempo. El software de estos sistemas se utiliza para proporcionar flexibilidad y funcionalidad. El hardware (procesadores, ASIC, memorias, entre otros) se utiliza para proporcionar rendimiento y, en algunos casos, seguridad.
También hay que mencionar que es una combinación de Hardware y Software, como definimos en primera instancia es programado por lenguaje ensamblador. Algunos ejemplos de sus aplicaciones: ascensores, máquinas dispensadoras de combustible, cámaras digitales, consolas de videojuegos, audífonos con Bluetooh, satélites, entre otros.
Puede ser un sistema independiente o parte de un sistema más grande, y debido a que su software a menudo se almacena en ROM (memoria de solo lectura), no requiere memoria secundaria como una computadora. Un sistema integrado consta de tres componentes principales: Hardware, Software y un sistema operativo.
Este último permite la supervisión de aplicaciones, así como mecanismos de ejecución de procesos. Muchos sistemas integrados requieren que el sistema operativo tenga características de tiempo real. 
Es importante tener en cuenta que el software que se ejecuta en un sistema integrado está diseñado teniendo en cuenta varias restricciones: primero, pequeñas cantidades de memoria, generalmente en el rango de KB, segundo, potencia de procesamiento limitada (generalmente, los procesadores tienen velocidades que no superan el rango de Mhz), y tercero, la necesidad de limitar el consumo de energía en cualquier momento esté en uso o no.
III.II Características de un Sistema Embebido
Las características de los sistemas embrionarios los distinguen de otros sistemas informáticos; investigaremos los más cruciales.
III.II.I. Funcionalidad Específica.
Un sistema embebido a menudo ejecuta una determinada aplicación de manera repetitiva. Por ejemplo, un buscapersonas siempre es un buscapersonas. Por el contrario, un sistema de oficina ejecuta una amplia gama de programas, como calculadoras, juegos, etc.; además, con frecuencia se agregan nuevos programas. Puede haber excepciones; por ejemplo, el programa del sistema integrado puede actualizarse a una versión más reciente. Por ejemplo, un teléfono celular puede actualizarse de varias maneras.
III.II.II. Limitaciones Severas. 
Todos los sistemas informáticos tienen limitaciones en sus métricas de diseño, pero los sistemas integrados son extremadamente potentes. Una métrica de diseño es una medida de ciertas características de implementación, como el costo, el tamaño, el rendimiento y el consumo de energía. En general, los sistemas integrados deben ser económicos, ocupar poco espacio, funcionar bien al procesar datos en tiempo real y consumir la menor cantidad de energía posible para extender la vida útil de las baterías y evitar la necesidad de elementos de enfriamiento adicionales.
III.II.II. Reactividades y Tiempo en Tiempo Real. 
Muchos sistemas embebidos deben reactivarse o reaccionar ante cambios en el entorno, además de hacer algunos cálculos en tiempo real sin demora, es decir, deben tener resultados en plazos fijos ante cualquier eventualidad. Por ejemplo, el módulo de control de crucero de un automóvil monitorea constantemente los sensores de velocidad y proximidad del vehículo, preparándose para cualquier eventualidad. Ante un estímulo anormal, el módulo de control debe realizar cálculos precisos y rápidos para garantizar la entrega de resultados en un tiempo determinado; el no hacerlo puede resultar en la pérdida de control del vehículo. Por el contrario, un sistema de almacenamiento se centra en realizar cálculos con una frecuencia y un retraso desconocidos, dichas demoras en los mismos no resultan en fallas del sistema.
III.III. Hardware
El término hardware se refiere a los componentes físicos que componen un sistema; estos componentes permiten que un sistema realice un conjunto de tareas a través de programas o software en ejecución.
Los componentes físicos de un sistema difieren en varios aspectos de los que componen un sistema de propósito general, como una computadora servidor, en términos de tamaño, capacidad de cómputo, requisitos de energía, etc. Por esta razón, comprender la funcionalidad del hardware es fundamental para desarrollar sistemas integrados y las aplicaciones que se ejecutarán en ellos. A continuación, se estudiarán los aspectos más importantes del hardware que se suele utilizar en los sistemas embebidos.
III.III.I. Microprocesadores.
La tecnología de procesadores se ocupa del diseño del núcleo computacional utilizado para lograr las funciones deseadas del sistema. Un microprocesador, por ejemplo, "esun componente LSI que realiza una gran cantidad de funciones o tareas en una sola pieza de circuito integrado".
Es decir, las tareas de Software se llevan a cabo en los procesadores. Sus características, como la longitud de los buses de datos y direcciones, la arquitectura y la velocidad, varían según la aplicación. Sin embargo, es fundamental que sea capaz de realizar operaciones JTAG que permitan funciones de purificación y proporcionen acceso al exterior.
El término LSI (Large Scale Integration) se refiere a una tecnología que permite la integración de miles de transistores en un solo circuito integrado. Otra definición de microprocesador podría ser un "componente LSI que integra las funciones de una unidad aritmeticológica y la unidad de control asociada".
III.III.II. Procesadores de Propósito General.
Un procesador de propósito general, también conocido como microprocesador, es un dispositivo programable que se puede utilizar para una amplia gama de aplicaciones. Una de sus características es que cuentan con memoria para la ejecución de programas; este componente es necesario porque se desconoce qué programa se ejecutará de antemano. Otra característica es que tienen una ruta de datos genérica compuesta por muchos registros y una o más ULA (Unidad Lógica Aritmética). Todo esto hace posible ejecutar aplicaciones para una variedad de propósitos. 
III.III.III. Procesadores de Propósito Específico.
Un procesador dedicado es un circuito digital diseñado para ejecutar exactamente un determinado programa. Por ejemplo, un codificador/descodificador JPEG, que ejecuta un software que comprime y descomprime cuadros de video. Este tipo de procesador se utiliza con frecuencia en sistemas embebidos ya que se adapta completamente a las funciones requeridas. Este tipo de procesador se denomina con frecuencia coprocesador, acelerador o periférico.
Entonces, algunos sistemas operativos requieren ciertos periféricos para funcionar correctamente. Otros ejemplos como un RTC (reloj en tiempo real), un PIC (controlador de interrupción programable) y un puerto serie como herramienta de diagnóstico. En el mundo actual, los procesadores incluyen algunos periféricos que ayudan en la implementación de aplicaciones comunes, como: controladores de LCDs, tarjetas de red, timers, USARTs, codificadores de audio, controlador de touch screen, puertos I2C, SPI, IR.
III.III.IV. Procesador Específico de Aplicación.
Un procesador de conjunto de instrucciones específico de la aplicación (ASIP - Application Specific Instruction Set Processor) es un compromiso entre las opciones anteriores. Un ASIP es un procesador programable optimizado para una determinada clase de aplicaciones que tienen características comunes, como el procesamiento de señales digitales o las telecomunicaciones. Por lo tanto, es posible optimizar la ruta de datos para una determinada clase de aplicaciones agregando unidades funcionales especializadas para aplicaciones comunes y eliminando las que se utilizan con poca frecuencia.
Actualmente, los desarrolladores de PLD como Xilinx y Altera ofrecen otra opción: en lugar de utilizar un procesador y una FPGA para implementar funciones HW, el procesador se implementa dentro de la FPGA, lo que reduce el tamaño de la tarjeta y aumenta el rendimiento y la flexibilidad del sistema. Se requiere memoria externa.
III.III.V. Microcontrolador.
Un microcontrolador es un circuito integrado que contiene muchas de las mismas capacidades que una computadora de escritorio, como la CPU (Unidad central de proceso), la memoria, etc., pero no tiene ningún dispositivo de comunicación humano-computadora (monitor, teclado, entre otros).
Un microcontrolador es un tipo de procesador ASIP que se ha utilizado durante muchas décadas. Un microcontrolador es un microprocesador que ha sido optimizado para aplicaciones de control integradas. Estas aplicaciones a menudo monitorean y almacenan varias señales de control de un solo bit, pero no realizan cálculos exhaustivos.
Como resultado, los microcontroladores tienden a tener rutas de datos simples que se destacan en las operaciones a nivel de bits, como la lectura y escritura a nivel de bits. Además, algunos componentes periféricos utilizados en el control de aplicaciones, como periféricos de comunicación en serie, temporizadores, contadores, moduladores de amplitud de pulso, etc., tienden a incorporarse en el chip del microprocesador. Esta integración de periféricos permite la implementación de un solo chip, lo que resulta en productos de menor costo. Los MCS-48 y MCS-51 de Intel son dos ejemplos de microcontroladores.
III.III.VI. Sensores.
Un sensor es un dispositivo eléctrico y/o mecánico que convierte magnitudes físicas en valores medibles de dicha magnitud. Los sensores van a aportar información tanto del entorno como del estado interno del componente que mide. [CITARRRRRR]
Normalmente, una medida debe transformarse antes de que pueda interpretarse. Este procedimiento se divide en tres etapas:
1. Un fenómeno físico es captado por un sensor, y como resultado, a su salida se muestra un sello eléctrico correspondiente al fenómeno captado.
2. El sello eléctrico es modificado por un sistema de ajuste del sello, cuya salida es un voltaje que se convierte para ser tratado mediante un convertidor analógico/digital (A/D).
3. El convertidor A/D solo es sensible a un rango limitado de tensiones, generalmente de 0 a 5V. El convertidor transforma la salida continua en una salida discreta.
Varios tipos de sensores, como sensores de luz, sensores táctiles, sensores de temperatura, etc., se usan comúnmente en los sistemas embebidos.
III.III.VII. Memoria
Cualquiera de las funciones de los sistemas embebidos se compone de tres componentes: procesamiento, almacenamiento y comunicación. El término "procesamiento" se refiere a la transformación de datos, "almacenamiento" se refiere al almacenamiento de datos para su uso posterior y "comunicación" se refiere al transporte de datos. Cada uno de estos elementos debe ser implementado. Los procesadores se utilizan para el procesamiento, la memoria para el almacenamiento y los buses para la comunicación. Esta sección describe el elemento de memoria.
III.III.VII.I. Organización de memoria. La celda es un componente fundamental de la memoria. A pesar de que se utilizan diferentes tecnologías electrónicas, todas las tarjetas de memoria tienen algunas características. Hay dos estados estables que se pueden usar para representar los números binarios 1 y 0. Puede escribirse en ellas (al menos una vez) para fijar su estado. Pueden leerse para detectar su estado.
La celda debe tener tres terminales para el transporte de cargas eléctricas. El terminal de selección selecciona la celda, permitiéndole realizar una operación de escritura o lectura. El terminal de control indica si la operación es una lectura o una escritura. El tercer terminal proporciona el sello para establecer el estado de la celda en 1 o 0. El tercer terminal se usa para salir del estado de la celda durante la lectura.
III.III.VII.II. Tipos de memoria. Principalmente son las RAM y el ROM, aunque existen variantes de cada una, a continuación, se las analizaran.
III.III.VII.II.I. Memoria RAM. Una de las características distintivas de la memoria RAM (memoria de acceso aleatorio) es la capacidad de leer y escribir datos rápidamente. Otra característica distintiva de la memoria RAM es su movilidad. Una memoria RAM siempre debe ser alimentada por una corriente eléctrica; si se interrumpe la alimentación, los datos se pierden.
RAM dinámica (DRAM - Dynamic RAM) y RAM estática (SRAM - Static RAM) son las dos formas básicas de memoria de acceso aleatorio. Una DRAM está hecha de celdas que almacenan datos como cargas eléctricas en condensadores. La presencia o ausencia de una carga en un condensador se interpreta como un 1 o un 0 binario. Debido a que los condensadores tienen una tendencia natural a descargarse, la DRAM requiere actualizaciones periódicas para mantener los datos almacenados en la memoria. SRAM es un dispositivodigital basado en los mismos elementos que se utilizan en los procesadores. En una SRAM, los valores binarios se almacenan mediante flip-flops, que mantienen activos sus datos mientras se mantienen alimentados.
Otros tipos de RAM incluyen RAM pseudoestática (PSRAM - RAM pseudoestática) y RAM no volátil (NVRAM - RAM no volátil). PSRAM es una DRAM con un refrescador de control de memoria integrado. NVRAM es un tipo particular de RAM que puede guardar datos incluso después de que se haya quitado la fuente de alimentación. Esto se logra almacenando los valores en una memoria EEPROM (explicado en la siguiente sección) justo antes de perder energía.
III.III.VII.II.II. Memoria ROM. Una memoria de solo lectura (ROM - Read Only Memory) tiene un patrón de datos permanente que no se puede cambiar. Una ROM no es portátil. Además, se usa comúnmente para almacenar subrutinas de la biblioteca para funciones de uso frecuente, programas del sistema, entre otros, para evitar la pérdida de alimentos.
ROM programado por máscara. Cuando se fabrica el chip, se programan las conexiones, dando como resultado una adecuada combinación de máscaras.
OTP ROM significa ROM programable de una sola vez. Una vez fabricado el chip, un diseñador puede programarlo en un laboratorio. La ROM OTP más básica utiliza un fusible para conexiones programables; estos fusibles están diseñados para representar el valor 0 en binario.
EPROM significa ROM programable borrable. Como componente programable, este dispositivo emplea un transistor. Esto se lee y escribe electrónicamente, pero para que se borre, debe exponerse a la luz ultravioleta para reasignar carga negativa a todas las celdas.
EEPROM significa ROM programable borrable eléctricamente. Debido a que permite actualizaciones a nivel de byte, esta memoria permite escribir en cualquier momento sin borrar el contenido anterior. La eliminación de datos se logra con una escritura específica en los bytes de memoria de destino.
Flash. Esta memoria se introdujo a finales de la década de 1980 como una mejora de las memorias EEPROM. Su funcionamiento es idéntico al de su antecesor, con una importante mejora en la velocidad de lectura y escritura.
III.IV. Software
Hay varios procesadores y FPGA disponibles comercialmente que cumplen con los requisitos anteriores; no obstante, es fundamental contar con las herramientas necesarias para realizar diseños sobre el procesador seleccionado. Las herramientas necesarias para generar el contenido de la memoria del programa se enumeran más abajo.
III.IV.I. Compilador.
 Aunque el lenguaje del compilador ayuda en la optimización del tiempo de ejecución de funciones críticas, no se recomienda su uso como herramienta de programación porque el tiempo requerido para implementar un diseño complejo puede ser largo (dependiendo de la experiencia de los programadores). Además, el lenguaje del compilador crea una dependencia tecnológica porque está vinculado a un procesador específico.
El uso de lenguajes de alto nivel como C++ o UML reduce el tiempo de programación, facilita la reutilización y aumenta la portabilidad del código. Cuando se utiliza un lenguaje de programación estándar como C o C++ como herramienta de programación, el código puede recibirse en diferentes proyectos que involucran diferentes procesadores; lo único que se debe considerar es un compilador que permita generar contenido de memoria de programa para varias plataformas.
El compilador gratuito GCC (GNU Project C and C++ compiler) se ha utilizado para desarrollar un gran número de aplicaciones comerciales y ha demostrado ser muy fiable. Como resultado, uno de los factores a considerar al elegir un procesador es si es compatible con GCC. Actualmente, GCC admite los siguientes procesadores: ALPHA, ARM, MIPS, M68K, SPARC, PPC, DSP16XX, H8300, INTEL, MMIX, BLAZE y otros.
III.IV.II. Binutils.
La mayoría de esta información no es necesaria para la ejecución del programa; “solo las secciones .data .rodata y .text, para «extraer» estas secciones del ejecutable se utilizan una serie de herramientas (binutils) que hacen parte de la cadena de herramientas GNU.” [CITARRRRRRRRRRR].
III.IV.III. Depurador.
GDB (GNU Debugger) le permite depurar código ejecutando instrucciones una por una y mostrando los valores de registros y variables internas. GDB tiene una ventaja significativa en que permite la depuración dentro del chip, lo que significa que ejecuta instrucciones dentro del procesador, lee los valores de registros y variables y devuelve esta información. Esto es importante porque no simula el comportamiento del procesador, sino que devuelve datos del mundo real. GDB puede comunicarse con los procesadores en una variedad de formas, la más común es la serie de puertos y JTAG. GDB le permite descargar el programa a la memoria RAM del procesador para hacer este tipo de depuración. ARMTOOL es otra herramienta que puede usarse para esto.
III.IV.IV. Programación de la memoria no volátil.
La distribución oficial del GDB no puede programar memorias no volátiles; sin embargo, proporciona un canal a través del cual se puede realizar dicha programación. Un programa que programe esta memoria se puede cargar en la RAM.
III.IV.V. JTAGER.
Es una herramienta que proporciona un enlace entre la interfaz JTAG del procesador y la PC, lo que le permite programar estas memorias a través de JTAG.
III.IV.VI. Herramientas de síntesis.
Como herramienta de síntesis se puede utilizar cualquier herramienta comercial, incluso las disponibles en versiones gratuitas.
III.IV.VII. RTOS.
El sistema operativo es muy crucial en el diseño de un SE ya que debe proporcionar las siguientes funciones: 	Secuencia de arranque, control de interrupciones, control de excepciones, control de temporizadores, programador de tareas y elementos de sincronización, mecanismos de arbitraje de recursos, gestión de la memoria, trazado de tareas y servicios, manejo de dispositivos hardware y herramientas de autodiagnóstico.
III.V. Principios de un Diseño de un Sistema Embebido
El diseñador de un sistema embebido debe crear una implementación que satisfaga la necesidad deseada. Sin embargo, un desafío adicional es desarrollar una implementación de diseño que optimice muchas métricas de diseño al mismo tiempo. Un microprocesador con un software adjunto, una conexión digital o una combinación de ambos constituye una implementación.
La barrera más importante para superar al crear diseños con sistemas embebidos es el alto costo de las herramientas de desarrollo.
Una métrica de diseño es una característica medible de la implementación del sistema. Las métricas comunes incluyen:
1. Costos NRE (Ingeniería No Recurrente). El costo monetario de diseñar el sistema por primera vez. Una vez que se ha diseñado el sistema, se puede fabricar cualquier número de unidades sin incurrir en costos de diseño adicionales.Precios unitarios. El costo monetario de producir cada copia del sistema, excluyendo el costo de NRE.
2. Tamaño. El espacio físico requerido por el sistema, a menudo medido en bytes para software y componentes o transistores para hardware.
3. Desempeño. La duración de la ejecución del sistema.
4. Energía. La cantidad de energía consumida por el sistema, que podría afectar la vida útil de la batería.
5. Flexibilidad. La capacidad de cambiar la funcionalidad del sistema sin incurrir en un costo NRE significativo.
6. Es hora de crear un prototipo. El tiempo requerido para construir una versión funcional del sistema.
7. Tiempo para los negocios. El tiempo requerido para desarrollar un sistema hasta el punto en que pueda ser lanzado al mercado.
8. Mantenimiento. La capacidad de modificar un sistema después de su lanzamiento inicial, especialmente por parte de diseñadores que no participaron en el diseño original.
9. Correctitud. Confía en que la funcionalidad del sistema es correcta.
10. La probabilidad de que el sistema no cause daño.
Las métricas anteriores deben tenerse en cuenta al diseñar un sistema integrado; sin embargo, las métricas normalmente compiten entre sí.La mejora de una métrica generalmente resulta en la degradación de otra. Por ejemplo, si se reduce el tamaño de una implementación, su rendimiento puede verse afectado.
III.VI. Aplicaciones de un Sistema Embebido
Nos deberíamos hacer la siguiente pregunta para este punto, ¿En dónde no se usan los Sistemas Embebidos?, pues en la vida actual convivimos con estos dispositivos veamos sus aplicaciones: electrodomésticos (microondas, contestadoras, termostatos, lavadoras, entre otros.), equipos de oficina (fax, copiadoras, impresoras, scanners), equipos comerciales (caja registradora, sistemas de alarma, tarjeta y caje, etc.). Es posible afirmar que casi cualquier dispositivo que use electricidad o tenga un sistema informático ya lo tiene o lo tendrá próximamente.
III.VII. Sistemas Operativos Embebidos
Un sistema operativo es un programa que se ejecuta permanentemente en un dispositivo, brindando una capacidad de abstracción para los usuarios , ocultando el hardware del sistema y encargarse de la administración de sus recursos.
Un sistema operativo integrado es aquel que se ejecuta sobre un sistema descrito anteriormente. Los sistemas operativos incorporados generalmente se ejecutan en dispositivos que difieren de una computadora estándar, como televisores, hornos de microondas y teléfonos móviles. A menudo tienen ciertas características de los sistemas en tiempo real, pero también tienen limitaciones de tamaño, memoria y energía que los hacen únicos.
Algunos sistemas integrados incluyen un sistema operativo, a veces conocido como sistema operativo integrado. Puede tratarse de una pequeña pieza de software desarrollada específicamente para su uso con un sistema integrado específico, o podría ser una versión reducida de un sistema operativo utilizado en una computadora de propósito general.
Un sistema en ejecución se define como una pieza de software que permite que las abstracciones de hardware, como la memoria volátil, los ciclos del procesador, los dispositivos de entrada/salida, etc., se multiplexen para los programas de aplicación. Un sistema operativo optimizado debe realizar las operaciones descritas anteriormente, pero en un entorno donde los programas de aplicación enfrentan varias limitaciones, particularmente en términos de tiempo y consumo de energía.
Un sistema operativo para un sistema integrado a menudo se diseña para un uso específico y, por lo tanto, es más estable que un sistema operativo para fines generales.
Para comprender claramente el funcionamiento de un sistema embebido, se estudiará cómo varias implementaciones manejan las abstracciones fundamentales del sistema. Se estudiarán en particular los sistemas QNX, Linux Embedded y Windows CE.
QNX es un sistema operativo integrado desarrollado por QNX Software Systems Ltd para aplicaciones como dispositivos electrónicos, sistemas de telecomunicaciones, sistemas automotrices, etc., que requieren alta confiabilidad, rendimiento, funciones especializadas y escalabilidad masiva.
Linux embebido es un sistema Linux típico en el que se han eliminado programas de utilidad, herramientas y otros servicios del sistema porque ya no son necesarios en un entorno embebido.
Windows CE se introdujo en 1996 como una colección de productos de PC hechos a mano, pero luego se convirtió en un sistema operativo altamente flexible. Entre sus beneficios está la inclusión de un subconjunto de la API Win32 orientado a los servicios de uso común, así como la optimización del consumo de energía.
III.VII.I Arquitectura.
Los sistemas operativos integrados utilizan una arquitectura de micronúcleo o una arquitectura modular, lo que los hace fácilmente adaptables a los diferentes requisitos de las aplicaciones.
QNX contiene un pequeño microkernel rodeado por una red de procesos cooperativos que brindan servicios de alto nivel. El microkernel de QNX proporciona cuatro servicios, el primero de los cuales es la comunicación de procesos. De acuerdo con la comunicación de red de bajo nivel. El cuarto paso es la planificación del proceso. Cuarto, gestione las interrupciones. Los procesos de servicio del sistema operativo son opcionales y el usuario puede elegir cuáles son necesarios para sus aplicaciones.
La arquitectura de Windows CE es desigual. Los controladores del dispositivo se encuentran en segundo plano.
El sistema de gráficos, las puertas y los eventos, el núcleo y la pila de comunicación se construyen sobre ellos. El sistema de archivos se encuentra en la parte superior del kernel. Las aplicaciones se ejecutan en su propio espacio de direcciones e interactúan con el resto de Windows CE a través de la API de Win32.
Linux tiene una estructura modular que se complementa con módulos. Estas secciones generalmente incluyen el kernel de Linux, el sistema de archivos, los controladores de dispositivos y los protocolos de red. Linux Embedded toma el kernel de Linux y elimina los módulos que ya no son necesarios. Dentro del límite del núcleo, Linux se compone de cinco subsistemas principales: el planificador de procesos, el administrador de memoria, el sistema de archivo virtual, la interfaz de red y el proceso de comunicación.
III.VII.II. Manejo de procesos.
El administrador de procesos en QNX no reside en el microkernel QNX. A pesar de compartir el mismo espacio de direcciones que el microkernel, el administrador de procesos opera como otro proceso planificado por el microkernel, utilizando el paso de mensajes primitivos para comunicarse con otros procesos en el sistema. El gestor de procesos es el encargado de crear procesos y gestionar sus recursos, así como de tomar las siguientes decisiones.
1. Atender a un proceso que sale del estado bloqueado.
2. Gestionar la expiración de la ranura de tiempo de ejecución asignada a un proceso.
3. Desalojar a un proceso del procesador.
Cada proceso en QNX tiene una prioridad, según la cual el planificador ordena.
Windows CE admite tanto procesos como archivos. La planificación de los hilos se realiza de manera unida utilizando restricciones de tiempo, así como asignando ocho niveles diferentes de prioridad a los hilos. Esto significa que Windows CE es un sistema operativo multitarea que permite ejecutar muchas aplicaciones o procesos al mismo tiempo (hasta 32 procesos).
Cada proceso en QNX tiene una prioridad, que es determinada por el planificador.
Windows CE admite tanto procesos como archivos. Los hilos se planifican de manera unificada utilizando limitaciones de tiempo y asignando ocho niveles diferentes de prioridad a los hilos. Esto significa que Windows CE es un sistema operativo multitarea que puede ejecutar muchas aplicaciones o procesos al mismo tiempo (hasta 32 procesos).
III.VII.III. Comunicación entre procesos.
QNX se comunica entre procesos a través del paso de mensajes. Las primitivas soportadas por QNX recolectan datos directamente de proceso a proceso, eliminando la necesidad de colas o mecanismos intermediarios, permitiendo que el desempeño en el paso de mensajes se acerque a la capacidad de la memoria. En los sistemas tradicionales de paso de mensajes, los datos suelen ocupar un área de memoria contigua; sin embargo, las primitivas QNX para mensajes de varias partes permiten que el mensaje resida en áreas de memoria no contiguas.
Windows CE admite el paso de mensajes entre procesos, así como la asignación de memoria y el uso compartido entre procesos. Esta propiedad hace que la comunicación entre procesos cooperantes sea muy rápida, lo cual es deseable para algunas aplicaciones de tiempo limitado.
Linux integrado puede incorporar todos los mecanismos típicos de paso de mensajes de un sistema Linux convencional. Algunos de estos mecanismos son:
1. Señales. Mecanismo para la emisión de mensajes asíncronos entre procesos.
2. Pipes (Tuberías). Primitiva que permite una comunicación orientada a la conexión bidireccional, entre dos procesos.
3. System V IPC (Semáforos). Mecanismo de comunicación entre procesos utilizado para controlar accesos a regiones compartidas.
En Linux, los usuarios pueden elegir entre una variedadde mecanismos de comunicación entre procesos (algunos de los cuales ya se han mencionado); esto es cierto ya sea que estas funciones estén integradas en el sistema operativo como parte del kernel o como un módulo.
III.VII.IV. Manejo de memoria.
La mayoría de los sistemas operativos convencionales actuales utilizan memoria virtual paginada, donde la página es la unidad de protección y asignación de memoria. El uso de procesos y protección de memoria en sistemas embebidos es crítico; si se usa un solo espacio de direcciones para todas las aplicaciones, una falla de software en una aplicación puede dañar la memoria, lo que resulta en una falla del sistema.
La desventaja es que la protección de la memoria requiere que la CPU admita MMU (Unidad de administración de memoria), lo que da como resultado una CPU más compleja.
A diferencia de los sistemas operativos convencionales, la mayoría de los sistemas operativos integrados se centran en una única CPU que normalmente carece de MMU. Además, el resto del sistema tiene poca memoria, con poco o ningún espacio en disco; por lo tanto, la memoria virtual rara vez se usa. Por ejemplo, los sistemas integrados de Linux y QNX no proporcionan paginación, lo que significa que los datos, el texto y la pila comparten la misma cantidad de memoria. Esto implica que no hay protección de memoria; por ejemplo, la pila puede crecer hasta ocupar el espacio reservado para texto o datos; o un proceso podría leer o escribir datos de otro proceso.
Windows CE, por otro lado, tiene un sistema de administración de memoria más sofisticado. Admite memoria virtual parcialmente paginada (esto requiere compatibilidad con TLB (Translation Lookaside Buffer) en la CPU) y protección de memoria en los niveles de proceso y jerarquía.
III.VII.V. Soporte de red.
El soporte de red es vital en los sistemas integrados porque les permite comunicarse con el mundo exterior y mantenerse actualizados. QNX tiene comunicación de red de bajo nivel en su microkernel; Windows CE tiene muchas capas de comunicación a nivel de kernel (IP, PPP, IrDA, etc.).
Linux, por otro lado, ha heredado el soporte de red de los entornos cliente/servidores soportados por Linux, proporcionando infraestructura de red y protocolos de Internet.
IV. Conclusiones
Es fundamental realizar pruebas de rendimiento y evaluación de las especificaciones técnicas de los sistemas embebidos para determinar su capacidad de procesamiento y almacenamiento. Esto ayudará a garantizar que el sistema elegido sea capaz de manejar las tareas requeridas en la aplicación y que tenga suficiente espacio de almacenamiento.
La estabilidad del sistema es un factor crítico a considerar, especialmente si se espera que el sistema opere en entornos hostiles o condiciones adversas. Es importante realizar pruebas exhaustivas de estabilidad y considerar la calidad de los componentes y el diseño del sistema.
La facilidad de uso y la integración en la aplicación son factores importantes a considerar para garantizar que el sistema embebido pueda ser utilizado con eficacia y eficiencia por los usuarios. Las pruebas de usabilidad y las entrevistas con los usuarios pueden ser útiles para evaluar estos aspectos.
Es importante identificar las fortalezas y debilidades de los sistemas embebidos evaluados, y hacer recomendaciones para mejorar su desempeño y optimizar su operación en el contexto específico. La comparación con otros sistemas embebidos disponibles en el mercado puede ser útil para identificar áreas de mejora.
Es fundamental estar al día con las tendencias actuales y futuras en el campo de los sistemas embebidos, incluyendo nuevas tecnologías y aplicaciones emergentes. Esto puede ayudar a garantizar que la aplicación esté utilizando la tecnología más actualizada y adecuada para su propósito.
Finalmente, se recomienda revisar las mejores prácticas y estándares del sector, y considerar el costo, la escalabilidad y la disponibilidad de soporte técnico y recursos adicionales al seleccionar, implementar y mantener sistemas embebidos. Esto puede ayudar a garantizar una implementación exitosa y un mantenimiento adecuado del sistema a largo plazo.
V. Recomendaciones
1. Para evaluar la capacidad de procesamiento de los sistemas embebidos seleccionados, se recomienda utilizar herramientas de benchmarking y pruebas de rendimiento específicas para el tipo de aplicación en cuestión. También es importante considerar las especificaciones técnicas del sistema embebido, como el procesador y la memoria RAM, para determinar su capacidad de procesamiento.
1. Para evaluar la capacidad de almacenamiento de los sistemas embebidos seleccionados, se recomienda revisar las especificaciones técnicas de almacenamiento y hacer pruebas de escritura y lectura de datos. Además, es importante considerar si el tipo de almacenamiento (por ejemplo, flash o disco duro) es adecuado para la aplicación en cuestión.
1. Para evaluar la estabilidad del sistema, se recomienda llevar a cabo pruebas de estabilidad en diferentes condiciones, incluyendo situaciones adversas o en entornos hostiles. También es importante considerar la calidad de los componentes y el diseño del sistema embebido.
1. Para evaluar la facilidad de uso de los sistemas embebidos seleccionados, se recomienda llevar a cabo pruebas de usabilidad y realizar entrevistas con los usuarios. Es importante considerar la interfaz de usuario y la facilidad de integración en la aplicación en cuestión.
1. Para identificar las fortalezas y debilidades de los sistemas embebidos evaluados, se recomienda hacer una revisión exhaustiva de las especificaciones técnicas y llevar a cabo pruebas en diferentes escenarios. También es importante considerar las opiniones de los usuarios y hacer comparaciones con otros sistemas embebidos disponibles en el mercado.
1. Para proporcionar información sobre las tendencias actuales y futuras en el campo de los sistemas embebidos, se recomienda realizar una investigación exhaustiva en línea, asistir a conferencias y eventos relevantes, y leer publicaciones especializadas. También es importante estar al día con las últimas tecnologías y aplicaciones emergentes.
2

Otros materiales