Desarrollo Aplicaciones con Sistemas Operativos en Tiempo Real

Anuncio
Desarrollo Aplicaciones
con Sistemas Operativos
en Tiempo Real para
Microcontroladores
Microchip PIC - FreeRTOS
1. Introducción
Sistema Embebido
• Es un sistema computacional
• Recursos limitados
• Realizan una o algunas pocas funciones
dedicadas
Sistemas de Hilo Único
Sistemas de Hilo Único
Que es un SO?
• Programa que gestiona el Hardware de
un equipo
• Proporciona una base para programas
aplicación
• Intermediario entre el Usuario y el
Hardware
• Ejecutar programas y resolver problemas
fácilmente
Que es un RTOS?
•
•
•
•
Sistema Operativo en Tiempo Real
(Real Time Operating System)
Cumplir compromisos temporales
Se emplea cuando hay que administrar
varias tareas con plazos de tiempo
estrictos
Sistema de Tiempo Real
• Esta definido por:
– Los eventos externos que debe atender
– La respuesta ante esos eventos
– Requerimientos temporales de las
respuestas a eventos
Por qué usar un RTOS?
• Para cumplir compromisos temporales
estrictos
• Para simplificar manejo del tiempo
– Uso de temporizadores
• Multitarea
• Escalabilidad
• Reutilización de código
Por qué usar un RTOS?
Tomar en Cuenta…
• Se gasta tiempo de CPU en Schedulling
• Gasta memoria
• Se gasta memoria de control dedicada a
cada tarea (TCB – Task Control Block)
• Cuidadoso análisis de tiempos para
eventos y respuestas
Partes de un RTOS 1
• Planificador (scheduler)
– Administra el tiempo del CPU
– Determina ejecución tareas
– Reemplaza tareas en ejecución debido
eventos
Partes de un RTOS 2
• Servicios RTOS
– Manejo interrupciones
– Temporizadores
– Administración de memoria
– Entradas / salidas (IO’s)
Partes de un RTOS 3
• Sincronización y mensajería
– Colas
– Semáforos
– Mutexes
2. FreeRTOS
Características
• Código Abierto
– No tiene costo “FreeRTOS”
• Fácil de implementar
– Existe mucha Documentación !
• Pensado para Microcontroladores
– Escrito mayormente en C
– Es liviano en tamaño de código
Características
• MicroKernel de Tiempo Real
– Servicios mínimos e indispensables
• Modo Cooperativo, Preemptive o mixto
• Ofrece funciones de:
– Temporización
– Comunicación y sincronización entre tareas
2. Tareas en FreeRTOS
Tareas - Tasks
• Es una pieza de código secuencial que
tiene como objetivo el cumplir con
alguna función de nuestro sistema
embebido
• Cada Tarea posee un conjunto de
recursos que identifican el estado de
ejecución (CONTEXTO)
Tipos de Tareas
• 3 tipo de tareas
– Periódicas
– Aperiódicas
– Procesamiento Continuo
Tareas - Contexto
• Cada Tarea posee un conjunto de
recursos sus respectivo estado de
ejecución (CONTEXTO)
– IP (Instruction pointer)
– SP (Stack Pointer)
– Registros de CPU
– Contenido de la pila en uso
Como es un Tarea en FreeRTOS?
• Richard Barry dice:
– Se implementan con funciones de C
– Deben devolver void
– Deben recibir un puntero a void como
parametro
• No deben incluir return
• No deben ejecutarse hasta la llave de
cierre
Funciones Importantes
• Funciones para trabajar con Tareas:
– portBASE_TYPE xTaskCreate(…);
– Void vTaskStartScheduler(void);
– Void vPrintString(const char*);
Crear Tareas en FreeRTOS
• vTaskCreate()
Crear Tareas en FreeRTOS
• Parámetros vTaskCreate():
–
–
–
–
–
–
pvTaskcode
PcName
usStackDepth
pvParameters
uxPriority
pxCreatedTask
• Retorna
– pdTRUE
– errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY
Ejemplo Tarea en FreeRTOS
Ejemplo Tarea en FreeRTOS
Ejemplo Tarea en FreeRTOS
Ejemplo Tarea en FreeRTOS
Ejemplo Tarea en FreeRTOS
Ejemplo Tarea en FreeRTOS
Ejemplo Tarea en FreeRTOS
Ejemplo Tarea en FreeRTOS
Estados de las Tareas
Temporizadores de Software
• Funciones
– vTaskDelay(portTickType xTickToDelay)
– vTaskDelayUntil(….)
• La tarea pasa al estado de Bloqueo
3. Planificador en FreeRTOS
Tipos de Planificación
• Planificador (scheduler)
– Cooperative
– Preemptive
– Round – Robin
Planificación - Schedulling
• Planificador (scheduler)
– Cooperative
– Preemptive
– Round – Robin
Algoritmo Planificación
• Fixed priority preemptive scheluing
• Ejecuta la tarea de mayor prioridad
• Si existen dos tareas con = prioridad
– Retira tarea en ejecución
– Round Robin
Algoritmo Planificación
• En FreeRTOS
– TICK_RATE_HZ
– Segmento de tiempo
Algoritmo Planificación
• Un valor bajo TICK_RATE hace que el
sistema sea lento
• TICK_RATE hace que el scheduler trabaje
mas seguido
• TICK_RATE valor de compromiso entre
estos dos extremos
Cambio de Contexto
• Context switching
– Scheudler invoca al Dispatcher
– Guarda el contexto actual y lo reemplaza
– Por esta razón se reserva un bloque de
memoria de datos para cada tarea
Consideraciones de Diseño
• Asignar prioridades de acuerdo a la
importancia
• Evitar el “starving” de tareas de menor
prioridad
• Análisis detallado de:
– Eventos
– Compromisos temporales
Temporizadores de Software
• vTaskDelay(….)
– Produce una demora
– Cede control CPU
• vTaskDelayUntil(….)
– Tiempo constate entre llamadas sucesivos
Tareas Periódicas
• En FreeRTOS se implementan mediante
la función:
– vTaskDelayUntil()
• Pasa mayor parte de su tiempo en
estado de bloqueo y cuando expira el
tiempo pasa a estado Ready
4. Sincronización de Tareas
Tareas Aperiódicas
• Bloqueada hasta que ocurra un evento
• Semaforos
• Se desea que las tareas de mayor
prioridad sedan el CPU
Semáforos
• Mismo concepto un semáforo vial
• Restringe el acceso a un sección
particular del programa
• Es una Herramienta Sincronización
Herramienta Sincronizacion
• Mismo concepto un semáforo vial
• Restringe el acceso a un sección
particular del programa
5. Manejo de Colas
Intercambio de Datos entre Tareas
• Alternativa Variables Globales, pero:
– Cuidar el acceso al recurso
– Tareas aperiodicas
• Necesidad de un Mecanismo de
comunicación sincronizado
• Cuando una tarea produce datos mas
rápido de los que se los consume
Solucion al intercambio
• Usar Colas (queues)
• Son visibles por todas las tareas
– Deben ser creadas de forma global
• Incorporan mecanismo de sincronizacion
• Se puede bloquear al leer/escribir datos
Solucion al intercambio
• Usar Colas (queues)
• Son visibles por todas las tareas
– Deben ser creadas de forma global
• Incorporan mecanismo de sincronización
• Se puede bloquear al leer/escribir datos
Funcionamiento de una COla
6. Administración de Recursos
Problemáticas de Concurrencia
• Tareas pueden requerir usar un mismo
recurso al mismo tiempo
– Existe cambio de contexto
– Ejemplo escribir en un LCD
– Ejemplo Escribir un UART
Exclusión mutua
• Solución mediante turnado de procesos
• FreeRTOS ofrece varias alternativas
– Deshabilitar interrupciones
• Sistema se vuelve cooperativo
• Protege contra otras tareas y no escucha
eventos
– Suspender el scheduler
– Mutex
Exclusión mutua
• Solución mediante turnado de procesos
• FreeRTOS ofrece varias alternativas
– Deshabilitar interrupciones
• Sistema se vuelve cooperativo
• Protege contra otras tareas y no escucha
eventos
– Suspender el scheduler
– Subir la prioridad de la tarea
– Mutex
Mutex del Sistemas
• Con una llave de acceso al recurso
• Solo puede acceder al recurso la tarea
que tiene tomado el mutex
• La tarea debe devolver el mutex cuando
la tarea termina su trabajo
Problema del Mutex
• Inversión de prioridades
– Tarea de prioridad alta esta bloqueada
espera su tiempo de ejecutar
– Mientras una tarea de baja prioridad toma
un mutex para acceder a un recurso
protegido durante tiempo prolongado
– La tarea de alta prioridad pasa al estado
ready e intenta acceder al recurso pero este
se encuentra ocupado por la tarea de baja
prioridad
Problema del Mutex
• Inversión de prioridades
– Ahora imaginemos una tercera tarea de
prioridad intermedia que pasa al estado
Ready durante otro tiempo prolongado
– La tarea de alta prioridad vuelve a esperar a
que la tarea de baja prioridad libere el
mutex para terminar de usar el recurso
– Free RTOS incorpora Herencia de Prioridad
Herencia de Prioridad
• El Scheduler eleva la prioridad de la
tarea (de baja prioridad)
– La eleva al nivel de la tara de mayor
prioridad
– Y que pasa cuando se tiene la misma
prioridad en dos tareas???
– Roun Robin = segmento de tiempo
Herencia de Prioridad
• Excepción al algoritmo Fixed priority
preemptive scheduling
• No soluciona la inversión de prioridad
• Reduce la duración de la inversión
Preguntas
GRACIAS!!!
Descargar