Betcon2013-Aplicaciones Con RTOS y Microcontroladores
-
Upload
haibane-nathaly -
Category
Documents
-
view
71 -
download
4
Transcript of Betcon2013-Aplicaciones Con RTOS y Microcontroladores
![Page 1: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/1.jpg)
Desarrollo Aplicaciones con Sistemas Operativos en Tiempo Real para Microcontroladores
Microchip PIC - FreeRTOS
![Page 2: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/2.jpg)
1. Introducción
![Page 3: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/3.jpg)
Sistema Embebido
• Es un sistema computacional
• Recursos limitados
• Realizan una o algunas pocas funciones dedicadas
![Page 4: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/4.jpg)
Sistemas de Hilo Único
![Page 5: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/5.jpg)
Sistemas de Hilo Único
![Page 6: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/6.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/7.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/8.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/9.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/10.jpg)
Por qué usar un RTOS?
![Page 11: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/11.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/12.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/13.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/14.jpg)
Partes de un RTOS 3
• Sincronización y mensajería
– Colas
– Semáforos
– Mutexes
![Page 15: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/15.jpg)
2. FreeRTOS
![Page 16: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/16.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/17.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/18.jpg)
2. Tareas en FreeRTOS
![Page 19: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/19.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/20.jpg)
Tipos de Tareas
• 3 tipo de tareas
– Periódicas
– Aperiódicas
– Procesamiento Continuo
![Page 21: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/21.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/22.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/23.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/24.jpg)
Crear Tareas en FreeRTOS
• vTaskCreate()
![Page 25: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/25.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/26.jpg)
Ejemplo Tarea en FreeRTOS
![Page 27: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/27.jpg)
Ejemplo Tarea en FreeRTOS
![Page 28: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/28.jpg)
Ejemplo Tarea en FreeRTOS
![Page 29: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/29.jpg)
Ejemplo Tarea en FreeRTOS
![Page 30: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/30.jpg)
Ejemplo Tarea en FreeRTOS
![Page 31: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/31.jpg)
Ejemplo Tarea en FreeRTOS
![Page 32: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/32.jpg)
Ejemplo Tarea en FreeRTOS
![Page 33: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/33.jpg)
Ejemplo Tarea en FreeRTOS
![Page 34: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/34.jpg)
Estados de las Tareas
![Page 35: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/35.jpg)
Temporizadores de Software
• Funciones
– vTaskDelay(portTickType xTickToDelay)
– vTaskDelayUntil(….)
• La tarea pasa al estado de Bloqueo
![Page 36: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/36.jpg)
3. Planificador en FreeRTOS
![Page 37: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/37.jpg)
Tipos de Planificación
• Planificador (scheduler)
– Cooperative
– Preemptive
– Round – Robin
![Page 38: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/38.jpg)
Planificación - Schedulling
• Planificador (scheduler)
– Cooperative
– Preemptive
– Round – Robin
![Page 39: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/39.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/40.jpg)
Algoritmo Planificación
• En FreeRTOS
– TICK_RATE_HZ
– Segmento de tiempo
![Page 41: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/41.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/42.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/43.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/44.jpg)
Temporizadores de Software
• vTaskDelay(….)
– Produce una demora
– Cede control CPU
• vTaskDelayUntil(….)
– Tiempo constate entre llamadas sucesivos
![Page 45: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/45.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/46.jpg)
4. Sincronización de Tareas
![Page 47: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/47.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/48.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/49.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/50.jpg)
5. Manejo de Colas
![Page 51: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/51.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/52.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/53.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/54.jpg)
Funcionamiento de una COla
![Page 55: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/55.jpg)
6. Administración de Recursos
![Page 56: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/56.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/57.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/58.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/59.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/60.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/61.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/62.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/63.jpg)
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](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/64.jpg)
Preguntas
![Page 65: Betcon2013-Aplicaciones Con RTOS y Microcontroladores](https://reader031.fdocumento.com/reader031/viewer/2022012404/55cf9d38550346d033acbb40/html5/thumbnails/65.jpg)
GRACIAS!!!