Sistemas en tiempo real IM M E PL E N O I C A T N DE UN N O C L O TR DE Autores: Pisana, Pablo Picca, Ezequiel Díaz Vélez, Agustín Saavedra, Walter Elías M E S S O R O AF INTRODUCCION: En este trabajo se presentará un sistema de la vida cotidiana con características de tiempo real estricto (hard RT) y las herramientas con las cuales un sistema operativo en tiempo real cuenta para implementar la solución de forma correcta. Implementación: La solución se implementará con un sistema operativo en tiempo real de la empresa Micrium, llamado μC/OS-II o uCOS Este sistema operativo esta específicamente adaptado a un microprocesador de HCS12 MICRIUM μC/OS –II Es un Kernel de tiempo real preemtivo que utiliza un administrador de tareas basado en prioridades. El mismo esta especialmente diseñado para microcontroladores. Por mas de 15 años Micriuum perfecciono uCOS, lo que le permitio desarrollar nuevos productos para acelerar las faces de planificación y gestión de los recursos. Características: • Portado en mas de 100 microprocesadores. • Soporta microprocesadores desde 8 a 64 bits. Microcontroladores o DSP’s • Administrador de interrupciones hasta 256 anidamientos. • Gestiona hasta 64 tareas (8 reservadas para el sistema). • Proporciona servicios del sistema, (semaforos, colas, buzones, etc). MICRIUM μC/OS –II La administración de tareas de este kernel es parecida al algoritmo de planificación conocido como Rate Monotonic Scheduling (RMS). El RMS asume lo siguiente: • • • Todas las tareas son periódicas. Las tareas no se sincronizan con otras tareas. La programación preemtive debe implementarse para asegurar que la CPU ejecute las tareas de mayor prioridad que esten listas para correr. EN INFORMATICA PREEMTIVE ES EL ACTO DE INTERRUMPIR TEMPORALMENTE UNA TAREA LLEVADA A CABO SIN NECESIDAD DE SU COOPERACION Y CON LA INTENCION DE REANUDAR LA TAREA EN UN MOMENTO POSTERIOR. TAL CAMBIO SE CONOCE COMO CAMBIO DE CONTEXTO. MICRIUM μC/OS –II Interrupciones o ISR: Las ISR se apropiarán de los recursos solo en los casos en los que una vez atendidas signifiquen la reanudacion de una tarea de alta prioridad. uCOS tiene la capacidad de deshabilitar las interrupciones permitiendo que las secciones de tareas críticas no se interrumpan. Arquitectura de C/OS-II Api del sistema operativo El sistema operativo provee un conjunto de funciones que podemos llamar. Esta biblioteca de funciones es mejor llamada como API (Application Programming Interface). Una llamada a la API aparece como un nombre de la función deseada y termina con (). Un ejemplo sería OSTaskCreate (). tareas Las tareas en uCOS son bucles infinitos. tareas • • • • • • • • • Son una secuencia continua de las operaciones que se repiten cíclicamente. Pueden ser eliminadas cuando no son necesarias Son seteadas como inactivas si no es necesario que permanezca activo durante un periodo de tiempo determinado. uCOS puede administrar hasta 64 tareas, sin embargo, 8 son utilizados por el sistema . Para crear una tarea, cualquiera de los dos argumentos podrían ser utilizados: OSTaskCreate () y OSTaskCreateExt (). Cuando una tarea se crea , pasa a estado listo. Si la tarea es de alta prioridad, se le da el control de la CPU OSStart() activa el entorno multitarea poniendo en ejecución las tareas creadas. Sólo una tarea puede correr al mismo tiempo. tareas • • • • • Tareas listas sólo se ejecutará cuando las tareas de alta prioridad estén en el estado de espera o marcadas para permanecer dormidas. Las tareas que están corriendo pueden ser suspendidas entregando el control de la CPU mediante las funciones OSTimeDly() o OSTimeDlyHMSM(). La siguiente tarea de mayor prioridad lista tomara el control del la CPU. El estado de ejecución de una tarea puede ser suspendido hasta que se provoque un evento mediante el uso de OSSemPend (), OSMboxPend () o OSQpend (). La tarea obtendrá el estado de disponible, cuando se produce el evento. Estado de las tareas Planificador de tareas • • • • • • Las tareas de mayor prioridad se ejecutan primero. El planificador de tareas es llamado por el usuario mediante OSSched() Todo el código de la OSSched () está en la sección crítica y las interrupciones están deshabilitadas. El planificador se puede bloquear o desbloquear mediante el uso defunciones, OSSchedLock () o OSSchedUnlock (). La función de cambio de contexto es OS_TASK_SW ()(es llamada por OSSched()). uCOS utiliza el cambio de contexto para guardar los registros de procesador de la tarea. plANIFICADOR DE TAREAS Controlador de semaforos CONTROLADOR DE SEMAFOROS ESTE SISTEMA DEMO PROVEERA: • TEMPORIZACIONES DEL SEMAFORO N/S Y E/O • PULSADO DEL BOTON PARA SIMULAR SOLICITUD DE PEATON PARA CRUZAR. Implementacion La elección de uCOS para este proyecto nace de la necesidad de una solución rápida y efectiva de la problemática, avalado por los mas de 15 años de la empresa Micrium en el negocio. En cuanto al hardware se eligió la placa dragon 12 plus ya que estaba disponible y tenia ejemplos de código que se podían usar. Con los ejemplos, la mayor parte de la lógica para hacer la tarea propia de un secuenciador de semáforo se hizo rápidamente. Solo faltaba agregar comunicación entre procesos. Para solucionar esto se uso una función de consulta de flags. Esto se logro utilizando una función de uCOS, que permite exceder al estado de otras tareas. uCOS también maneja la pila y provee funcionalidades de mensaje entre tareas. También tiene un puerto para Uprbe, que es la herramienta para poner en cola interactivamente los Kernel de UCOS que estén corriendo mediante un enlace serie externo. Implementacion A continuacion el diagrama en bloques del sistema software El software de aplicación ha sido escrito en C y de la Asamblea con Freescale CodeWarrior Development Studio. El software se divide en las siguientes tareas: • • • • • INICIALIZACION CONTROL DEL TRAFICO DE VEHICULOS. CONTROL DEL TRAFICO DE PEATONES. TEMPORIZACIONES DEL SEMAFORO EN LA INTERSECCION. MANEJO DE SOLICITUD DE CRUCES DE PEATON. software A continuación se nombran algunas funciones de la implementacion: • AppStartTaskStk (Configuración y puesta en marcha-una sola vez) • LCD_TestTaskStk (tarea LCD) • SevenSegTestTaskStk (tarea 7 segmentos 7 ) • KeypadRDTaskStk (tarea de teclado) • TrafficLightTaskStk (tarea de luces de trafico) • TrafficWalkTaskStk (tarea de luces de peatones) • OS_Probe_Task (herramienta de debug) • Probe_Comm_RS232_PRIO (herramienta de debug) • OS_Task_Tmr_PRIO (Set)
© Copyright 2024