Lapin semi-conducteur - Rabbit Semiconductor

Rabbit Semiconductor Inc.
Industrie microcontrôleurs
Fondé 1983
Quartier général ,
Propriétaire Digi International
Site Internet www .digi .com / lp / lapin

Rabbit Semiconductor est une société américaine qui conçoit et vend la famille Rabbit de microcontrôleurs et de modules de microcontrôleurs. Pour le développement, il fournit Dynamic C , un dialecte non standard de C avec des structures propriétaires pour le multitâche.

Rabbit Semiconductor a été acheté en 2006 par Digi International . Avant l'achat, Rabbit Semiconductor était une division de Z-World, Inc. Z-World développait et fabriquait des contrôleurs embarqués ainsi que des environnements de développement de logiciels embarqués.

Architecture du microcontrôleur

La famille de processeurs Rabbit partage de nombreuses fonctionnalités avec les processeurs Zilog Z80 / Z180 . Par exemple, les registres d'un lapin 2000 processeur / 3000 sont presque les mêmes que les registres d'un processeur Z80 / Z180. Le processeur Rabbit 4000 se développe pour inclure l'utilisation de registres 32 bits. Le jeu d'instructions des processeurs Rabbit ressemble également étroitement au jeu d'instructions de la famille Z80 / Z180. Alors que les opcodes de nombreuses instructions sont les mêmes entre les processeurs Rabbit 2000/3000 et les processeurs Z80 / Z180, les deux familles de processeurs ne sont pas compatibles binaires. Comme pour la famille Z80 / Z180, les processeurs Rabbit sont des processeurs CISC .

La famille de processeurs Rabbit possède des caractéristiques uniques. Par exemple, la famille Z80 / Z180 désactive les interruptions une fois qu'une interruption est desservie par un sous-programme de service d'interruption. Cependant, les processeurs Rabbit permettent aux interruptions d'interrompre les routines de service en fonction des priorités (un total de 4).

Rabbit Semiconductor affirme que le jeu d'instructions des processeurs Rabbit est optimisé pour le code C.

C dynamique

La caractéristique la plus notable du microcontrôleur Rabbit est peut-être son environnement de développement. Dynamic C, un produit de Rabbit Semiconductor, présente des ajouts, des suppressions et des incohérences par rapport à la norme ANSI-C.

Remarque
(Référence: Portage d'un programme vers Dynamic C-Rabbit Semiconductor)

Dynamic C suit la norme ISO / ANSI C lorsque cela est possible et souhaitable. La norme ne prenant pas en compte les besoins particuliers des systèmes embarqués, il est nécessaire de s'écarter de la norme dans certains domaines et souhaitable dans d'autres. La norme ne prend pas en compte les problèmes importants des systèmes embarqués tels que la mémoire morte et le langage d'assemblage embarqué. Pour cette raison, les compilateurs pratiques destinés aux systèmes embarqués ne sont pas totalement conformes à la norme, mais l'utilisent comme un guide.

À titre d'exemple d'addition, Dynamic C a un mécanisme de chaînage pour chaîner des fragments de code de différents sous-programmes à un nombre arbitraire de chaînes. Cette extension permet l'utilisation non seulement de variables initialisées, mais de tout code arbitraire à exécuter avant qu'un programme ne démarre l'exécution dans la fonction principale.

À titre d'exemple de suppression, à partir de la version 10.23, Dynamic C ne prend pas en charge les variables d' étendue de bloc ou les champs de bits . La chaîne d'outils de développement n'inclut pas un préprocesseur et un éditeur de liens séparés, ce qui peut compliquer le processus de portage des programmes existants vers le compilateur. Depuis la version 10.64, la portée des blocs pour les variables est prise en charge.

À titre d'exemple d'incohérence, Dynamic C traite implicitement toutes les variables globales initialisées comme si elles étaient déclarées avec le const qualificatif. De plus, toutes les const variables résident dans la mémoire flash. Les versions précédentes de Dynamic C ne vérifiaient pas l'utilisation du const mot - clé dans les paramètres - il était possible de passer une const variable en tant que paramètre à une fonction qui ne s'y attendait pas, ce qui pourrait conduire à des tentatives d'écriture dans la mémoire flash. À partir de la dernière version de Dynamic C, le compilateur produira une erreur lorsque l'utilisateur tente de modifier une const variable directement et produira un avertissement si l'utilisateur ignore le const qualificatif lors du passage d'un paramètre à une fonction.

Constructions multitâches

Une caractéristique remarquable de Dynamic C est son inclusion de constructions de langage pour simplifier le multitâche. Ces constructions, l' costate énoncé et l' slice énoncé, implémentent respectivement une forme de multitâche coopératif et préventif. À titre d'exemple, considérons le programme suivant qui fait clignoter deux LED avec des fréquences différentes:

void main()
{
    while (1)
    {
        // Create 2 costatements which will toggle our LEDs.
        costate
        {
            led1on();
            waitfor(DelayMs(100));
            led1off();
            waitfor(DelayMs(50));
        }
        costate
        {
            led2on();
            waitfor(DelayMs(200));
            led2off();
            waitfor(DelayMs(50));
        }
    }
}

Lorsque ce code est exécuté, le premier commentaire sera exécuté et la première LED s'allumera. Le costatement cédera alors à la deuxième instruction pendant qu'il attend 100 millisecondes. Le deuxième costatement s'exécutera de la même manière. Alors que les deux évaluations attendent que leur temps s'écoule, la boucle while attendra , mais ce temps d'attente pourrait potentiellement être utilisé pour effectuer d'autres tâches. Pour plus d' informations, voir le manuel utilisateur est dynamique C .

Voir également

Références

Liens externes