Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Desarrollo Aplicaciones con Sistemas Operativos en Tiempo Real para Microcontroladores Microchip PIC - FreeRTOS 1. Int

Views 56 Downloads 0 File size 856KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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!!!