Rabbit

Solo disponible en BuenasTareas
  • Páginas : 15 (3553 palabras )
  • Descarga(s) : 4
  • Publicado : 15 de julio de 2010
Leer documento completo
Vista previa del texto
TALLER RABBIT RCM5700
“Dynamic C” Presentado por Daniel Bastian Ing. de proyectos – AG electrónica www.agelectronica.com.mx

Dynamic C
Dynamic C es un sistema de desarrollo para escribir software en C. El cual esta designado para usar con controladores Rabbit u otros sistemas que estén basados en microprocesadores Rabbit, se integran las siguientes funciones de desarrollo: •Edición.•Compilación. •Linkeado. •Cargado en el procesador. •Depurador. La compilación , Linkeado y grabación son una sola operación.

Características especiales
•Encadenado de funciones (Función chaining): Permite que segmentos especiales de código puedan estar embebidos en una o mas funciones. Cuando se ejecuta una cadena, se ejecutan todos los demás elementos que la componen. •Co-sentencias (costatements):implementan construcciones del tipo usado en máquinas de estados, permitiendo simular procesos paralelos concurrentes en un mismo programa. •Co-funciones (cofunctions), permiten simular procesos cooperativos en un mismo programa. •Sentencias de partición (slice statements); permiten procesos de tipo peemptive en un mismo programa. •Soporte de código assembler. •Palabras clave (keywords); paraidentificar datos compartidos por contextos diferentes o almacenados en memoria ni volátil: shared y protected.

Co-sentencias (costates)
Son las extensiones de Dynamic C que simplifican la implementación de tareas múltiples. Son cooperativos ya que su ejecución debe suspenderse y reanudarse voluntariamente. El cuerpo de un costate es una tarea, una lista ordenada de operaciones a realizar. Cadacostate tiene su propio puntero de programa (statement pointer) para determinar que ítem en la lista debe ejecutarse cuando se le da oportunidad. Como parte del proceso de inicialización, el puntero se asigna a la primera instrucción. Un costate, entonces, funciona internamente como una maquina de estados.

Sintaxis
costate [ name [state] ] { [ statement | yield; | abort; | waitfor( expression); ] . . .}

El nombre puede ser: •Un nombre valido en C el cual no este ocupado, esto da lugar a la creación de una estructura del tipo CoData con el mismo nombre. •El nombre de una CoData local o global que ya se ha definido. •Un puntero a una estructura existente del tipo CoData. Si el nombre esta ausente el compilador crea una estructura del tipo CoData para la Co-sentencia.

EstadoPueden ser: •always_on; la co-sentencia esta siempre activa, significa que el costatement se ejecutara cada vez que se encuentre en el hilo del programa, a menos que se inactive por CoPause(), puede ser activada de nuevo por CoResume(). •Init_on; el costatement esta activo al entrar en el hilo del programa se ejecutara una vez, el costatement esta inactivo al finalizar (o por abort), el costatement sepuede volver inactivo por CoPause(). Un constatement que no esta nombrada siempre esta activa always_on.

Control de las co-sentencias
Waitfor (expresión): la palabra clave waitfor es una sentencia especial, no una función. La expresión entre paréntesis se computa cada vez que se ejecuta waitfor. Cualquier función C válida que retorne algún valor puede ser utilizada como parámetro de espera,se utiliza en costates o cofunctions para ceder el control en un ciclo de espera, la ejecución se suspende hasta tanto la expresión utilizada retorne un valor distinto de cero.

waitfor
•Dynamic C

waitfor

yield
Permite ceder el control voluntariamente ante determinado evento. Cuando el costate o cofunction resume su ejecución, la misma continua en la sentencia siguiente. Es muy útilcuando se debe realizar una tarea mientras se controla que no se exceda un limite de tiempo máximo

yield

abort
Ocasiona que el costatement o cofunction termine su ejecución, si el costate es always_on el hilo del programa continua hasta que el abort y sale del cuerpo del costate, esto ocasiona que la próxima vez que se ejecute el costate sea desde el tope. Si la cofunction no es...
tracking img