“Software Embebido”
Curso:
- Ingeniería de Software Profesor:
- Alarcón García, Roger Ernesto Nombres y Apellidos:
- Aragón Guevara, Manuel Eduardo Ciclo:
- 2017 - II
Indice Contenido 1. Introducccion: ........................................................................................................... 3 2.
3.
4.
Sistema embebido ..................................................................................................... 3 2.1.
Concepto general: .............................................................................................. 3
2.2.
Construcción: ..................................................................................................... 3
Características de un Sistema Embebido:................................................................. 3 3.1.
Características básicas: ...................................................................................... 3
3.2.
Interfaces: ........................................................................................................... 4
3.3.
Plataforma de sistemas embebidos .................................................................... 4
3.3.1.
Linux en sistemas embebidos ..................................................................... 4
3.3.2.
Windows XP para sistemas embebidos ...................................................... 4
3.3.3.
Java también para sistemas embebidos ...................................................... 5
3.3.4.
Algunos ejemplos de Sistemas embebidos en distintas plataformas: ......... 5
3.4.
Comunicación: ................................................................................................... 5
3.5.
Herramientas para probar y corregir (depuración): ........................................... 6
Componentes típicos de software embebido ............................................................ 6 4.1.
Middleware: ....................................................................................................... 6
5.
Arquitectura del software Embebido ........................................................................ 7
6.
Comparativa entre un SO tradicional y un EOS ....................................................... 9
7.
Sistemas embebidos de tiempo Real ........................................................................ 9
8.
7.1.
Características de los sistemas de tiempo real ................................................... 9
7.2.
Ejemplos de sistemas operativos embebidos y de tiempo real ........................ 10
7.2.1.
Windows XP Embedded........................................................................... 10
7.2.2.
RTLinux ................................................................................................... 10
7.2.3.
ChorusOS ................................................................................................. 11
7.2.4.
VxWorks................................................................................................... 12
7.2.5.
QNX ......................................................................................................... 12
7.2.6.
S. O. µlTRON ........................................................................................... 12
7.2.7.
Windows Embedded CE........................................................................... 12
7.2.8.
Freerto....................................................................................................... 13
7.2.9.
NetBSD..................................................................................................... 13
7.2.10.
OpenBSD .............................................................................................. 13
7.2.11.
Linux empotrado (Embedded Linux) ................................................... 14
Arquitectura Prism en sistemas embebidos ............................................................ 14 8.1.
Propiedades de Prism: ...................................................................................... 14
8.2.
Beneficios de Prims: ........................................................................................ 14
1. Introducccion: En el siguiente informe se hablará sobre los softwares embebidos, su arquitectura y estructrura, su uso y los tipos de sistemas que existen, también que métodos de implementación se usan para desarrollarlos y los lenguajes de programación usados. 2. Sistema embebido 2.1. Concepto general: Un sistema embebido o empotrado (integrado, incrustado) es un sistema de computación diseñado para realizar una o algunas pocas funciones dedicadas, frecuentemente en un sistema de computación en tiempo real. Al contrario de lo que ocurre con los ordenadores de propósito general (como por ejemplo una computadora personal o PC) que están diseñados para cubrir un amplio rango de necesidades, los sistemas embebidos se diseñan para cubrir necesidades específicas. En un sistema embebido la mayoría de los componentes se encuentran incluidos en la placa base (tarjeta de vídeo, audio, módem, etc.) y muchas veces los dispositivos resultantes no tienen el aspecto de lo que se suele asociar a una computadora. Algunos ejemplos de sistemas embebidos podrían ser dispositivos como un taxímetro, un sistema de control de acceso, la electrónica que controla una máquina expendedora o el sistema de control de una fotocopiadora entre otras múltiples aplicaciones. 2.2. Construcción: Los Sistemas Embebidos suelen tener en una de sus partes una computadora con características especiales conocida como microcontrolador que viene a ser el cerebro del sistema. Este no es más que un microprocesador que incluye interfaces de entrada/salida en el mismo chip. Normalmente estos sistemas poseen una interfaz externa para efectuar un monitoreo del estado y hacer un diagnóstico del sistema. Por lo general, los Sistemas Embebidos se pueden programar directamente en el lenguaje ensamblador del microcontrolador o microprocesador incorporado sobre el mismo, o también, utilizando los compiladores específicos que utilizan lenguajes como C o C++ y en algunos casos, cuando el tiempo de respuesta de la aplicación no es un factor crítico, también pueden usarse lenguajes interpretados como Java.
3. Características de un Sistema Embebido: 3.1. Características básicas: Las características básicas de los sistemas embebidos son las siguientes: Deben ser confiables, - La confiabilidad, en inglés reliability R(t), es la probabilidad de que el sistema trabaje correctamente dado que está funcionando en t=0. La mantenibilidad, en inglés Maintainability M(d), es la probabilidad de que el sistema vuelva a trabajar correctamente d unidades de tiempo después de un fallo.
La disponibilidad, en inglés Availability A(t), es la probabilidad de que el sistema esté funcionando en el tiempo t. - La seguridad informática: consiste en disponer de una comunicación confidencial y autentificada. La creación de un sistema confiable debe ser considerada desde un comienzo, no como una consideración posterior. Deben ser eficientes en cuanto a la energía, al tamaño de código, al peso y al costo. - Están dedicados a ciertas aplicaciones. Interfaces de usuario dedicadas (sin ratón, keyboard y pantalla) Muchos sistemas embebidos deben cumplir restricciones de tiempo real. Un sistema de tiempo real debe reaccionar a estímulos del objeto controlado (u operador) dentro de un intervalo definido por el ambiente.
3.2. Interfaces: Los sistemas embebidos suelen tener en una de sus partes una computadora con características especiales conocida como microcontrolador que viene a ser el cerebro del sistema, el cual incluye interfaces de entrada/salida en el mismo chip. Normalmente estos sistemas poseen un interfaz externo para efectuar un monitoreo del estado y hacer un diagnóstico del sistema. Existen varias interfaces:
Las interfaces de operador (Hombre-Máquina-HMI) monitores, interruptores, botones, indicadores, emisores individuales o grupales de los diferentes tipos de señales, motores eléctric os, solenoides y otros. Se puede aplicar en los trenes. Las características del software son las siguientes: robustez, facilidad de uso, presentación clara de la información, diseño atractivo, flexibilidad de proyecto. Las interfaces eléctricas (interfaces con otros componentes y dispositivos): Interno I2C, SPI, ISA y otros. - Las interfaces Exteriores - RS232, TTY, Ethernet, Centronics, FlexRay, CAN, LIN, RF y otros.
3.3. Plataforma de sistemas embebidos 3.3.1. Linux en sistemas embebidos Linux está presente en muchas partes. Quizá aún no haya ganado la batalla en los ordenadores personales, pero definitivamente es el número uno en el área de los sistemas embebidos. Sin saberlo, nos rodean miles de dispositivos que funcionan con Linux Al contrario de lo que pueda parecer, Embedded Linux no es una versión reducida de Linux. El calificativo «embebido » realmente hace referencia a la funcionalidad de la aplicación, no a la funcionalidad de Linux.La fiabilidad de Linux es consecuencia directa de esta filosofía que lleva implícita la aportación altruista de miles de programadores de todo el mundo observando el código, mejorándolo, cambiándolo y probándolo en miles de configuraciones posibles del sistema. 3.3.2. Windows XP para sistemas embebidos
Aunque Microsoft ha mantenido a los fabricantes de sistemas operativos alternativos a Windows contra la pared en lo que se refiere a equipos de sobremesa, su posición en la batalla por la supremacía en el terreno de los sistemas operativos para dispositivos que no fueran PC era vulnerable. De ahí que Microsoft da un paso más en este sector, lanzando la versión para dispositivos embebidos en la Conferencia para desarrolladores de este tipo de sistemas que se celebra en Las Vegas. Esta decisión parece ir en consonancia con las predicciones que apuntan a una progresiva inclusión de microprocesadores en casi cualquier tipo de aparatos (frigoríficos, coches, etc). Además, con esta iniciativa Microsoft hace frente a la competencia surgida por parte, por ejemplo, de Linux que, según muchos analistas, permite reducir costes, ya que no carga el precio de l os royalties. 3.3.3. Java también para sistemas embebidos La tecnología Java es cada vez más utilizada en sistemas embebidos avanzados, debido a sus capacidades inherentes de soporte de red, optimización de dispositivos y procesado de datos. La mayoría de las características de la plataforma Java SE pueden ser ahora empleadas para el desarrollo embebido, gracias a la capacidad cada vez mayor del nuevo hardware disponible en el mercado. 3.3.4. Algunos ejemplos de Sistemas embebidos en distintas plataformas:
Microprocesador (MP o ?P) y los microcontroladores (MCU), que tienen menos poder de cómputo, pero varios periféricos Arquitecturas - Von Neumann y Harvard Las populares familias de procesadores RISC: ARC (ARC International), ARM (ARM Holdings), AVR (Atmel), PIC (Microchip), MSP430 (TI) y otros CISC CPUs: Intel y Motorola Por lo general en el interior hay una memoria cache y procesamiento de la canalización de instrucciones Memoria para datos e instrucciones: RAM, PROM - OTP (Programable de una sola vez), EEPROM o memoria Flash Periféricos: Propósito general Entrada /Salida - GPIO, temporizadores, ADC, DAC y más.
3.4. Comunicación:
RS-232, RS-422, RS-485, UART / USART (Receptor / Transmisor universal síncrono y asíncrono) I2C (Inter-Integrated Circuit - Circuito integrado), SPI (Serial Peripheral Interface Bus – Bus de la interfaz de periféricos serie), SSC and ESSI (Enhanced Synchronous Serial Interface – Interfaz mejorada serie síncrona), USB (Bus Universal en serie) Protocolos de comunicación de red: Ethernet, CAN (Controller Area Network – Controlador del área de red), LonWorks etc. Software: Popular OS - QNX4 RIOS, Linux embebido y Linux-based (Android, etc.), iOS, Windows CE, etc.
3.5. Herramientas para probar y corregir (depuración):
JTAG (Joint Test Action Group) - una interfaz especializada para la prueba saturada PCB ISP (In-System Programming) - Programación de circuito ICSP (circuito de programación en serie) – un método para la programación directa del microcontrolador, por ejemplo, de la serie PIC y AVR BDM (Modo de depuración de fondo) - utilizado principalmente en productos de Freescale IDE (Integrated Development Environment- Entorno de desarrollo integrado) para el desarrollo de programas.
4. Componentes típicos de software embebido Los componentes de un sistema embebido son los siguientes, en la parte central se encuentra el microprocesador, microcontrolador, DSP, etc. La CPU o unidad que aporta la capacidad de cómputo del sistema, pudiendo incluir memoria interna o externa, un micro con arquitectura específica según los requisitos Un ES estaría formando por un microprocesador y un software que se ejecute sobre éste. Sin embargo, este software necesitará sin duda un lugar donde poder guardarse para luego ser ejecutado por el procesador. Esto podría tomar la forma de memoria RAM o ROM. Todo sistema embebido necesitará una cierta cantidad de memoria, la cual puede incluso encontrarse dentro del mismo chip del procesador. También contará con una serie de salidas y entradas necesarias para comunicarse con el mundo exterior. Debido a que las tareas realizadas por sistemas embebidos son de relativa sencillez, los procesadores comúnmente empleados cuentan con registros de 8 o 16 bits. En su memoria sólo reside el programa destinado a gobernar una aplicación concreta. Sus líneas de entrada/salida (I/O) soportan el conexionado de los sensores y actuadores del dispositivo a controlar y todos los recursos complementarios disponibles tienen como finalidad atender a sus requerimientos. Estas son las únicas características que tienen en común los sistemas embebidos, todo lo demás será totalmente diferente para cada sistema embebido en particular debido a la variedad de aplicaciones disponibles. 4.1. Middleware: Middleware es software que se sitúa entre un sistema operativo y las aplicaciones que se ejecutan en él. Básicamente, funciona como una capa de traducción oculta para permitir la comunicación y la administración de datos en aplicaciones distribuidas. A veces, se le denomina “plumbing” (tuberías), porque conecta dos aplicaciones para que se puedan pasar fácilmente datos y bases de datos por una “canalización”. El uso de middleware permite a los usuarios hacer solicitudes como el envío de formularios en un explorador web o permitir que un servidor web devuelva páginas web dinámicas en f unción del perfil de un usuario. Algunos ejemplos comunes de middleware son el middleware de base de datos, el middleware de servidor de aplicaciones, el middleware orientado a mensajes, el middleware web y los monitores de procesamiento de transacciones. Cada programa suele
proporcionar servicios de mensajería para que aplicaciones diferentes puedan comunicarse usando marcos de mensajería como el Protocolo simple de acceso a objetos (SOAP), servicios web, transferencia de estado representacional (REST) y notación de objetos JavaScript (JSON). Si bien todo el middleware desempeña funciones de comunicación, el tipo que elige una compañía depende del servicio que se va a usar y del tipo de información que debe comunicarse. Puede tratarse de autenticación de seguridad, administración de transacciones, colas de mensajes, servidores de aplicaciones, servidores web y directorios. El middleware se puede usar también para procesamiento distribuido con acciones que ocurren en tiempo real en l ugar de enviar los datos para allá y para acá.
5. Arquitectura del software Embebido Un PC embebido posee una arquitectura semejante a la de un PC. Brevemente describiremos los elementos básicos:
Existen varios tipos de arquitectura:
Arquitectura Von Neumann ( Tipo Princeton) memoria común, bus de datos e instrucción. Arquitectura Harvard – memorias separadas, buses de datos e instrucciones Arquitectura Super Harvard – memorias separate + CACHE para instrucciones + controladores I/O (E/S).
La arquitectura Harvard es típica para microcontroladores y DSP. También se utiliza en la organización de la memoria CACHE en los sistemas MP más complejos. La arquitectura Von Neumann utiliza el mismo dispositivo de almacenamiento tanto para las instrucciones como para los datos, siendo la que se utiliza en un ordenador personal porque permite ahorrar una buena cantidad de líneas de E/S, que son bastante costosas, sobre todo para aquellos sistemas donde el procesador se monta en algún tipo de zócalo alojado en una placa madre. También esta organización les ahorra a los diseñadores de placas madre una buena cantidad de problemas y reduce el costo de este tipo de sistemas. En un ordenador personal, cuando se carga un programa en memoria, a éste se le asigna un espacio de direcciones de la memoria que se divide en segmentos, de los cuales típicamente tenderemos los siguientes: código (programa), datos y pila. Es por ello que podemos hablar de la memoria como un todo, aunque existan distintos dispositivos físicos en el sistema (disco duro, memoria RAM, memoria flash, unidad de disco óptico...). En el caso de los microcontroladores, existen dos tipos de memoria bien definidas: memoria de datos (típicamente algún tipo de SRAM) y memoria de programas (ROM, PROM, EEPROM, flash u de otro tipo no volátil). En este caso la organización es distinta a las del ordenador personal, porque hay circuitos distintos para cada memoria y normalmente no se utilizan los registros de segmentos, sino que la memoria está segregada y el acceso a cada tipo de memoria depende de las instrucciones del procesador. A pesar de que en los sistemas integrados con arquitectura Von Neumann la memoria esté segregada, y existan diferencias con respecto a la definición tradicional de esta arquitectura; los buses para acceder a ambos tipos de memoria son los mismos, del procesador solamente salen el bus de datos, el de direcciones, y el de control. Como conclusión, la arquitectura no ha sido alterada, porque la forma en que se conecta la memoria al procesador sigue el mismo principio definido en la arquitectura básica. Algunas familias de microcontroladores como la Intel 8051 y la Z80 implementan este tipo de arquitectura, fundamentalmente porque era la utilizada cuando aparecieron los primeros microcontroladores. La arquitectura Harvard, es la utilizada en supercomputadoras, en los microcontroladores, y sistemas integrados en general. En este caso, además de la memoria, el procesador tiene los buses segregados, de modo que cada tipo de memoria tiene un bus de datos, uno de direcciones y uno de control. La ventaja fundamental de esta arquitectura es que permite adecuar el tamaño de los buses a las características de cada tipo de memoria; además, el procesador puede acceder a cada una de ellas de forma simultánea, lo que se traduce en un aumento significativo de la velocidad de procesamiento. Típicamente los sistemas con esta arquitectura pueden ser dos veces más rápidos que sistemas similares con arquitectura Von Neumann. La desventaja está en que consume muchas líneas de E/S del procesador; por lo que en sistemas donde el procesador está ubicado en su propio encapsulado, solo se utiliza en supercomputadoras. Sin embargo, en los microcontroladores y otros sistemas integrados, donde usualmente la memoria de datos y programas comparten el mismo encapsulado
que el procesador, este inconveniente deja de ser un problema serio y es por ello que encontramos la arquitectura Harvard en la ma yoría de los microcontroladores. Por eso es importante recordar que un microcontrolador se puede configurar de diferentes maneras, siempre y cuando se respete el tamaño de memoria que este requiera para su correcto funcionamiento.
6. Comparativa entre un SO tradicional y un EOS Tradicional OS Características deseadas para EOS Grandes requerimientos de memoria Huella de memoria pequeña Arquitectura multiamenazas Modelo I/O Computo eficiente (entrada/salida) Protocolos de comunicación Núcleo y separación de usuario Interfaz fácil de exponer datos No hay restricciones de energía Apoyar el diseño de aplicaciones diversas Amplios recursos disponibles Forma fácil de programar, actualizar y depurar aplicaciones de red.
7. Sistemas embebidos de tiempo Real Sistema operativo que ha sido desarrollado para aplicaciones de tiempo real con el fin de garantizar el cumplimiento de forma adecuada de las tareas teniendo en cuenta las restricciones de tiempo lo que hace necesario que el sistema sea determinista. Es los SOTR no importa el usuario sino los procesos, generalmente se subutilizan los recurso con el fin de estar disponibles y atentos a los procesos en el momento que este los requiera, es utilizado en entornos donde se procesan gran cantidad de eventos. Los tipos de sistemas embebidos en tiempo real son los siguientes: Tiempo Real Estricto (Hard) – sistemas en los que es absolutamente imperativo que las respuestas ocurran dentro del plazo requerido. o Por ejemplo: Sistemas de control de vuelo. Tiempo Real Flexible – sistemas en los que los plazos son importantes pero que todavía funcionarán correctamente si se determinan plazos que ocasionalmente no se cumplan. o Por ejemplo: El Sistema de adquisición de datos. Tiempo real (Real) – sistemas que son estrictos en tiempo real y su tiempo de respuesta es muy corto. o Por ejemplo: Sistema de guía de misiles Tiempo real Firme (Firm) – sistemas que son en tiempo real flexible, pero en el que no haya beneficio de una entrega tardía del servicio. Un solo Sistema puede tener todos los subsistemas de tiempo real estricto, o flexibles y reales. o En realidad, muchos sistemas tendrán una función de coste asociada con el incumplimiento de los plazos.
7.1. Características de los sistemas de tiempo real
Objetivo es proporcionar rápidos tiempos de respuesta y cambios de contexto. Minimizar el tiempo en el que esta deshabilitadas las interrupciones. Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso. Proceso de mayor prioridad expropia recursos. Generalmente se utiliza planificación expropiativa basada en prioridades. Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria. Poco movimiento de programas entre almacenamiento secundario y memoria. La gestión de archivos se orienta más a velocidad de acceso que a utilización eficiente del recurso. Debe ser multihebrado y apropiativo. Poseer un tamaño pequeño. Debe existir mecanismos de sincronización predecibles y de herencia de prioridad. Gestión de memoria que no afecte a la Predicibilidad.
Muchas aplicaciones de tiempo real son embebidas, pero no todas las aplicaciones embebidas se desempeñan en tiempo real. Mientras que aplicaciones en tiempo real siempre se adhieren a características estrictas en el tiempo, los sistemas embebidos no son tan simples de categorizar. 7.2. Ejemplos de sistemas operativos embebidos y de tiempo real 7.2.1. Windows XP Embedded Es una versión de Windows XP recortada (componetizada) para dispositivos móviles. Está pensado para arquitecturas tipo X86 y soporta practicamente el mismo software y hardware que XP. Sistema operativo y plataforma de desarrollo que permite a los desarrolladores elegir entre más de 10000 componentes individualmente para conseguir la máxima funcionalidad en una huella reducida. Permite reducir el tiempo al mercado aprovechando un modelo de programación familiares y un poderoso conjunto de herramientas. Ejemplos de dispositivos construidos con Windows XP Embedded: Cajeros Impresoras Avanzada Industria Servidores de los Dispositivos médicos
y Set-Top medios
de
automáticos. escáneres Boxes robótica comunicación en red
7.2.2. RTLinux
Es un sistema operativo en tiempo real 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. La primera versión de RTLinux estaba diseñada para ejecutarse en la plataforma x86 y proporcionaba una pequeña API y un pequeño entorno de programación. La versión 2, que fue totalmente reescrita, fue diseñada para el soporte de multiprocesamiento simétrico (SMP) y para ser ejecutada en una amplia variedad de arquitecturas. RTLinux proporciona la capacidad de ejecutar tareas de tiempo real y manejadores de interrupciones en la misma máquina que el Linux estándar. Estas tareas y los manejadores ejecutan cuando se necesitan en detrimento de lo que estuviera ejecutando Linux. El peor caso de tiempo es entre que se detecta la interrupción hardware y el procesador ejecuta la primera instrucción del manejador de la interrupción. Este tiempo es del orden de los 10 microsegundos en la plataforma x86. Características
de
los
sistemas
RTLinux
· Sistema operativo de tiempo real estricto. · Extensiones para entorno multiprocesador SMP (x86). · API "próximo" al de POSIX threads. Planificador expulsivo por prioridades fijas, señales, sistema de archivos POSIX (open, close, etc.) semáforos y variables condición. · Depuración de código mediante GDB (GNU Debugger). · Soporte para arquitecturas x86 y PPC. · Acceso directo al hardware (puertos e interrupciones). · Comunicación con procesos linux mediante memoria compartida y "tubos". · Estructura modular para crear sistemas pequeños. · Eficiente gestión de tiempos. En el peor caso se dispone de una resolución próxima al microsegundo (para un i486). · Facilidades para incorporar nuevos componentes: relojes, dispositivos de E/S y planificadores. 7.2.3. ChorusOS ChorusOS es un sistema operativo para aplicaciones empotradas o en tiempo real, desarrollado por la empresa Sun Microsystems. Actualmente está liberado bajo código abierto. Es sistema operativo altamente escalable y estable, sirve para sistemas distribuidos, en red, empotrados o en tiempo real y se ha establecido como un sistema operativo muy utilizado en hardware para comunicaciones, desde móviles hasta switches. Pero también se encuentra en otras aplicaciones empotradas, tales como impresoras, autómatas, etc. Es de arquitectura basada en componentes (módulos), lo que le dota de una alta configurabilidad y escalabilidad.
Este sistema operativo pertenece a la quinta generación de los sistemas operativos. 7.2.4. VxWorks VxWorks es un sistema operativo de tiempo real, basado en Unix, vendido y fabricado por Wind River Systems. Las características distintivas de VxWorks son: · La compatibilidad con POSIX. · El tratamiento de memoria. · Las características de multi-procesador. VxWorks se usa generalmente en sistemas empotrados. 7.2.5. QNX QNX (pronunciado Q.N.X. o Q-nix) es un sistema operativo de tiempo real basado en Unix que cumple con la norma POSIX. Es desarrollado principalmente para su uso en dispositivos empotrados. Desarrollado por QNX Software Systems empresa canadiense. QNX está basado en una estructura de micronúcleo, que proporciona características de estabilidad avanzadas frente a fallos de dispositivos, aplicaciones, etc. Está disponible para las siguientes arquitecturas: x86, MIPS, PowerPC, SH4 (incluida la videoconsola Dreamcast con una versión muy limitada de este), ARM, StrongARM y xScale. 7.2.6. S. O. µlTRON µMore es un sistema operativo en tiempo real para dispositivos móviles de próxima generación que cumple las especificaciones de perfiles estándar ulTRON 4.0. Entre sus prestaciones se incluye la función Easy Power Save (ahorro de energía sencillo) y el módulo de red AVE-TCP (que cumple las especificaciones IPv6). µMore puede implementarse independientemente o en combinación con los navegadores ACCESS para la electrónica de consumo, NetFront o Compact NetFront. 7.2.7. Windows Embedded CE Es una versión distinta de Windows pensada para dispositivos móviles solamente y construida desde cero para este fin. Es más pequeña que XP Embeded llegando a tener como mínimo 300KB (vs 40MB de XPe) y con 700 componentes que se pueden escoger (como un lego tambien). El release 5 fue el que hasta ahora se ha incluido en diversos dispositivos como thin clients, equipo médico, cámaras digitales, teléfonos VOIP y otros, con la versión 6 se anuncia el inicio de una nueva generación (incluyendo un nuevo kernel que seria el 3o) de versiones especializadas de CE. Está pensado para diversas arquitecturas además de la x86 como ARM, MIPS.
7.2.8. Freerto Sistema operativo de tiempo real para los sistemas empotrados pequeños. Los programas preconfigurados de la demostración son incluidos para varias arquitecturas del microcontrolador - ARM7, CORTEZA M3, 8051, AVR (MegaAVR), x86, PIC (PicMicro PIC18), HCS12, H8S, RDC del BRAZO. 7.2.9. NetBSD Es un sistema operativo de la familia Unix (en sí no se le puede llamar "un Unix", ya que esta es una marca comercial de AT&T, pero se denomina como "sistema de tipo UNIX" o "derivado de UNIX"), open source y libre, y, a noviembre de 2006, disponible para más de 50 plataformas hardware. Su diseño y sus características avanzadas lo hacen ideal para multitud de aplicaciones. NetBSD ha surgido como resultado del esfuerzo de un gran número de personas que tienen como meta producir un sistema operativo tipo Unix accesible y libremente distribuible. Es utilizado en varios dispositivos empotrados y no ha requerido de software de desarrollo adicional más que el juego de herramientas. Características de los sistemas NetBSD: Actualmente NetBSD se centra en ofrecer un sistema operativo estable, multiplataforma, seguro y orientado a la investigación. Está diseñado teniendo como prioridad escribir código de calidad y bien organizado, y teniendo muy en cuenta también el cumplimiento de estándares (POSIX, X/Open y otros más relevantes): prueba de este buen diseño es su amplia portabilidad, actualmente a 56 plataformas. Se trata de un sistema operativo maduro, producto de años de desarrollo (los orígenes de BSD están sobre el año 1977), y partiendo del sistema UNIX sexta edición. 7.2.10. OpenBSD Sistema operativo libre tipo Unix, multiplataforma, basado en 4.4BSD. Es un descendiente de NetBSD, con un foco especial en la seguridad y la criptografía. Este sistema operativo, se concentra en la portabilidad, cumplimiento de normas y regulaciones, corrección, seguridad proactiva y criptografía integrada. Se distribuye bajo la licencia BSD, aprobada por la OSI. Características · Sistema operativo tipo UNIX. · Se distingue de Linux por sus fuentes y su licencia. · Libre, Funcional, Seguro. · Base de desarrollo en Calgary. · Nueva versión cada 6 meses.
· Acceso · Actualmente
CVS esta
al en
la
código versión
fuente. 3.6.
7.2.11. Linux empotrado (Embedded Linux) Se refiere al uso del sistema operativo Linux en un sistema embebido, como por ejemplo PDA's, teléfonos móviles, robots, enrutadores / servidores, dispositivos electrónicos y aplicaciones industriales con microcontroladores y microprocesadores. El núcleo de Linux, combinado con un conjunto de algunas otras utilidades de Software Libre, puede ajustarse dentro del limitado espacio de hardware de los sistemas embedidos. Una instalación típica de un Linux empotrado ocupa en promedio 2 MB. Linux Empotrado tiene algunas ventajas en relación a otros sistemas operativos empotrados, como pueden ser el Código abierto, pequeño (Windows CE ocupa 21 MB comparado con los 2 MB para Linux Empotrado), puede no tener costos por derechos, maduro y estable (Más de 10 años de edad y utilizado en muchos dispositivos) y con respaldado.
8. Arquitectura Prism en sistemas embebidos Durante las últimas décadas los investigadores de software y profesionales han propuesto diversos enfoques, técnicas y herramientas para el desarrollo de sistemas de software a gran escala. Los resultados de estos esfuerzos han sido caracterizados como de programación a gran escala programming-in-the-large (PitL). Un nuevo conjunto de desafíos que ha surgido con la aparición del barato, pequeño y heterogéneo, posiblemente integrado, altamente distribuido, así como las plataformas de computación móviles. Nos referimos al desarrollo del software en programación a pequeña escala programming-in-the-small-and-many (Prism).
Prism está caracterizado por la compañía OS’s (Palm, Symbian) Prism está relacionado con la arquitectura del Software (arquitectura basada en el desarrollo)
8.1. Propiedades de Prism: Recursos muy limitados Potencia limitada Ancho de banda bajo Velocidad de la CPU lenta, memoria limitada Tampaño pequeño del display
8.2. Beneficios de Prims: Flexibilidad Eficiencia (Tamaño, velocidad, sobrecarga) Escalabilidad (Número de componentes, conectores, eventos, hilos, dispositivos de hardware)
Extensibilidad (Soporte relativo a los nuevos desarrollos)
9. . Programación de Sistemas embebidos Normalmente se tiene que ser mucho más consciente de los recursos que se consumen en la programación de sistemas embebidos que los que son necesarios en los programas ordinarios Tiempo Espacio Canales de comunicación Archivos ROM (Read-Only Memory) Memoria Flash
Se debe tomar el tiempo para aprender acerca de la forma en que las características del lenguaje de programación se implementan para una plataforma en particular. Hardware Sistema operativo Librería .
Una gran cantidad de éste tipo de programación es: Mirar con atención las características especializadas de un RTOS (Sistema Operativo en Tiempo Real) El uso de un “entorno non-hosted” (que es una forma de decir “ un lenguaje de programación justo en lo alto (right on top) del hardware sin un Sistema operativo”) Incluye (a veces complejas) arquitecturas de controladores de dispositivos El trato directo con interfaces de dispositivos hardware
10. Lenguajes de programación de sistemas embebidos Lenguajes Hardware Verilog y VHDL son los lenguajes más populares para la descripción del hardware y su modelización.
10.1.
Lenguajes de Software
Describen secuencias de instrucciones para un proceso a ejecutar. Por lo tanto, las listas de la mayoría de las instrucciones imperativas se ejecutan para comunicar a través de la memoria: un array de almacenamiento de localizaciones que mantienen
sus valores hasta que son modificados. Los lenguajes más populares son: Lenguaje ensamblador, C, C++ y Java. Las características de estos lenguajes se muestran en la tabla de abajo.
C++ se extiende C con los mecanismos de estructuración para grandes programas: los tipos de datos indefinidos, una manera de reutilizer código con tipos diferentes, espacios de nombres a los grupos de objetos y evitar conflictos de nombres accidentales cuando se ensamblan las piezas del programa, y las excepciones para manejar errores. La librería standard C++ incluye una colección de datos polimórficos eficientes, tales como arrays (matrices), árboles, cadenas para las que el compilador genera implementaciones personalizadas. Lenguaje Java Sun se asemeja al C++ pero es incompatible. Al igual que C + +, Java está orientado a objetos, que proporciona clases y herencia. Es un lenguaje de más alto nivel que C++, ya que utiliza las referencias a objetos, matrices y cadenas en lugar de punteros. La recogida automática de basura de Java libera al programador de la gestión de memoria. Java proporciona subprocesos simultáneos. Otro tipo de lenguaje de Sistemas Embebidos son languages de flujo de datos y languajes Híbridos. Los lenguajes de flujo de datos son un complemento perfecto para los algoritmos de procesamiento de señales, que utilizan grandes cantidades de aritmética derivada de la teoría de sistemas lineales de decodificación, comprimen o filtran corrientes de datos que representan muestras periódicas de los valores continuamente cambiantes, como el sonido o el video.