SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
Clase 04: Arquitecturas de Software Embebido
Sistemas Embebidos
Prof: Lic. José H. Moyano
Departamento de Ciencias e Ingenierı́a de la Computación
2019
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 1 / 54
Tareas e ISRs
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 2 / 54
Tareas
El software de un sistema embebido realiza diversas funciones tales como: atender
y controlar dispositivos
I realizar cómputos
I medir intervalos de tiempo
I configurar e inicializar el hardware
I etc.
A cada una de dichas funciones podemos asociar una unidad de ejecución que la
implementa (Tarea).
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 3 / 54
Tareas
En Sistemas Operativos de Tiempo Real se habla de tareas como unidades de
programa secuenciales y planificables.
Tarea (Sistemas Embebidos):
I Es una unidad de ejecución secuencial
I Su ejecución se planifica o coordina de alguna manera
I Posee cohesión funcional (se origina como resultado de descomponer
funcionalmente al sistema)
I La noción de tarea trasciende los constructores del lenguaje de programación (una
tarea puede ser una función, módulo, método, objeto, etc. o simplemente una
secuencia de código en una unidad mayor)
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 4 / 54
Tareas
Planificación y coordinación de tareas:
I En ausencia de un SO, las tareas son atendidas y coordinadas por un módulo
principal que se encarga de planificarlas de acuerdo a algún esquema.
I En presencia de un SO, es el scheduler del sistema operativo quien abstrae al
implementador de estos detalles. El implementador simplemente especifica sus
tareas como unidades funcionales separadas, y la lógica de coordinación queda
“oculta” por el sistema.
En ambos casos, si existe comunicación entre tareas, hay que sincronizar su
ejecución.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 5 / 54
Tareas
Tanto en presencia de Sistemas Operativos como sin ellos, podemos considerar que las
tareas se encuentran en determinado estado:
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 6 / 54
Tareas
Las tareas suelen tener:
I diversas prioridades.
I deadlines (tiempos máximos en los cuáles la tarea debe cumplirse – tiempo real).
La asignación de prioridades determinará qué tareas tienen privilegios para acceder
al CPU.
Los deadlines deben ser tenidos en cuenta para asegurar que ningún dispositivo
deja de ser atendido en tiempo y forma.
En sistemas con restricciones de tiempo real: Correctitud funcional + correctitud
temporal.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 7 / 54
ISR
En sistemas que realizan E/S usando interrupciones, la ejecución de las tareas
puede ser interrumpida por la ocurrencia de eventos notificados por el hardware.
El control es transferido a rutinas que dan atención a dichos eventos y que poseen
mayor prioridad que las tareas: las Interrupt Service Routines (ISRs).
Las ISRs comparten con las tareas el hecho de:
I Ser unidades de ejecución secuencial
I Poseer cohesión funcional (se originan como resultado de descomponer
funcionalmente al sistema)
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 8 / 54
ISR
Las ISRs se diferencian de las tareas en que:
Inician su ejecución ante la ocurrencia de eventos asincrónicos
No se rigen por los esquemas de planificación y coordinación habituales
Su implementación se realiza mediante un constructor especı́fico del lenguaje de
programación (normalmente una función con un calificador especial que denota su
condición de ISR)
generalmente la implementación funcional de un sistema está compuesta por un
conjunto de Tareas e ISRs.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 9 / 54
Tareas e ISR
De la descomposición funcional de un sistema:
Se identifican y especifican Tareas e ISRs
Se determinan dependencias entre las mismas (datos y recursos compartidos,
sincronización y comunicación, oportunidades de concurrencia, etc).
Se fijan las restricciones temporales (tiempo real)
Se aplican criterios de modularidad (optimizar tareas e ISRs)
Se analiza el esquema y la posibilidad de planificación (por ej. Rate Monotonic
Analysis) ante restricciones de tiempo real (el análisis de planificabilidad lo veremos
más adelante).
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 10 / 54
División tareas e ISR
Teléfono celular simple
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 11 / 54
División tareas e ISR
Outside-in approach
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 12 / 54
Caso de Estudio: Impresora 3D
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 13 / 54
Caso de Estudio: Impresora 3D
La impresora 3d derrite plástico, y lo deposita utilizando un estrusor en la cama,
siguiendo el patrón de una pieza de tres dimensiones, que es lo que se desea imprimir.
La máquina puede interpretar G code
En una memoria microSD, se almacenan archivos en un sistema fat32 o NTFS, con
el código G de diseños que pueden imprimirse
Dos steppers controlan el movimiento del estrusor, en los ejes X y Z
Un tercer stepper controla el movimiento de la cama en el eje Y
Un cuarto stepper controla la entrada de filamento al estrusor
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 14 / 54
Caso de Estudio: Impresora 3D
La impresora 3d derrite plástico, y lo deposita utilizando un estrusor en la cama,
siguiendo el patrón de una pieza de tres dimensiones, que es lo que se desea imprimir.
Una resistencia calienta el estrusor, y otra calienta la cama donde se deposita la
figura
Un display muestra información de estado
Una perilla permite al usuario controlar la máquina, a través de un menú que se
muestra en el display
Los steppers calibran su posición en los tres ejes con tres sensores de fin de carrera
Sensores de temperatura miden la temperatura del estrusor y la cama. La
temperatura de ambos elementos dependen del diseño
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 15 / 54
Caso de Estudio: Impresora 3D
Identificar las partes del sistema
I Diagrama de bloques: Permiten describir sw y hw
Identificar Tareas e ISRs (partición funcional)
I Diagramas de Transición de Estados
I Diagrama de Flujos
Identificar dependencias y oportunidades de comunicación y sincronización
Definir temporizados, prioridades y deadlines
Modos de operación del sistema (idle, working, calibration, error, etc.)
I Diagramas de Transición de Estados
Protocolo de comunicación
I Diagramas de secuencia
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 16 / 54
Arquitecturas de Software
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 17 / 54
Sobre las arquitecturas de software
El esquema de planificación de tareas define la estructura del software embebido.
La elección de qué arquitectura de software utilizar condiciona:
I El tipo de respuesta del sistema ante eventos
I La forma en que el sistema gestiona múltiples eventos (ej. prioridades)
I La complejidad del sistema (testeo, mantenimiento, interoperabilidad, etc)
A continuación analizaremos diversas arquitecturas de software usuales en sistemas
embebidos, en orden creciente de complejidad.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 18 / 54
Problema de Sistemas Embebidos
Se desea desarrollar el software de un sistema embebido. Este sistema tiene una
conexión SPI con un dispositivo, cuyos datos deben procesarse, y enviar por UART a un
segundo dispositivo. A su vez, el sistema debe generar información propia, que debe
enviar también por UART cada 20ms. Cada 1s, debe indicar que está activo haciendo
que parpadee un LED.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 19 / 54
Se cuenta con una función system init() que inicializa todo el sistema
La función spi read(uint8 t *), verifica el flag del dispositivo para determinar si
hay datos esperando, y en caso de haberlos, devuelve true, y guarda byte recibido
en la variable pasada como parámetro.
La función uart send(uint8 t *) devuelve true si la UART está disponible para
enviar un byte, y de ser ası́, lo entrega al dispositivo para ser enviado.
La función led toggle() enciende el led si está apagado, o lo apaga si está
encendido.
La funcion timer get ms() devuelve la cantidad de milisegundos transcurridos
desde que se inició la ejecución del sistema. Por simplicidad, se supone que estos
valores son infinitos y siempre válidos.
La función own process(uint8 t *) realiza el procesamiento propio del
dispositivo, y guarda los datos en el arreglo entregado como parámetro.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 20 / 54
La arquitectura desarrollada se llama Round-Robin.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 21 / 54
Ejemplo de Arquitectura Round-Robin
Multı́metro digital
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 22 / 54
Propiedades de la Arquitectura Round-Robin
Útil cuando:
Hay pocos dispositivos
No hay restricciones de tiempo importantes
No hay tiempos de procesamiento demasiado elevados en respuesta a eventos.
No es adecuada cuando:
El bucle se hace demasiado largo (o un dispositivo necesita ser atendido
rápidamente)
Se pueden perder eventos o datos
Añadir un nuevo dispositivo puede comprometer los resultados alcanzados con este
esquema
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 23 / 54
Problema de sistemas embebidos 2
Cuando se puso en funcionamiento el sistema, el equipo detectó que si se recibe un
dato por SPI antes de ejecutar own process, puede suceder que el dispositivo
envı́e otro dato antes de que own process termine.
Como resultado, se sobreescribe el dato anterior con el nuevo, y este primer dato se
pierde.
El equipo de desarrollo ha decidido solucionarlo configurando tanto el SPI, como el
UART, para que generen interrupciones al recibir y terminar de enviar.
Las dos ISR se declaran como ISR(UART tx) e ISR(SPI rx) respectivamente.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 24 / 54
La arquitectura desarrollada se llama Round-Robin con
interrupciones.
Es la que propone Arduino.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 25 / 54
Comparando prioridades RR y RR con int
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 26 / 54
Caracterı́sticas Round-Robin con interrupciones
El código de cada tarea corre a la misma prioridad (introduce latencias importantes
en presencia de otras tareas demandantes en el tiempo).
I Opción 1: Mover el código de la tarea a su ISR (complica los tiempos de atención
de los eventos de las demás tareas).
I Opción 2: Incrementar la frecuencia de polling de las tareas demandantes (por ej.
chequeando flags varias veces por ciclo). Es un esquema limitado: Mientras más
veces se chequean los flags de una tarea, más demora potencial introducimos en la
atención de las otras.
Tiempos largos de respuesta si justo ocurre el evento inmediatamente después de
que se pasó el polling del flag.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 27 / 54
Problema de Sistemas Embebidos 3
Las funciones del sistema original se ampliaron.
I Debe recuperar de la EEPROM parámetros de configuración que deben reportarse
al inicio, hacia el sistema 2 a través de la UART.
I Un nuevo LED azul debe parpadear cada vez que se realice una transmisión al
sistema 2.
I Un nuevo LED verde debe parpadear cada vez que se realice una recepción del
sistema 1.
I Luego de 5 segundos sin recibir información del sistema 1, debe encenderse un
nuevo LED rojo. Cuando regresa a la normalidad, debe apagarse.
I Cada 30 segundos, debe enviar al sistema 1 un mensaje solicitando información de
estado. Esta información de estado deben remitirse al sistema 2.
Hay también rumores que se piensa reemplazar el microcontrolador con otro de
menor costo, de otro fabricante. Las funciones spi read y uart send puede que no
estén disponibles o tengan otros nombres. El timer tiene pocos bits y desbordará
rápidamente.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 28 / 54
El equipo de desarrollo entiende que el diseño debe separar el software en módulos.
I Un único timer es insuficiente para todos los requisitos de temporizado, y se debe
prevenir el desbordamiento.
I Debe poder reportarse a las capas superiores del sistema cuando un evento requiera
atención.
I El hardware debe abstraerse a través de device drivers.
Se utilizará una nueva arquitectura, function-queue-scheduling que ofrece una
función function post(* void(fn)(void)) que permite encolar una funcion a
ejecutar luego, y otra función, function run() que ejecuta la próxima función en
cola.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 29 / 54
Caracterı́sticas Function-Queue-Scheduling
Funciones largas de baja prioridad pueden comprometer los tiempos de respuesta
de las funciones de alta prioridad.
Si bien se puede reestructurar en bloques menores las rutinas largas (algo complejo
de hacer), en el fondo la planificación de las rutinas no es apropiativa.
Para escenarios de mayor complejidad se utilizan sistemas operativos embebidos
(RTOS).
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 30 / 54
Funciones de callback
Un callback es una función que se entrega como parámetro, esperando que esta
función sea llamada en algún momento, bajo alguna condición.
Se las clasifica de sincrónicas cuando se espera que la sea llamada antes del retorno
de la función; y asincrónicas cuando pueden ocurrir más adelante, luego de que la
función terminó su ejecución.
También llamadas señales o eventos.
Se utilizan también en el desarrollo de aplicaciones en servidores y sistemas de
escritorio.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 31 / 54
Callbacks en function-queue-scheduling
Las funciones de callback permiten organizar el software en módulos independientes
en sistemas embebidos con function-queue-scheduling.
Por ejemplo, se puede escribir un módulo que administre un dispositivo, e informe
al programa principal o a otro módulo cliente cuando se presenta un evento que
hay que atender.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 32 / 54
Callbacks en function-queue-scheduling
Convenciones
En general las rutinas de interrupción agregan una función a la cola de funciones
para reportar el evento.
Se evita llamar a funciones de callback desde rutinas de interrupción, porque se
pierde el control de la duración y las actividades que se están realizando dentro de
una rutina de interrupción.
Si es necesario llamar a funciones de callback desde una rutina de interrupción, se
toma una convención para informar de esto al programador. Por ejemplo, en
TinyOS se nombran esas funciones como async.
Las funciones de callback no llaman a otras funciones de callback. Si una función
de callback necesita llamar a otra función de callback, pone otra función en la cola
que hará la llamada.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 33 / 54
Arquitectura RTOS
Para escenarios complejos: Real-Time Operating Systems.
La aplicación se estructura en un conjunto de ISRs y tareas que se sincronizan.
Las ISRs señalizan a las tareas.
Las tareas son planificadas por el RTOS (prioridades, apropiación, etc.).
Los mecanismos de sincronización (al igual que otros servicios) son provistos por el
Sistema Operativo.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 34 / 54
Arquitectura RTOS
El bucle principal ahora forma parte del scheduler del sistema operativo.
La sincronización y planificación son servicios provistos por el RTOS.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 35 / 54
Comparación de prioridades
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 36 / 54
Caracterı́sticas Arquitectura RTOS
El tiempo entre un evento y su atención dependen del quantum asignado a cada
tarea (además de la latencia de interrupción, tiempo del cambio de contexto, etc.).
Si se cambia una tarea, el esquema de temporizado continúa siendo estable
(cambios en las tareas menos prioritarias no afectan a los tiempos de respuesta de
las tareas más prioritarias).
Los RTOS proveen muchos servicios adicionales.
Desventaja: El RTOS consume recursos (el scheduler insume tiempo), se requiere
espacio en memoria para alojarlo, etc. Un sistema simple como el ATMega328P
tiene problemas para cumplir con todas sus funciones si además aloja un RTOS.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 37 / 54
Seleccionando una arquitectura
Elegir la más simple posible dentro de
los requerimientos funcionales y
temporales de la aplicación.
Ciertas soluciones utilizan arquitecturas
hı́bridas.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 38 / 54
Criterios de modularidad
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 39 / 54
Analizar dependencias
Analizar las dependencias entre los dispositivos y el resto del sistema constituye un
factor clave al momento de descomponer el sistema en tareas e ISRs.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 40 / 54
Dispositivos activos
Los dispositivos activos producen interrupciones
La atención de este tipo de dispositivos tiene fuertes restricciones temporales
(ISRs) y existe un mecanismo de comunicación inter-tarea entre la ISR y la tarea.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 41 / 54
Tareas activas
Ejemplos
Tareas asincrónicas: reciben eventos aperiódicos.
Tareas sincrónicas: reciben eventos periódicos o su operación está sincronizada con
otras tareas del sistema.
Tareas que controlan el acceso a un dispositivo compartido.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 42 / 54
Recomendaciones tareas activas
Asignar tareas separadas para cada dispositivo de E/S que presente un
comportamiento asincrónico (el dispositivo fija la tasa de transferencia).
Combinar tareas para dispositivos que interrumpen infrecuentemente o cuyos
deadlines (tiempo real) son largos.
Asignar diferentes tareas a dispositivos que presentan tasas de transferencia
dispares.
Asignar prioridades más altas a las tareas asociadas a dispositivos que generan
interrupciones (en general estos dispositivos requieren tiempos de respuesta más
demandantes).
Asignar una tarea que gestione el acceso a dispositivos compartidos (dispositivos
que deben ser accedidos por múltiples tareas).
Utilizar tareas de despacho de eventos para aquellos dispositivos que requieran
proveer información a múltiples tareas.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 43 / 54
Dispositivos pasivos
Los dispositivos pasivos no producen interrupciones
El control en la comunicación está en manos de la tarea (normalmente polling o
respuesta a eventos de otras tareas).
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 44 / 54
Tareas pasivas
Ejemplos
Tareas que operan sobre el dispositivo esporádicamente.
Tareas que realizan polling a intervalos aperiódicos.
Tareas de despacho de eventos (originados a partir del polling) hacia otras tareas
del sistema.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 45 / 54
Recomendaciones tareas pasivas
Asignar una tarea para manejar dispositivos que se operan eventualmente o cuyos
deadlines no son urgentes.
Asignar tareas individuales para cada dispositivo que necesite ser
sondeado/escrutado a diferentes tasas (evitar under/oversampling).
Disparar el polling a dispositivos pasivos mediante timers (evitar delays en SW que
podrı́an demorarse ante la ocurrencia de interrupciones).
Incrementar la prioridad de las tareas que realizan polling de mayor frecuencia (sólo
hasta el nivel necesario, sino se corre el riesgo de sobre-ocupar el cpu).
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 46 / 54
Criterios de modularidad
Una vez identificadas las tareas e ISRs, y teniendo en cuenta sus prioridades relativas es
necesario:
Identificar las dependencias entre eventos (tareas que producen información que
otras necesitan)
Identificar dependencias temporales:
I Identificar actividades crı́ticas y urgentes
I Identificar las tasas de ejecución de tareas periódicas
I Identificar cohesión temporal: aquellas porciones de código que se ejecutan en un
mismo momento (por ej. dependen de un mismo evento) pueden agruparse en una
tarea para reducir la sobrecarga.
Identificar actividades limitadas por CPU (intensivas en procesamiento) y asignarles
prioridades bajas.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 47 / 54
Criterios de modularidad
Una vez identificadas las tareas e ISRs, y teniendo en cuenta sus prioridades relativas es
necesario:
Identificar cohesión funcional: agrupar en tareas funciones relacionadas o tareas que
comunican grandes cantidades de datos.
Identificar tareas de propósitos especı́ficos: agrupar tareas que se combinan para
lograr un propósito particular y tratarlas como unidades funcionales separadas.
Identificar cohesión secuencial: agrupar tareas que revisten un ordenamiento
secuencial en una única tarea, reduce los recursos consumidos por las mismas y
simplifica el diseño.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 48 / 54
Device drivers
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 49 / 54
Acerca de los device drivers
Son porciones de software destinadas a aislar al resto del sistema de los detalles
especı́ficos de un dispositivo particular de hardware.
El acceso al dispositivo se realiza exclusivamente vı́a el driver (protección del
recurso) mediante una interfaz que abstrae de los detalles de implementación
(abstracción de hardware).
Se dan tanto en presencia de sistemas operativos (seguirán el modelo de drivers
para el sistema particular) como en su ausencia (presentarán la forma de una API
que el desarrollador podrá integrar en su sistema).
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 50 / 54
Capas del software en un sistema embebido
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 51 / 54
Drivers como capas de abstracción de hardware
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 52 / 54
Device drivers
Con excepción de sistemas muy simples, la atención de cada dispositivo (ISRs y tareas)
se encapsula en device drivers (módulo/subsistema).
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 53 / 54
Referencias
Barr, M., Massa, A. Programming Embedded Systems: With C and GNU
Development Tools, 2nd Edition. O’Reilly Media. 2006. ISBN: 978–0596009830.
Capı́tulo 10.
Li, Q., Yao, C. Real-time concepts for Embedded Systems. CMP. 2003. ISBN:
978–1578201242. Capı́tulos 5, 14 y 15.
Simon, D. An Embedded Software Primer. Addison-Wesley Professional. 1999.
ISBN: 978–0201615692. Capı́tulo 5.
Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación)
Clase 04: Arquitecturas de Software Embebido 2019 54 / 54

Más contenido relacionado

Similar a 3.1.arquitectura.pdf

Procesos de los Sistemas Operativos
Procesos de los Sistemas OperativosProcesos de los Sistemas Operativos
Procesos de los Sistemas OperativosJaderValdivia
 
Kailet ensayo diseño de software
Kailet ensayo diseño de softwareKailet ensayo diseño de software
Kailet ensayo diseño de softwareMaryam Claro
 
Kendall&kendall mantenimiento prueba
Kendall&kendall mantenimiento pruebaKendall&kendall mantenimiento prueba
Kendall&kendall mantenimiento pruebaFlavio Toalombo
 
Tecnologia e informática ii
Tecnologia e informática iiTecnologia e informática ii
Tecnologia e informática ii261977
 
Lectura fundamental 1
Lectura fundamental 1Lectura fundamental 1
Lectura fundamental 1JosDavidYate
 
TRABAJO INFORMÁTICA FINAL
TRABAJO INFORMÁTICA FINALTRABAJO INFORMÁTICA FINAL
TRABAJO INFORMÁTICA FINALAlee Jezias
 
Trabajo final de introduccion a la informatica
Trabajo final de introduccion a la informaticaTrabajo final de introduccion a la informatica
Trabajo final de introduccion a la informaticaYoselin17
 
Actividad 2 de tecnologia.docx
Actividad 2 de tecnologia.docxActividad 2 de tecnologia.docx
Actividad 2 de tecnologia.docxElizarojas11
 
Plan de Curso 336
Plan de Curso 336Plan de Curso 336
Plan de Curso 336rbrosabelen
 
Ambitos de desarrollo del ingeniero en sistemas
Ambitos de desarrollo del ingeniero en sistemasAmbitos de desarrollo del ingeniero en sistemas
Ambitos de desarrollo del ingeniero en sistemasdjgogo
 
AMBITOS DE DESARROLLO DEL INGENIERO EN SISTEMAS
AMBITOS DE DESARROLLO DEL INGENIERO EN SISTEMASAMBITOS DE DESARROLLO DEL INGENIERO EN SISTEMAS
AMBITOS DE DESARROLLO DEL INGENIERO EN SISTEMASdjgogo
 
Ambitos de desarrollo del ingeniero en sistemas
Ambitos de desarrollo del ingeniero en sistemasAmbitos de desarrollo del ingeniero en sistemas
Ambitos de desarrollo del ingeniero en sistemasdjgogo
 
Tecnologia actividad 2 9-3.pdf
Tecnologia actividad 2 9-3.pdfTecnologia actividad 2 9-3.pdf
Tecnologia actividad 2 9-3.pdfCamilaMuoz590596
 
Informatica mod1 2017
Informatica mod1 2017Informatica mod1 2017
Informatica mod1 2017iestpmagul
 
Ambitos de desarrollo del ingeniero en sistemas
Ambitos de desarrollo del ingeniero en sistemasAmbitos de desarrollo del ingeniero en sistemas
Ambitos de desarrollo del ingeniero en sistemasdjgogo
 
Trabajo final informatica
Trabajo final informaticaTrabajo final informatica
Trabajo final informaticaluisalejoha7
 
Tecnologia actividad 2.docx
Tecnologia actividad 2.docxTecnologia actividad 2.docx
Tecnologia actividad 2.docxbydaniela5
 
Primera Unidad de los Sistemas Operativos
Primera Unidad de los Sistemas OperativosPrimera Unidad de los Sistemas Operativos
Primera Unidad de los Sistemas OperativosAreli996
 

Similar a 3.1.arquitectura.pdf (20)

Procesos de los Sistemas Operativos
Procesos de los Sistemas OperativosProcesos de los Sistemas Operativos
Procesos de los Sistemas Operativos
 
Kailet ensayo diseño de software
Kailet ensayo diseño de softwareKailet ensayo diseño de software
Kailet ensayo diseño de software
 
Kendall&kendall mantenimiento prueba
Kendall&kendall mantenimiento pruebaKendall&kendall mantenimiento prueba
Kendall&kendall mantenimiento prueba
 
Tecnologia e informática ii
Tecnologia e informática iiTecnologia e informática ii
Tecnologia e informática ii
 
Lectura fundamental 1
Lectura fundamental 1Lectura fundamental 1
Lectura fundamental 1
 
TRABAJO INFORMÁTICA FINAL
TRABAJO INFORMÁTICA FINALTRABAJO INFORMÁTICA FINAL
TRABAJO INFORMÁTICA FINAL
 
6.2.5 puntos funcion
6.2.5   puntos funcion6.2.5   puntos funcion
6.2.5 puntos funcion
 
Trabajo final de introduccion a la informatica
Trabajo final de introduccion a la informaticaTrabajo final de introduccion a la informatica
Trabajo final de introduccion a la informatica
 
Actividad 2 de tecnologia.docx
Actividad 2 de tecnologia.docxActividad 2 de tecnologia.docx
Actividad 2 de tecnologia.docx
 
Plan de Curso 336
Plan de Curso 336Plan de Curso 336
Plan de Curso 336
 
5. tipos de software
5. tipos de software5. tipos de software
5. tipos de software
 
Ambitos de desarrollo del ingeniero en sistemas
Ambitos de desarrollo del ingeniero en sistemasAmbitos de desarrollo del ingeniero en sistemas
Ambitos de desarrollo del ingeniero en sistemas
 
AMBITOS DE DESARROLLO DEL INGENIERO EN SISTEMAS
AMBITOS DE DESARROLLO DEL INGENIERO EN SISTEMASAMBITOS DE DESARROLLO DEL INGENIERO EN SISTEMAS
AMBITOS DE DESARROLLO DEL INGENIERO EN SISTEMAS
 
Ambitos de desarrollo del ingeniero en sistemas
Ambitos de desarrollo del ingeniero en sistemasAmbitos de desarrollo del ingeniero en sistemas
Ambitos de desarrollo del ingeniero en sistemas
 
Tecnologia actividad 2 9-3.pdf
Tecnologia actividad 2 9-3.pdfTecnologia actividad 2 9-3.pdf
Tecnologia actividad 2 9-3.pdf
 
Informatica mod1 2017
Informatica mod1 2017Informatica mod1 2017
Informatica mod1 2017
 
Ambitos de desarrollo del ingeniero en sistemas
Ambitos de desarrollo del ingeniero en sistemasAmbitos de desarrollo del ingeniero en sistemas
Ambitos de desarrollo del ingeniero en sistemas
 
Trabajo final informatica
Trabajo final informaticaTrabajo final informatica
Trabajo final informatica
 
Tecnologia actividad 2.docx
Tecnologia actividad 2.docxTecnologia actividad 2.docx
Tecnologia actividad 2.docx
 
Primera Unidad de los Sistemas Operativos
Primera Unidad de los Sistemas OperativosPrimera Unidad de los Sistemas Operativos
Primera Unidad de los Sistemas Operativos
 

Más de ManuelGutirrez43

desarrollo de LIDERAZGO-TRANSFORMACIONAL(1).pdf
desarrollo de LIDERAZGO-TRANSFORMACIONAL(1).pdfdesarrollo de LIDERAZGO-TRANSFORMACIONAL(1).pdf
desarrollo de LIDERAZGO-TRANSFORMACIONAL(1).pdfManuelGutirrez43
 
ENCODER SENSORES Y ACONDICIONAMIENTOS DE SEÑALES.pdf
ENCODER SENSORES Y ACONDICIONAMIENTOS DE SEÑALES.pdfENCODER SENSORES Y ACONDICIONAMIENTOS DE SEÑALES.pdf
ENCODER SENSORES Y ACONDICIONAMIENTOS DE SEÑALES.pdfManuelGutirrez43
 
segundaclase-propiedades de los materiales_160829004312.pdf
segundaclase-propiedades de los materiales_160829004312.pdfsegundaclase-propiedades de los materiales_160829004312.pdf
segundaclase-propiedades de los materiales_160829004312.pdfManuelGutirrez43
 
Ley de los gases, química para principiantes.pdf
Ley de los gases, química para principiantes.pdfLey de los gases, química para principiantes.pdf
Ley de los gases, química para principiantes.pdfManuelGutirrez43
 
FLUJO MULTIFASICO, corte 1.pptx
FLUJO MULTIFASICO, corte 1.pptxFLUJO MULTIFASICO, corte 1.pptx
FLUJO MULTIFASICO, corte 1.pptxManuelGutirrez43
 
Ejercicios correlaciones.pdf
Ejercicios correlaciones.pdfEjercicios correlaciones.pdf
Ejercicios correlaciones.pdfManuelGutirrez43
 

Más de ManuelGutirrez43 (7)

desarrollo de LIDERAZGO-TRANSFORMACIONAL(1).pdf
desarrollo de LIDERAZGO-TRANSFORMACIONAL(1).pdfdesarrollo de LIDERAZGO-TRANSFORMACIONAL(1).pdf
desarrollo de LIDERAZGO-TRANSFORMACIONAL(1).pdf
 
ENCODER SENSORES Y ACONDICIONAMIENTOS DE SEÑALES.pdf
ENCODER SENSORES Y ACONDICIONAMIENTOS DE SEÑALES.pdfENCODER SENSORES Y ACONDICIONAMIENTOS DE SEÑALES.pdf
ENCODER SENSORES Y ACONDICIONAMIENTOS DE SEÑALES.pdf
 
segundaclase-propiedades de los materiales_160829004312.pdf
segundaclase-propiedades de los materiales_160829004312.pdfsegundaclase-propiedades de los materiales_160829004312.pdf
segundaclase-propiedades de los materiales_160829004312.pdf
 
Ley de los gases, química para principiantes.pdf
Ley de los gases, química para principiantes.pdfLey de los gases, química para principiantes.pdf
Ley de los gases, química para principiantes.pdf
 
FLUJO MULTIFASICO, corte 1.pptx
FLUJO MULTIFASICO, corte 1.pptxFLUJO MULTIFASICO, corte 1.pptx
FLUJO MULTIFASICO, corte 1.pptx
 
Ejercicios correlaciones.pdf
Ejercicios correlaciones.pdfEjercicios correlaciones.pdf
Ejercicios correlaciones.pdf
 
1.Sistemas Embebidos.pdf
1.Sistemas Embebidos.pdf1.Sistemas Embebidos.pdf
1.Sistemas Embebidos.pdf
 

Último

BEIBEN truck motor y CHASIS _103940.pptx
BEIBEN truck motor y CHASIS _103940.pptxBEIBEN truck motor y CHASIS _103940.pptx
BEIBEN truck motor y CHASIS _103940.pptxejbcemanvetac
 
propoketapropoketapropoketapropoketa.pptx
propoketapropoketapropoketapropoketa.pptxpropoketapropoketapropoketapropoketa.pptx
propoketapropoketapropoketapropoketa.pptxJenniferNatalyRomero
 
Mantenimientos básicos que debes dar a tu auto
Mantenimientos básicos que debes dar a tu autoMantenimientos básicos que debes dar a tu auto
Mantenimientos básicos que debes dar a tu autoMiguelManual2
 
ELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptx
ELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptxELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptx
ELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptxJeff Villaplana
 
SENATI - Plantilla Power Point - horizontal.pptx
SENATI - Plantilla  Power Point - horizontal.pptxSENATI - Plantilla  Power Point - horizontal.pptx
SENATI - Plantilla Power Point - horizontal.pptxluiizvm
 
345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdf
345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdf345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdf
345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdfJoseAlbertoRincon
 
sistema-electrico-carroceria del motor de un vehículo.pdf
sistema-electrico-carroceria del motor de un vehículo.pdfsistema-electrico-carroceria del motor de un vehículo.pdf
sistema-electrico-carroceria del motor de un vehículo.pdfcondorivillcaraninic
 
unidades de medida aplicadas en gastronomia.pdf
unidades de medida aplicadas en gastronomia.pdfunidades de medida aplicadas en gastronomia.pdf
unidades de medida aplicadas en gastronomia.pdfedutubercocina
 
3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...
3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...
3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...AileenCortez3
 
Manual de usuario de camioneta Mitsubishi L200.pdf
Manual de usuario de camioneta Mitsubishi L200.pdfManual de usuario de camioneta Mitsubishi L200.pdf
Manual de usuario de camioneta Mitsubishi L200.pdfotonimaster11
 
Capitulaciones-matrimoniales.pdddddddddddddptx
Capitulaciones-matrimoniales.pdddddddddddddptxCapitulaciones-matrimoniales.pdddddddddddddptx
Capitulaciones-matrimoniales.pdddddddddddddptxmarcelo478881
 
tipos de suspension automotriz -rea marlon.pdf
tipos de suspension automotriz -rea marlon.pdftipos de suspension automotriz -rea marlon.pdf
tipos de suspension automotriz -rea marlon.pdfmarlonrea6
 

Último (12)

BEIBEN truck motor y CHASIS _103940.pptx
BEIBEN truck motor y CHASIS _103940.pptxBEIBEN truck motor y CHASIS _103940.pptx
BEIBEN truck motor y CHASIS _103940.pptx
 
propoketapropoketapropoketapropoketa.pptx
propoketapropoketapropoketapropoketa.pptxpropoketapropoketapropoketapropoketa.pptx
propoketapropoketapropoketapropoketa.pptx
 
Mantenimientos básicos que debes dar a tu auto
Mantenimientos básicos que debes dar a tu autoMantenimientos básicos que debes dar a tu auto
Mantenimientos básicos que debes dar a tu auto
 
ELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptx
ELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptxELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptx
ELECTRICIDAD SISTEMA DE LUCES AUTOMOTRIZ.pptx
 
SENATI - Plantilla Power Point - horizontal.pptx
SENATI - Plantilla  Power Point - horizontal.pptxSENATI - Plantilla  Power Point - horizontal.pptx
SENATI - Plantilla Power Point - horizontal.pptx
 
345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdf
345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdf345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdf
345576088-Mapa-Conceptual-Mantenimiento-mecanica-industrial.pdf
 
sistema-electrico-carroceria del motor de un vehículo.pdf
sistema-electrico-carroceria del motor de un vehículo.pdfsistema-electrico-carroceria del motor de un vehículo.pdf
sistema-electrico-carroceria del motor de un vehículo.pdf
 
unidades de medida aplicadas en gastronomia.pdf
unidades de medida aplicadas en gastronomia.pdfunidades de medida aplicadas en gastronomia.pdf
unidades de medida aplicadas en gastronomia.pdf
 
3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...
3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...
3 Curso_Introduccion_a_la_Electroneumatica Movimientos y estados de conmutaci...
 
Manual de usuario de camioneta Mitsubishi L200.pdf
Manual de usuario de camioneta Mitsubishi L200.pdfManual de usuario de camioneta Mitsubishi L200.pdf
Manual de usuario de camioneta Mitsubishi L200.pdf
 
Capitulaciones-matrimoniales.pdddddddddddddptx
Capitulaciones-matrimoniales.pdddddddddddddptxCapitulaciones-matrimoniales.pdddddddddddddptx
Capitulaciones-matrimoniales.pdddddddddddddptx
 
tipos de suspension automotriz -rea marlon.pdf
tipos de suspension automotriz -rea marlon.pdftipos de suspension automotriz -rea marlon.pdf
tipos de suspension automotriz -rea marlon.pdf
 

3.1.arquitectura.pdf

  • 1. Clase 04: Arquitecturas de Software Embebido Sistemas Embebidos Prof: Lic. José H. Moyano Departamento de Ciencias e Ingenierı́a de la Computación 2019 Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 1 / 54
  • 2. Tareas e ISRs Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 2 / 54
  • 3. Tareas El software de un sistema embebido realiza diversas funciones tales como: atender y controlar dispositivos I realizar cómputos I medir intervalos de tiempo I configurar e inicializar el hardware I etc. A cada una de dichas funciones podemos asociar una unidad de ejecución que la implementa (Tarea). Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 3 / 54
  • 4. Tareas En Sistemas Operativos de Tiempo Real se habla de tareas como unidades de programa secuenciales y planificables. Tarea (Sistemas Embebidos): I Es una unidad de ejecución secuencial I Su ejecución se planifica o coordina de alguna manera I Posee cohesión funcional (se origina como resultado de descomponer funcionalmente al sistema) I La noción de tarea trasciende los constructores del lenguaje de programación (una tarea puede ser una función, módulo, método, objeto, etc. o simplemente una secuencia de código en una unidad mayor) Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 4 / 54
  • 5. Tareas Planificación y coordinación de tareas: I En ausencia de un SO, las tareas son atendidas y coordinadas por un módulo principal que se encarga de planificarlas de acuerdo a algún esquema. I En presencia de un SO, es el scheduler del sistema operativo quien abstrae al implementador de estos detalles. El implementador simplemente especifica sus tareas como unidades funcionales separadas, y la lógica de coordinación queda “oculta” por el sistema. En ambos casos, si existe comunicación entre tareas, hay que sincronizar su ejecución. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 5 / 54
  • 6. Tareas Tanto en presencia de Sistemas Operativos como sin ellos, podemos considerar que las tareas se encuentran en determinado estado: Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 6 / 54
  • 7. Tareas Las tareas suelen tener: I diversas prioridades. I deadlines (tiempos máximos en los cuáles la tarea debe cumplirse – tiempo real). La asignación de prioridades determinará qué tareas tienen privilegios para acceder al CPU. Los deadlines deben ser tenidos en cuenta para asegurar que ningún dispositivo deja de ser atendido en tiempo y forma. En sistemas con restricciones de tiempo real: Correctitud funcional + correctitud temporal. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 7 / 54
  • 8. ISR En sistemas que realizan E/S usando interrupciones, la ejecución de las tareas puede ser interrumpida por la ocurrencia de eventos notificados por el hardware. El control es transferido a rutinas que dan atención a dichos eventos y que poseen mayor prioridad que las tareas: las Interrupt Service Routines (ISRs). Las ISRs comparten con las tareas el hecho de: I Ser unidades de ejecución secuencial I Poseer cohesión funcional (se originan como resultado de descomponer funcionalmente al sistema) Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 8 / 54
  • 9. ISR Las ISRs se diferencian de las tareas en que: Inician su ejecución ante la ocurrencia de eventos asincrónicos No se rigen por los esquemas de planificación y coordinación habituales Su implementación se realiza mediante un constructor especı́fico del lenguaje de programación (normalmente una función con un calificador especial que denota su condición de ISR) generalmente la implementación funcional de un sistema está compuesta por un conjunto de Tareas e ISRs. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 9 / 54
  • 10. Tareas e ISR De la descomposición funcional de un sistema: Se identifican y especifican Tareas e ISRs Se determinan dependencias entre las mismas (datos y recursos compartidos, sincronización y comunicación, oportunidades de concurrencia, etc). Se fijan las restricciones temporales (tiempo real) Se aplican criterios de modularidad (optimizar tareas e ISRs) Se analiza el esquema y la posibilidad de planificación (por ej. Rate Monotonic Analysis) ante restricciones de tiempo real (el análisis de planificabilidad lo veremos más adelante). Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 10 / 54
  • 11. División tareas e ISR Teléfono celular simple Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 11 / 54
  • 12. División tareas e ISR Outside-in approach Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 12 / 54
  • 13. Caso de Estudio: Impresora 3D Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 13 / 54
  • 14. Caso de Estudio: Impresora 3D La impresora 3d derrite plástico, y lo deposita utilizando un estrusor en la cama, siguiendo el patrón de una pieza de tres dimensiones, que es lo que se desea imprimir. La máquina puede interpretar G code En una memoria microSD, se almacenan archivos en un sistema fat32 o NTFS, con el código G de diseños que pueden imprimirse Dos steppers controlan el movimiento del estrusor, en los ejes X y Z Un tercer stepper controla el movimiento de la cama en el eje Y Un cuarto stepper controla la entrada de filamento al estrusor Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 14 / 54
  • 15. Caso de Estudio: Impresora 3D La impresora 3d derrite plástico, y lo deposita utilizando un estrusor en la cama, siguiendo el patrón de una pieza de tres dimensiones, que es lo que se desea imprimir. Una resistencia calienta el estrusor, y otra calienta la cama donde se deposita la figura Un display muestra información de estado Una perilla permite al usuario controlar la máquina, a través de un menú que se muestra en el display Los steppers calibran su posición en los tres ejes con tres sensores de fin de carrera Sensores de temperatura miden la temperatura del estrusor y la cama. La temperatura de ambos elementos dependen del diseño Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 15 / 54
  • 16. Caso de Estudio: Impresora 3D Identificar las partes del sistema I Diagrama de bloques: Permiten describir sw y hw Identificar Tareas e ISRs (partición funcional) I Diagramas de Transición de Estados I Diagrama de Flujos Identificar dependencias y oportunidades de comunicación y sincronización Definir temporizados, prioridades y deadlines Modos de operación del sistema (idle, working, calibration, error, etc.) I Diagramas de Transición de Estados Protocolo de comunicación I Diagramas de secuencia Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 16 / 54
  • 17. Arquitecturas de Software Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 17 / 54
  • 18. Sobre las arquitecturas de software El esquema de planificación de tareas define la estructura del software embebido. La elección de qué arquitectura de software utilizar condiciona: I El tipo de respuesta del sistema ante eventos I La forma en que el sistema gestiona múltiples eventos (ej. prioridades) I La complejidad del sistema (testeo, mantenimiento, interoperabilidad, etc) A continuación analizaremos diversas arquitecturas de software usuales en sistemas embebidos, en orden creciente de complejidad. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 18 / 54
  • 19. Problema de Sistemas Embebidos Se desea desarrollar el software de un sistema embebido. Este sistema tiene una conexión SPI con un dispositivo, cuyos datos deben procesarse, y enviar por UART a un segundo dispositivo. A su vez, el sistema debe generar información propia, que debe enviar también por UART cada 20ms. Cada 1s, debe indicar que está activo haciendo que parpadee un LED. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 19 / 54
  • 20. Se cuenta con una función system init() que inicializa todo el sistema La función spi read(uint8 t *), verifica el flag del dispositivo para determinar si hay datos esperando, y en caso de haberlos, devuelve true, y guarda byte recibido en la variable pasada como parámetro. La función uart send(uint8 t *) devuelve true si la UART está disponible para enviar un byte, y de ser ası́, lo entrega al dispositivo para ser enviado. La función led toggle() enciende el led si está apagado, o lo apaga si está encendido. La funcion timer get ms() devuelve la cantidad de milisegundos transcurridos desde que se inició la ejecución del sistema. Por simplicidad, se supone que estos valores son infinitos y siempre válidos. La función own process(uint8 t *) realiza el procesamiento propio del dispositivo, y guarda los datos en el arreglo entregado como parámetro. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 20 / 54
  • 21. La arquitectura desarrollada se llama Round-Robin. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 21 / 54
  • 22. Ejemplo de Arquitectura Round-Robin Multı́metro digital Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 22 / 54
  • 23. Propiedades de la Arquitectura Round-Robin Útil cuando: Hay pocos dispositivos No hay restricciones de tiempo importantes No hay tiempos de procesamiento demasiado elevados en respuesta a eventos. No es adecuada cuando: El bucle se hace demasiado largo (o un dispositivo necesita ser atendido rápidamente) Se pueden perder eventos o datos Añadir un nuevo dispositivo puede comprometer los resultados alcanzados con este esquema Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 23 / 54
  • 24. Problema de sistemas embebidos 2 Cuando se puso en funcionamiento el sistema, el equipo detectó que si se recibe un dato por SPI antes de ejecutar own process, puede suceder que el dispositivo envı́e otro dato antes de que own process termine. Como resultado, se sobreescribe el dato anterior con el nuevo, y este primer dato se pierde. El equipo de desarrollo ha decidido solucionarlo configurando tanto el SPI, como el UART, para que generen interrupciones al recibir y terminar de enviar. Las dos ISR se declaran como ISR(UART tx) e ISR(SPI rx) respectivamente. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 24 / 54
  • 25. La arquitectura desarrollada se llama Round-Robin con interrupciones. Es la que propone Arduino. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 25 / 54
  • 26. Comparando prioridades RR y RR con int Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 26 / 54
  • 27. Caracterı́sticas Round-Robin con interrupciones El código de cada tarea corre a la misma prioridad (introduce latencias importantes en presencia de otras tareas demandantes en el tiempo). I Opción 1: Mover el código de la tarea a su ISR (complica los tiempos de atención de los eventos de las demás tareas). I Opción 2: Incrementar la frecuencia de polling de las tareas demandantes (por ej. chequeando flags varias veces por ciclo). Es un esquema limitado: Mientras más veces se chequean los flags de una tarea, más demora potencial introducimos en la atención de las otras. Tiempos largos de respuesta si justo ocurre el evento inmediatamente después de que se pasó el polling del flag. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 27 / 54
  • 28. Problema de Sistemas Embebidos 3 Las funciones del sistema original se ampliaron. I Debe recuperar de la EEPROM parámetros de configuración que deben reportarse al inicio, hacia el sistema 2 a través de la UART. I Un nuevo LED azul debe parpadear cada vez que se realice una transmisión al sistema 2. I Un nuevo LED verde debe parpadear cada vez que se realice una recepción del sistema 1. I Luego de 5 segundos sin recibir información del sistema 1, debe encenderse un nuevo LED rojo. Cuando regresa a la normalidad, debe apagarse. I Cada 30 segundos, debe enviar al sistema 1 un mensaje solicitando información de estado. Esta información de estado deben remitirse al sistema 2. Hay también rumores que se piensa reemplazar el microcontrolador con otro de menor costo, de otro fabricante. Las funciones spi read y uart send puede que no estén disponibles o tengan otros nombres. El timer tiene pocos bits y desbordará rápidamente. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 28 / 54
  • 29. El equipo de desarrollo entiende que el diseño debe separar el software en módulos. I Un único timer es insuficiente para todos los requisitos de temporizado, y se debe prevenir el desbordamiento. I Debe poder reportarse a las capas superiores del sistema cuando un evento requiera atención. I El hardware debe abstraerse a través de device drivers. Se utilizará una nueva arquitectura, function-queue-scheduling que ofrece una función function post(* void(fn)(void)) que permite encolar una funcion a ejecutar luego, y otra función, function run() que ejecuta la próxima función en cola. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 29 / 54
  • 30. Caracterı́sticas Function-Queue-Scheduling Funciones largas de baja prioridad pueden comprometer los tiempos de respuesta de las funciones de alta prioridad. Si bien se puede reestructurar en bloques menores las rutinas largas (algo complejo de hacer), en el fondo la planificación de las rutinas no es apropiativa. Para escenarios de mayor complejidad se utilizan sistemas operativos embebidos (RTOS). Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 30 / 54
  • 31. Funciones de callback Un callback es una función que se entrega como parámetro, esperando que esta función sea llamada en algún momento, bajo alguna condición. Se las clasifica de sincrónicas cuando se espera que la sea llamada antes del retorno de la función; y asincrónicas cuando pueden ocurrir más adelante, luego de que la función terminó su ejecución. También llamadas señales o eventos. Se utilizan también en el desarrollo de aplicaciones en servidores y sistemas de escritorio. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 31 / 54
  • 32. Callbacks en function-queue-scheduling Las funciones de callback permiten organizar el software en módulos independientes en sistemas embebidos con function-queue-scheduling. Por ejemplo, se puede escribir un módulo que administre un dispositivo, e informe al programa principal o a otro módulo cliente cuando se presenta un evento que hay que atender. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 32 / 54
  • 33. Callbacks en function-queue-scheduling Convenciones En general las rutinas de interrupción agregan una función a la cola de funciones para reportar el evento. Se evita llamar a funciones de callback desde rutinas de interrupción, porque se pierde el control de la duración y las actividades que se están realizando dentro de una rutina de interrupción. Si es necesario llamar a funciones de callback desde una rutina de interrupción, se toma una convención para informar de esto al programador. Por ejemplo, en TinyOS se nombran esas funciones como async. Las funciones de callback no llaman a otras funciones de callback. Si una función de callback necesita llamar a otra función de callback, pone otra función en la cola que hará la llamada. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 33 / 54
  • 34. Arquitectura RTOS Para escenarios complejos: Real-Time Operating Systems. La aplicación se estructura en un conjunto de ISRs y tareas que se sincronizan. Las ISRs señalizan a las tareas. Las tareas son planificadas por el RTOS (prioridades, apropiación, etc.). Los mecanismos de sincronización (al igual que otros servicios) son provistos por el Sistema Operativo. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 34 / 54
  • 35. Arquitectura RTOS El bucle principal ahora forma parte del scheduler del sistema operativo. La sincronización y planificación son servicios provistos por el RTOS. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 35 / 54
  • 36. Comparación de prioridades Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 36 / 54
  • 37. Caracterı́sticas Arquitectura RTOS El tiempo entre un evento y su atención dependen del quantum asignado a cada tarea (además de la latencia de interrupción, tiempo del cambio de contexto, etc.). Si se cambia una tarea, el esquema de temporizado continúa siendo estable (cambios en las tareas menos prioritarias no afectan a los tiempos de respuesta de las tareas más prioritarias). Los RTOS proveen muchos servicios adicionales. Desventaja: El RTOS consume recursos (el scheduler insume tiempo), se requiere espacio en memoria para alojarlo, etc. Un sistema simple como el ATMega328P tiene problemas para cumplir con todas sus funciones si además aloja un RTOS. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 37 / 54
  • 38. Seleccionando una arquitectura Elegir la más simple posible dentro de los requerimientos funcionales y temporales de la aplicación. Ciertas soluciones utilizan arquitecturas hı́bridas. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 38 / 54
  • 39. Criterios de modularidad Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 39 / 54
  • 40. Analizar dependencias Analizar las dependencias entre los dispositivos y el resto del sistema constituye un factor clave al momento de descomponer el sistema en tareas e ISRs. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 40 / 54
  • 41. Dispositivos activos Los dispositivos activos producen interrupciones La atención de este tipo de dispositivos tiene fuertes restricciones temporales (ISRs) y existe un mecanismo de comunicación inter-tarea entre la ISR y la tarea. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 41 / 54
  • 42. Tareas activas Ejemplos Tareas asincrónicas: reciben eventos aperiódicos. Tareas sincrónicas: reciben eventos periódicos o su operación está sincronizada con otras tareas del sistema. Tareas que controlan el acceso a un dispositivo compartido. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 42 / 54
  • 43. Recomendaciones tareas activas Asignar tareas separadas para cada dispositivo de E/S que presente un comportamiento asincrónico (el dispositivo fija la tasa de transferencia). Combinar tareas para dispositivos que interrumpen infrecuentemente o cuyos deadlines (tiempo real) son largos. Asignar diferentes tareas a dispositivos que presentan tasas de transferencia dispares. Asignar prioridades más altas a las tareas asociadas a dispositivos que generan interrupciones (en general estos dispositivos requieren tiempos de respuesta más demandantes). Asignar una tarea que gestione el acceso a dispositivos compartidos (dispositivos que deben ser accedidos por múltiples tareas). Utilizar tareas de despacho de eventos para aquellos dispositivos que requieran proveer información a múltiples tareas. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 43 / 54
  • 44. Dispositivos pasivos Los dispositivos pasivos no producen interrupciones El control en la comunicación está en manos de la tarea (normalmente polling o respuesta a eventos de otras tareas). Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 44 / 54
  • 45. Tareas pasivas Ejemplos Tareas que operan sobre el dispositivo esporádicamente. Tareas que realizan polling a intervalos aperiódicos. Tareas de despacho de eventos (originados a partir del polling) hacia otras tareas del sistema. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 45 / 54
  • 46. Recomendaciones tareas pasivas Asignar una tarea para manejar dispositivos que se operan eventualmente o cuyos deadlines no son urgentes. Asignar tareas individuales para cada dispositivo que necesite ser sondeado/escrutado a diferentes tasas (evitar under/oversampling). Disparar el polling a dispositivos pasivos mediante timers (evitar delays en SW que podrı́an demorarse ante la ocurrencia de interrupciones). Incrementar la prioridad de las tareas que realizan polling de mayor frecuencia (sólo hasta el nivel necesario, sino se corre el riesgo de sobre-ocupar el cpu). Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 46 / 54
  • 47. Criterios de modularidad Una vez identificadas las tareas e ISRs, y teniendo en cuenta sus prioridades relativas es necesario: Identificar las dependencias entre eventos (tareas que producen información que otras necesitan) Identificar dependencias temporales: I Identificar actividades crı́ticas y urgentes I Identificar las tasas de ejecución de tareas periódicas I Identificar cohesión temporal: aquellas porciones de código que se ejecutan en un mismo momento (por ej. dependen de un mismo evento) pueden agruparse en una tarea para reducir la sobrecarga. Identificar actividades limitadas por CPU (intensivas en procesamiento) y asignarles prioridades bajas. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 47 / 54
  • 48. Criterios de modularidad Una vez identificadas las tareas e ISRs, y teniendo en cuenta sus prioridades relativas es necesario: Identificar cohesión funcional: agrupar en tareas funciones relacionadas o tareas que comunican grandes cantidades de datos. Identificar tareas de propósitos especı́ficos: agrupar tareas que se combinan para lograr un propósito particular y tratarlas como unidades funcionales separadas. Identificar cohesión secuencial: agrupar tareas que revisten un ordenamiento secuencial en una única tarea, reduce los recursos consumidos por las mismas y simplifica el diseño. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 48 / 54
  • 49. Device drivers Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 49 / 54
  • 50. Acerca de los device drivers Son porciones de software destinadas a aislar al resto del sistema de los detalles especı́ficos de un dispositivo particular de hardware. El acceso al dispositivo se realiza exclusivamente vı́a el driver (protección del recurso) mediante una interfaz que abstrae de los detalles de implementación (abstracción de hardware). Se dan tanto en presencia de sistemas operativos (seguirán el modelo de drivers para el sistema particular) como en su ausencia (presentarán la forma de una API que el desarrollador podrá integrar en su sistema). Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 50 / 54
  • 51. Capas del software en un sistema embebido Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 51 / 54
  • 52. Drivers como capas de abstracción de hardware Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 52 / 54
  • 53. Device drivers Con excepción de sistemas muy simples, la atención de cada dispositivo (ISRs y tareas) se encapsula en device drivers (módulo/subsistema). Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 53 / 54
  • 54. Referencias Barr, M., Massa, A. Programming Embedded Systems: With C and GNU Development Tools, 2nd Edition. O’Reilly Media. 2006. ISBN: 978–0596009830. Capı́tulo 10. Li, Q., Yao, C. Real-time concepts for Embedded Systems. CMP. 2003. ISBN: 978–1578201242. Capı́tulos 5, 14 y 15. Simon, D. An Embedded Software Primer. Addison-Wesley Professional. 1999. ISBN: 978–0201615692. Capı́tulo 5. Prof: Lic. José H. Moyano (Departamento de Ciencias e Ingenierı́a de la Computación) Clase 04: Arquitecturas de Software Embebido 2019 54 / 54