betcon2013-aplicaciones con rtos y microcontroladores

65
Desarrollo Aplicaciones con Sistemas Operativos en Tiempo Real para Microcontroladores Microchip PIC - FreeRTOS

Upload: haibane-nathaly

Post on 01-Dec-2015

59 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Desarrollo Aplicaciones con Sistemas Operativos en Tiempo Real para Microcontroladores

Microchip PIC - FreeRTOS

Page 2: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

1. Introducción

Page 3: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Sistema Embebido

• Es un sistema computacional

• Recursos limitados

• Realizan una o algunas pocas funciones dedicadas

Page 4: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Sistemas de Hilo Único

Page 5: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Sistemas de Hilo Único

Page 6: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 7: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 8: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 9: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 10: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Por qué usar un RTOS?

Page 11: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 12: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Partes de un RTOS 1

• Planificador (scheduler)

– Administra el tiempo del CPU

– Determina ejecución tareas

– Reemplaza tareas en ejecución debido eventos

Page 13: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Partes de un RTOS 2

• Servicios RTOS

– Manejo interrupciones

– Temporizadores

– Administración de memoria

– Entradas / salidas (IO’s)

Page 14: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Partes de un RTOS 3

• Sincronización y mensajería

– Colas

– Semáforos

– Mutexes

Page 15: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

2. FreeRTOS

Page 16: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 17: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 18: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

2. Tareas en FreeRTOS

Page 19: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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)

Page 20: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Tipos de Tareas

• 3 tipo de tareas

– Periódicas

– Aperiódicas

– Procesamiento Continuo

Page 21: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 22: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 23: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Funciones Importantes

• Funciones para trabajar con Tareas:

– portBASE_TYPE xTaskCreate(…);

– Void vTaskStartScheduler(void);

– Void vPrintString(const char*);

Page 24: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Crear Tareas en FreeRTOS

• vTaskCreate()

Page 25: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Crear Tareas en FreeRTOS

• Parámetros vTaskCreate(): – pvTaskcode

– PcName

– usStackDepth

– pvParameters

– uxPriority

– pxCreatedTask

• Retorna – pdTRUE – errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY

Page 26: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Ejemplo Tarea en FreeRTOS

Page 27: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Ejemplo Tarea en FreeRTOS

Page 28: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Ejemplo Tarea en FreeRTOS

Page 29: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Ejemplo Tarea en FreeRTOS

Page 30: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Ejemplo Tarea en FreeRTOS

Page 31: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Ejemplo Tarea en FreeRTOS

Page 32: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Ejemplo Tarea en FreeRTOS

Page 33: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Ejemplo Tarea en FreeRTOS

Page 34: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Estados de las Tareas

Page 35: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Temporizadores de Software

• Funciones

– vTaskDelay(portTickType xTickToDelay)

– vTaskDelayUntil(….)

• La tarea pasa al estado de Bloqueo

Page 36: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

3. Planificador en FreeRTOS

Page 37: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Tipos de Planificación

• Planificador (scheduler)

– Cooperative

– Preemptive

– Round – Robin

Page 38: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Planificación - Schedulling

• Planificador (scheduler)

– Cooperative

– Preemptive

– Round – Robin

Page 39: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 40: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Algoritmo Planificación

• En FreeRTOS

– TICK_RATE_HZ

– Segmento de tiempo

Page 41: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 42: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 43: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 44: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Temporizadores de Software

• vTaskDelay(….)

– Produce una demora

– Cede control CPU

• vTaskDelayUntil(….)

– Tiempo constate entre llamadas sucesivos

Page 45: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 46: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

4. Sincronización de Tareas

Page 47: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Tareas Aperiódicas

• Bloqueada hasta que ocurra un evento

• Semaforos

• Se desea que las tareas de mayor prioridad sedan el CPU

Page 48: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Semáforos

• Mismo concepto un semáforo vial

• Restringe el acceso a un sección particular del programa

• Es una Herramienta Sincronización

Page 49: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Herramienta Sincronizacion

• Mismo concepto un semáforo vial

• Restringe el acceso a un sección particular del programa

Page 50: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

5. Manejo de Colas

Page 51: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 52: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 53: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 54: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Funcionamiento de una COla

Page 55: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

6. Administración de Recursos

Page 56: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 57: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 58: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 59: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 60: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 61: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 62: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 63: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

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

Page 64: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

Preguntas

Page 65: Betcon2013-Aplicaciones Con RTOS y Microcontroladores

GRACIAS!!!