este documento muestra los conceptos básicos, y información detallada para la realización del proyecto.Descripción completa
Descrição: Programação.
Descripción de los microcontroladores y sus variantes.Descripción completa
microcontroladoresDescripción completa
descripción breve de la diferencia entre un microcontrolador y un micorprocesador.Descripción completa
Descripción: Utilización PWM
Teoria de los microcontroladoresDescripción completa
sensor de temperatura y microDescripción completa
Clase de circuitos y microcontroladores, inicial, para entender como funcionan
Microprocesadores y Microcontroladores
Microprocesadores y Microcontroladores
Microcontroladores
Descripción completa
Microprocesadores y MicrocontroladoresDescripción completa
Carlos A. Reyes (en negro)
libre
Micro
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 Realiz an 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 –
•
Fácil de implementar –
•
No tiene costo “FreeRTOS”
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
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 inter intercambio cambio •
•
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