Descargar

Sistemas de tiempo real

Enviado por Pablo Turmero


    edu.red

    Contenido Características de STR Ejecutivo Cíclico STR en CCS

    edu.red

    Tipos de STR Sistemas de Tiempo Real Críticos. Sistemas en los que existe al menos una tarea para la que no se admite nunca una violación del plazo de ejecución. Entre las aplicaciones de este tipo de sistemas se encuentran los controles de seguridad de una planta nuclear.

    Sistemas de Tiempo Real Flexible Sistemas en los que se puede violar algunos plazos de ejecución a costa de la calidad del funcionamiento. Como ejemplo de aplicación de sistemas de tiempo real flexibles están los conmutadores telefónicos.

    Sistemas de Tiempo Real Firme Si una tarea emite su respuesta o señal de salida fuera del plazo de ejecución previsto, esta respuesta es simplemente descartada. Como ejemplo tenemos las aplicaciones multimedia.

    edu.red

    STR en CCS El sistema operativo de tiempo real de CCS permite que un microcontrolador de Microchip defina y ejecute regularmente tareas programadas.

    Esto se lograda por un despachador construido en el momento de la compilación, utilizando las directivas de programación del respectivo procesador.

    Proporciona un sistema operativo multitarea de tiempo real cooperativo; sin embargo, debido a las limitaciones prácticas del PIC, CCS Real Time Operation System, no ofrece un planificador apropiativo.

    Para una mas amplia información del software, ver el link www.ccsinfo.com

    edu.red

    STR en CCS #use rtos(opción)

    Las opciones deben ir separadas por comas y pueden ser las siguientes:

    timer = X, donde X es 0-4 espesificando el timer que se usará para el RTOS

    minor_cycle = time, donde “time” es un número seguido por s, ms, us, ns, este es el tiempo mas corto en el cual puede correr cualquier tarea, cada rata de ejecución de una tarea, debe ser múltiplo de este tiempo. El compilador puede calcular este tiempo, si este no es especificado.

    edu.red

    STR en CCS rtos_await (expresión)

    Esta función puede ser solamente usada dentro de una tarea RTOS, y hace que la tarea se duerma hasta que la expresión sea verdadera, permitiendo ejecutarse a otras tareas mientras esta espera a que la expresión sea verdadera.

    edu.red

    STR en CCS rtos_enable (task) Habilita una tarea para que se ejecutase en su rata especificada. Todas las tareas son habilitadas por defecto.

    i = rtos_msg_poll() Esta función puede ser solamente usada dentro de una tarea RTOS, retorna el número de mensajes que se encuentran en la cola asignada a dicha tarea

    edu.red

    STR en CCS b = rtos_msg_read() Esta función puede ser solamente usada dentro de una tarea RTOS, retorna el mensaje mas antiguo de la cola de mensajes

    rtos_msg_send(task, byte) Esta función puede ser llamada en cualquier momento despues de haber llamado a la función RTOS_RUN(), y lo que hace, es enviar un mensaje (byte) a determinada tarea (task)

    edu.red

    STR en CCS rtos_overrun([task])

    Esta función retorna verdadero, si la tarea especificada tomó mas tiempo para ejecutarse que el que le fue asignado; si no se específica ninguna tarea, entonces retorna verdadera si alguna de todas las tareas, funcionó por encima del tiempo especificado.

    edu.red

    STR en CCS rtos_run()

    Esta función comienza la ejecución de todas la tareas habilitadas (todas las tareas son habilitadas por dejecto) esta función controla la ejecución de las tareas de RTOS, teniendo en cuenta, las ratas temporales permitidas para cada una de ellas. Se retorna de esta función, solamente cuando es llamada la función RTOS_TERMINATE(), por supuesto, por alguna de las tareas en ejecución

    edu.red

    STR en CCS rtos_signal (sem)

    Tiene como argumento, a la variable global “sem” que representa la actual disponibilidad de un recurso de sistema compartido (un semaforo), esta función incrementa semáforo, para dar a conocer a tareas que se encuentren esperando por el recurso compartido que reencuentra disponible para su uso.

    edu.red

    STR en CCS rtos_stats(task,stat)

    task = identificador de la función que esta siendo usada como una tarea de RTOS

    stat = puede ser lo siguiente:

    rtos_min_time – mínimo tiempo (ciclos de instrucción) necesarios para una ejecución.

    rtos_min_time – máximo tiempo (ciclos de instrucción) necesarios para una ejcución

    rtos_total_time – tiempo total (ciclos de instrucción) necesarios para la ejecución tolas

    edu.red

    STR en CCS rtos_terminate()

    Esta función termina la ejecución de todas las tareas RTOS, la ejecución del programa continuará con la primera línea de código luego de la función RTOS_RUN(), esta función causa el retorno de la función RTOS_RUN().

    edu.red

    STR en CCS rtos_wait (sem)

    sem, es una variable global que representa la actual disponibilidad de un recurso del sistema compartido (un semaforo).

    Esta función, puede ser solamente usada por una tarea RTOS, esta función duerme a la tarea en ejecución, hasta que la sem, sea mas grande que cero (momento en que el recurso se encuentra disponible), entonces decrementa a “sem” para bloquear el uso a otra tarea del recurso compartido y continua la ejecución del resto del código, Esta función, permite que se ejecuten otras tareas mientras la tarea espera hasta que el recurso compartido esté disponible.

    edu.red

    STR en CCS rtos_yield()

    Esta función solamente puede ser llamada por una tarea RTOS. Al ser llamada esta función, para la ejecución de la actual tarea y retorna el control del procesador a RTOS_RUN, en el siguiente periodo de tiempo de ejecución, esta comienza su ejecución una línea de código después de RTOS_YIELD