stringtranslate.com

Semiconductor de conejo

Rabbit Semiconductor es una empresa estadounidense que diseña y comercializa la familia de microcontroladores y módulos de microcontroladores Rabbit . Para el desarrollo, ofrece Dynamic C , un dialecto no estándar de C con estructuras propias para la multitarea.

Rabbit Semiconductor fue adquirido en 2006 por Digi International por 49 millones de dólares. [1] [2] Antes de la compra, Rabbit Semiconductor era una división de Z-World, Inc. Z-World desarrollaba y fabricaba productos controladores integrados, así como entornos de desarrollo de software integrados.

Arquitectura del microcontrolador

La familia de procesadores Rabbit comparte muchas características con los procesadores Zilog Z80/Z180 . Por ejemplo, los registros de un procesador Rabbit 2000/3000 son casi iguales a los registros de un procesador Z80/Z180. El procesador Rabbit 4000 se expande para incluir el uso de registros de 32 bits. El conjunto de instrucciones de los procesadores Rabbit también se parece mucho al conjunto de instrucciones de la familia Z80/Z180. Si bien los códigos de operación de muchas instrucciones son los mismos entre los procesadores Rabbit 2000/3000 y los procesadores Z80/Z180, las dos familias de procesadores no son compatibles a nivel binario. Al igual que con la familia Z80/Z180, los procesadores Rabbit son procesadores CISC .

La familia de procesadores Rabbit tiene características únicas. Por ejemplo, la familia Z80/Z180 desactiva las interrupciones una vez que una rutina de servicio de interrupciones atiende una interrupción. Sin embargo, los procesadores Rabbit permiten que las interrupciones afecten a las rutinas de servicio de interrupciones según las prioridades (un total de 4).

Rabbit Semiconductor afirma que el conjunto de instrucciones de los procesadores Rabbit está optimizado para el código C. [3]

C dinámica

Quizás la característica más destacable del microcontrolador Rabbit es su entorno de desarrollo. Dynamic C, un producto de Rabbit Semiconductor, tiene añadidos, eliminaciones e inconsistencias en comparación con el estándar ANSI-C.

El IDE Dynamic C viene con amplias bibliotecas de código abierto y código de muestra publicado bajo la licencia MPL o la licencia ISC . [4] [5]

Nota
(Referencia: Cómo portar un programa a un semiconductor dinámico C-Rabbit)

Dynamic C sigue el estándar ISO/ANSI C cuando es factible y deseable. Debido a que el estándar no tiene en cuenta las necesidades especiales de los sistemas embebidos, es necesario apartarse del estándar en algunas áreas y deseable en otras. El estándar no tiene en cuenta cuestiones importantes de los sistemas embebidos, como la memoria de solo lectura y el lenguaje ensamblador embebido. Por este motivo, los compiladores prácticos destinados a sistemas embebidos no cumplen completamente con el estándar, sino que lo utilizan como guía.

Como ejemplo de una adición, Dynamic C tiene un mecanismo de encadenamiento para encadenar fragmentos de código de diferentes subrutinas a un número arbitrario de cadenas. Esta extensión permite el uso no solo de variables inicializadas, sino de cualquier código arbitrario para ejecutar antes de que un programa comience a ejecutarse en la función principal.

Como ejemplo de eliminación, a partir de la versión 10.23, Dynamic C no admite variables de ámbito de bloque ni campos de bits . La cadena de herramientas de desarrollo no incluye un preprocesador ni un enlazador independientes, lo que puede complicar el proceso de transferencia de programas existentes al compilador. A partir de la versión 10.64, se admite el ámbito de bloque para las variables.

Como ejemplo de inconsistencia, Dynamic C trata implícitamente todas las variables globales inicializadas como si se hubieran declarado con el constcalificador. Además, todas constlas variables residen en la memoria flash. Las versiones anteriores de Dynamic C no verificaban el uso de la constpalabra clave en los parámetros: era posible pasar una constvariable como parámetro a una función que no lo esperaba, lo que potencialmente conducía a intentos de escritura en la memoria flash. A partir de la última versión de Dynamic C, el compilador producirá un error cuando el usuario intente modificar una constvariable directamente y producirá una advertencia si el usuario descarta el constcalificador al pasar un parámetro a una función.

Construcciones multitarea

Una característica destacable de Dynamic C es la inclusión de construcciones del lenguaje para simplificar la multitarea. Estas construcciones, la costatesentencia y la sliceinstrucción, implementan una forma de multitarea cooperativa y preventiva, respectivamente. Como ejemplo, considere el siguiente programa que hace parpadear dos LED con diferentes frecuencias:

void main () { while ( 1 ) { // Crea 2 costate que alternarán nuestros LED. costate { led1on (); waitfor ( DelayMs ( 100 )); led1off (); waitfor ( DelayMs ( 50 )); } costate { led2on (); waitfor ( DelayMs ( 200 )); led2off (); waitfor ( DelayMs ( 50 )); } } }                    

Cuando se ejecuta este código, se ejecutará la primera declaración y se encenderá el primer LED. La declaración dará paso a la segunda declaración mientras espera 100 milisegundos. La segunda declaración se ejecutará de manera similar. Mientras ambas declaraciones esperan que transcurra el tiempo, el bucle while esperará , pero este tiempo de espera podría utilizarse para realizar otras tareas. Para obtener más información, consulte el Manual del usuario de Dynamic C.

Véase también

Referencias

  1. ^ Digi International adquiere Rabbit Semiconductor Archivado el 13 de febrero de 2009 en Wayback Machine.
  2. ^ "Control Engineering | Digi compra Rabbit Semiconductor por 49 millones de dólares". Control Engineering . 2005-06-07 . Consultado el 2022-07-06 .
  3. ^ "Conejo | Digi Internacional". www.digi.com .
  4. ^ Jean J. Labrosse. "Software integrado: saberlo todo". 2007. pág. 246.
  5. ^ "Dynamic C 10: para sistemas integrados basados ​​en Rabbit".

Enlaces externos