HOME

TheInfoList



OR:

Rabbit Semiconductor is an American company which designs and sells the
Rabbit Rabbits are small mammals in the family Leporidae (which also includes the hares), which is in the order Lagomorpha (which also includes pikas). They are familiar throughout the world as a small herbivore, a prey animal, a domesticated ...
family of
microcontroller A microcontroller (MC, uC, or μC) or microcontroller unit (MCU) is a small computer on a single integrated circuit. A microcontroller contains one or more CPUs (processor cores) along with memory and programmable input/output peripherals. Pro ...
s and microcontroller modules. For development, it provides Dynamic C, a non-standard dialect of C with proprietary structures for multitasking. Rabbit Semiconductor was purchased in 2006 by
Digi International Digi International, Inc. is an American Industrial Internet of Things ( IIoT) technology company based in Hopkins, Minnesota. History The company was founded in 1985 and went public as Digi International in 1989. The company initially offered ...
for $49 million. Before the purchase, Rabbit Semiconductor was a division of Z-World, Inc. Z-World developed and manufactured embedded controller products as well as embedded software development environments.


Microcontroller architecture

The Rabbit processor family shares many features with the Zilog Z80/Z180 processors. For example, the registers of a Rabbit
2000 2000 was designated as the International Year for the Culture of Peace and the World Mathematics, Mathematical Year. Popular culture holds the year 2000 as the first year of the 21st century and the 3rd millennium, because of a tende ...
/3000 processor are almost the same as the registers of a Z80/Z180 processor. The Rabbit 4000 processor expands to include the use of 32-bit registers. The
instruction set In computer science, an instruction set architecture (ISA) is an abstract model that generally defines how software controls the CPU in a computer or a family of computers. A device or program that executes instructions described by that ISA, s ...
of Rabbit processors also closely resembles the instruction set of the Z80/Z180 family. While the opcodes of many instructions are the same between the Rabbit 2000/3000 processors and Z80/Z180 processors, the two families of processors are not binary compatible. As with the Z80/Z180 family, the Rabbit processors are CISC processors. The Rabbit processor family has unique features. For example, the Z80/Z180 family disables
interrupt In digital computers, an interrupt (sometimes referred to as a trap) is a request for the processor to ''interrupt'' currently executing code (when permitted), so that the event can be processed in a timely manner. If the request is accepted ...
s once an interrupt is serviced by an interrupt service routine. However, the Rabbit processors permit interrupts to interrupt service routines according to priorities (a total of 4). Rabbit Semiconductor claims that the instruction set of Rabbit processors is optimized for C code.


Dynamic C

Perhaps the most notable feature of the Rabbit microcontroller is its development environment. Dynamic C, a product of Rabbit Semiconductor, has additions, deletions and inconsistencies compared to the ANSI-C standard. The Dynamic C IDE comes with extensive open-source libraries and sample code released under the MPL license or ISC license."Dynamic C 10: for Rabbit-based embedded systems"
;Note: (Reference: Porting a Program to Dynamic C-Rabbit Semiconductor)
Dynamic C follows the ISO/ANSI C standard when feasible and desirable. Because the standard does not take into account the special needs of embedded systems, it is necessary to depart from the standard in some areas and desirable in others. The standard does not take into account important embedded systems issues such as read only memory and embedded assembly language. For this reason, practical compilers intended for embedded systems do not completely comply with the standard, but use it as a guide.
As an example of an addition, Dynamic C has a ''chaining'' mechanism to chain fragments of code from different subroutines to an arbitrary number of chains. This extension permits the use of not only initialized variables, but any arbitrary code to execute before a program starts execution in the main function. As an example of a deletion, as of version 10.23 Dynamic C does not support
block scope In computer programming, the scope of a name binding (an association of a name to an entity, such as a variable) is the part of a program where the name binding is valid; that is, where the name can be used to refer to the entity. In other parts ...
variables or
bit field A bit field is a data structure that maps to one or more adjacent bits which have been allocated for specific purposes, so that any single bit or group of bits within the structure can be set or inspected. A bit field is most commonly used to repre ...
s. The development toolchain does not include a separate preprocessor and linker, which may complicate the process of porting existing programs to the compiler. As of version 10.64 block scope for variables is supported. As an example of an inconsistency, Dynamic C implicitly treats all initialized global variables as if they were declared with the
const In some programming languages, const is a type qualifier (a keyword applied to a data type) that indicates that the data is read-only. While this can be used to declare constants, in the C family of languages differs from similar constructs ...
qualifier. Furthermore, all const variables reside in flash memory. Earlier versions of Dynamic C did not check the use of the const keyword in parameters—it was possible to pass a const variable as a parameter to a function that did not expect it, potentially leading to attempts to write to flash memory. As of the latest version of Dynamic C, the compiler will produce an error when the user attempts to modify a const variable directly, and will produce a warning if the user discards the const qualifier when passing a parameter to a function.


Multitasking constructs

One noteworthy feature of Dynamic C is its inclusion of language constructs to simplify multitasking. These constructs, the costate statement and the slice statement, implement a form of cooperative and preemptive multitasking, respectively. As an example, consider the following program which flashes two LEDs with different frequencies: void main() When this code is run, the first costatement will be executed, and the first LED will turn on. The costatement will then yield to the second statement while it waits for 100 milliseconds. The second costatement will execute in a similar manner. While both costatements are waiting for their time to elapse, the while loop will
busy-wait In computer science and software engineering, busy-waiting, busy-looping or spinning is a technique in which a process repeatedly checks to see if a condition is true, such as whether keyboard input or a lock is available. Spinning can also be use ...
, but this waiting time could potentially be used to perform other tasks. For more information, see th
Dynamic C User's Manual


See also

*
Arduino Arduino () is an Italian open-source hardware and open-source software, software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its hardwar ...


References


External links

*
Dynamic C 9 User's ManualDigi InternationalPorting a Program to Dynamic C
*{{webarchive , url=https://web.archive.org/web/20111226064011/http://ftp1.digi.com/support/documentation/019-0152_L.pdf , title=Rabbit 4000 Family Instruction Reference , date=2011-12-26
Rabbit 4000Digi Systems on ChipOpen Source BACnet Stack for Rabbit Family
Fabless semiconductor companies Semiconductor companies of the United States Companies established in 1983 1983 establishments in California