Vous êtes sur la page 1sur 31

1

LIC. ALEJANDRO HINOJOSA ELVIN


Temas principales

Sistemas embebidos (ES)


Ingeniería del Software – ingeniería de Sistema
Arquitecturas empleadas.
Principales etapas del desarrollo del software para Sistemas
embebidos (ES)

Calidad del Software


Sistemas integrados
Lenguajes de programación en Sistemas embebidos (ES)
3
¿Qué es un Sistema embebido?

Es un sistema de computación diseñado para realizar


una o algunas pocas funciones dedicadas.

Los sistemas embebidos se diseñan


para cubrir necesidades específicas.

la mayoría de los componentes


se encuentran incluidos en
la placa base (tarjeta de
vídeo, audio, módem, etc.)
4
Características de los sistemas embebidos (1)

• Características básicas:
Número limitado de funciones predefinidas para ejecutar;
Fuente de alimentación limitada y la administración de energía
efectiva;
Disponibilidad de recursos de reserve para situaciones inesperadas.
Funcionamiento en tiempo real (con mayor frecuencia);
Periféricos anchos e interfaces
• Interfaces:
Interfaces de operador (Interfaces Máquina-Hombre - HMI) –
teclados, monitores, interruptores, botones, indicadores emisores
individuales o grupales de los diferentes tipos de señales, motores
eléctricos, solenoides y otros.

5
Sistemas embebidos: Ejemplos

6
Ingeniería de sistemas y software

• Ingeniería de sistemas
• Campo interdisciplinario de la ingeniería que se centra en cómo los
proyectos complejos de ingeniería deben ser diseñados y gestionados;
• Se ocupa de todos los aspectos del desarrollo del Sistema informático;
• Identifica las funciones de hardware, software, personas, bases de datos
y otros elementos del Sistema que participan en ese Sistema que se va a
desarrollar.

• Ingeniería del software


• Es una parte de la ingeniería de sistemas a nivel de usuario
• Decir los aspectos prácticos del desarrollo y distribución de software útil.

7
Arquitectura empleadas

MICROPROCESADOR

Es el encargado de realizar
las operaciones
de cálculo principales del
sistema. Ejecuta código para
realizar una determinada
tarea y dirige el
funcionamiento de los
demás elementos que le
rodean, a modo de director
de una orquesta.
8
MEMORIA

En ella se encuentra
almacenado el código de los
programas que el sistema
puede ejecutar así como los
datos. Su característica
principal es que debe tener
un acceso de lectura y
escritura lo más rápido
posible para que el
microprocesador no pierda
tiempo en tareas que no son
9
meramente de cálculo
MEMORIA CACHE

Memoria más rápida que la


principal en la que se
almacenan los datos y el
código accedido
últimamente. Dado que el
sistema realiza microtareas,
muchas veces repetitivas, la
caché hace ahorrar tiempo
ya que no hará falta ir a
memoria principal si el dato
o la instrucción ya se
10
encuentra en la caché.
DISCO DURO

En él la información no
es volátil y además puede
conseguir capacidades muy
elevadas. A diferencia de la
memoria que es de estado
sólido éste suele
ser magnético

11
DISCO FLEXIBLE

Su función era la de
almacenamiento, pero con
discos con capacidades
mucho más pequeñas y la
ventaja de su portabilidad.
Normalmente se
encontraban
en computadora
personal estándar pero no
así en una PC embebida
12
BIOS - ROM

BIOS (Basic Input & Output


System, sistema básico de
entrada y salida) es código
que es necesario para
inicializar la computadora y
para poner en comunicación
los distintos elementos de
la placa madre.
13
CMOS - RAM

Es un chip de memoria de
lectura y escritura
alimentado con una pila
donde se almacena el tipo y
ubicación de los dispositivos
conectados a la placa madre
(disco duro, puertos de
entrada y salida, etc.).
14
CHIP SET

Chip que se encarga de


controlar
las interrupciones dirigidas
al microprocesador, el
acceso directo a memoria
(DMA) y al bus ISA, además
de ofrecer temporizadores,
etc.
15
ENTRADAS AL SISTEMA

pueden
existir puertos para mouse, t
eclado, vídeo en formato
digital, comunicaciones serie
o paralelo, etc.

16
SALIDA AL SISTEMA

puertos de vídeo
para monitor o
televisión, pantallas de
cristal líquido, altavoces,
comunicaciones serie o
paralelo, etc.

17
Aplicaciones

fábrica

telecomunicaciones Punto de venta

Punto de
internet información
APLICACIONES
Cajero
decodificadores
automático

Máquina de Sistemas de
revelado de fotos radar
Medicina

18
Ciclo de desarrollo

19
20
Calidades de Software

21
Calidades de Software

• Exactitud
• Óptima calidad
• establecido w.r.t., la especificación de los requisitos
• absoluta
• Confiabilidad
• Propiedad estadística
• Probabilidad de que el software funcionará como se esperaba durante un
período de tiempo dado
• Relativo
• Robustez
• Comportamiento “razonable” en circunstancias imprevistas
• subjectiva
• Un requisito especificado es un problema de la corrección;
un requisito no especificado es un problema de robustez.

22
Calidades de software (cont.)

• Usabilidad
• Capacidad de que los usuarios finales puedan utilizer fácilmente el software
• Extremadamente subjetivo.
• Comprensibilidad
• Capacidad de los desarrolladores a entender fácilmente los artefactos
producidos
• La calidad interna del producto
• subjetivo
• Verificabilidad
• La facilidad de establecer las propiedades deseadas
• Realizado por análisis formal o pruebas
• Calidad interna
• Rendimiento
• Equiparado con la eficiencia
• Evaluables mediante la medición, el análisis y simulación.

23
Calidades de Software (cont.)

• Desarrollo
• Posibilidad de añadir o modificar la funcionalidad
• Aborda el mantenimiento adaptativo y perfectivo.
• problema: La evolución de la implementación es muy fácil
• La evolución debe comenzar en los requisitos o en el diseño
• Reutilización
• Capacidad de construir un Nuevo software a partir de piezas existentes
• Debe ser planificado
• Ocurre a todos los niveles: desde la gente a los procesos, desde los requisitos hasta el código.
• Interoperabilidad
• Capacidad de los (sub)sistemas de software a cooperar con los demás
• Fácilmente integrable en sistemas más grandes.
• Técnicas communes que incluyen APIs, protocolos plug-in, etc.

24
Calidad de software (cont.)
• Escalabilidad
• Capacidad de un Sistema de software para crecer en tamaño, mientras que
mantiene sus propiedades y cualidades.
• Asume el mantenimiento y la capacidad de evolucionar
• Objetivo de desarrollo basado en componentes
• Heterogeneidad
• Capacidad de componer un Sistema de piezas desarrolladas en varios
lenguajes de programación, en multiples plataformas, por multiples
desarrolladores, etc.
• Necesario para la reutilización.
• Objetivo de desarrollo basado en componentes
Portabilidad
• Capacidad de ejecución en entornos nuevos con un mínimo esfuerzo.
• Puede ser planeado mediante el aislamiento de componentes dependientes
del entorno.
• Necesarios para la aparición de los sistemas altamente distribuidos (por
ejemplo, Internet)

25
Algunos sistemas operativos integrados
• RTOSs
 pSOS
 VxWorks
 VRTX (Versátil en tiempo real)
 uC/OS-II
 Java RTS etc.
• Palm OS (fuente: Wikipedia)
 Sistema operative embebido desarrollado inicialmente por U.S. Robotics-owned Palm
Computing, Inc. para asistentes digitales personales (PDAs) en 1996
• SymbianOS (fuente: Wikipedia)
 Sistema operativo diseñado para dispositivos móviles por SymbianLtd. (se ejecuta
generalmente en OMAP (Plataforma de aplicaciones multimedia abierta)
procesadores, los cuales generalmente incluyen un propósito general de arquitectura
en el núcleo del procesador ARM más uno o más coprocesadores especializados.
• Android
 Projecto abierto Handset Alliance
 Basado en núcleo Linux 2.6 (http://code.google.com/android/)
26
Algunos sistemas operativos embebidos (cont.)

• Windows CE (WinCE) (fuente: Wikipedia)


 Sistema operativo de Microsoft para ordenadores minimalistas y sistemas
embebidos
 WinCE es un Sistema operative muy diferente, en lugar de una version
abreviada del escritorio de Windows
• Linux embebido (uClinux, ELKS, ThinLinux) (fuente: Wikipedia)
 El uso de un Sistema operativo Linux en sistemas informáticos integrados
 Según la encuesta realizada por Venture Development Corporation, Linux fue
utilizada por el 18% de los ingenieros
 Versiones embebidas de Linux están diseñados para dispositivos con recursos
relativamente limitados, tales como teléfonos móviles y decodificadores

27
Lenguajes de programación de sistemas embebidos (cont.)

• 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.

28
Lenguajes de programación de sistemas embebidos (cont.)

• 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.
(Acerca de los lenguajes de sistemas embebidos, ver más en:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.26.4735&rep=rep1&type
=pdf )

29
Cuestiones de control

1. ¿Cuáles son los principales objetivos de la ingeniería del software?


2. Describir las principales etapas de desarrollo de software para sistemas
embebidos.
3. Comparar el Sistema operativo más popular para dispositivos móviles
(posiblemente en forma de tabla).
4. Comparar los lenguajes más populares utilizados en sistemas
embebidos.

30
Referencias
1. http://en.wikipedia.org/wiki/Embedded_system
2. https://en.wikipedia.org/wiki/Software_engineering
3. http://cplus.about.com/od/thebusinessofsoftware/a/softwareeng.htm
4. http://www.oxys-tech.com/embedded_system.pdf
5. http://www.youtube.com/watch?v=y9RAhEfLfJs
6. http://ocw.korea.edu/ocw/college-of-engineering/special-topics-in-embedded-
systems/transfer-data/2.STES-Lec1-What-is-ES.pdf
7. http://www.modprod.liu.se/workshop_2007/1.46549/tutorial-peng.pdf
8. http://en.wikipedia.org/wiki/Embedded_Linux
9. http://en.wikipedia.org/wiki/Windows_CE
10. http://www.gobookee.net/architecture-of-embedded-systems/
11. http://www.cs.columbia.edu/techreports/cucs-009-03.pdf
12. http://sunset.usc.edu/~softarch/Prism/
13. Ver sobre Prism-MW – CS 795 / SWE 699, Sam Malek, Spring 2010
31

Vous aimerez peut-être aussi