Rabbit Semiconductor - Rabbit Semiconductor

Rabbit Semiconductor Inc.
Průmysl mikrokontroléry
Založený 1983
Sídlo společnosti ,
Majitel Digi International
webová stránka www. digi .com / lp / králík

Rabbit Semiconductor je americká společnost, která navrhuje a prodává rodinu mikrokontrolérů a modulů mikrokontrolérů Rabbit . Pro vývoj poskytuje Dynamic C , nestandardní dialekt jazyka C s proprietárními strukturami pro multitasking.

Rabbit Semiconductor koupila v roce 2006 společnost Digi International . Před nákupem byla společnost Rabbit Semiconductor divizí společnosti Z-World, Inc. Společnost Z-World vyvinula a vyrobila produkty vestavěných řadičů i prostředí pro vývoj vestavěného softwaru.

Architektura mikrokontroléru

Rodina procesorů Rabbit sdílí mnoho funkcí s procesory Zilog Z80 / Z180 . Například registry králíka 2000 /3000 procesoru jsou téměř stejné jako registrů procesoru Z80 / Z180. Procesor Rabbit 4000 se rozšiřuje o použití 32bitových registrů. Sada instrukcí procesorů Rabbit se také velmi podobá sadě instrukcí rodiny Z80 / Z180. Zatímco operační kódy mnoha instrukcí jsou mezi procesory Rabbit 2000/3000 a Z80 / Z180 stejné, tyto dvě rodiny procesorů nejsou binárně kompatibilní. Stejně jako u rodiny Z80 / Z180 jsou procesory Rabbit procesory CISC .

Rodina procesorů Rabbit má jedinečné vlastnosti. Například rodina Z80 / Z180 zakáže přerušení, jakmile je přerušení obsluhováno rutinou služby přerušení. Procesory Rabbit však umožňují přerušení přerušit servisní rutiny podle priorit (celkem 4).

Rabbit Semiconductor tvrdí, že instrukční sada procesorů Rabbit je optimalizována pro C kód.

Dynamický C.

Snad nejpozoruhodnější vlastností mikrokontroléru Rabbit je jeho vývojové prostředí. Dynamic C, produkt společnosti Rabbit Semiconductor, má ve srovnání se standardem ANSI-C doplňky, delece a nekonzistence.

Poznámka
(Odkaz: Přenos programu na dynamický C-Rabbit Semiconductor)

Dynamic C se řídí normou ISO / ANSI C, pokud je to proveditelné a žádoucí. Protože standard nebere v úvahu speciální potřeby vestavěných systémů, je nutné se v některých oblastech od standardu odchýlit a v jiných je žádoucí. Standard nebere v úvahu důležité problémy vestavěných systémů, jako je paměť pouze pro čtení a jazyk vestavěného sestavení. Z tohoto důvodu praktické kompilátory určené pro vestavěné systémy zcela neodpovídají normě, ale používají ji jako vodítko.

Jako příklad přidání má Dynamic C mechanismus zřetězení řetězců fragmentů kódu z různých podprogramů na libovolný počet řetězců. Toto rozšíření umožňuje použití nejen inicializovaných proměnných, ale libovolného kódu, který se má provést před spuštěním programu v hlavní funkci.

Jako příklad odstranění, od verze 10.23 Dynamic C nepodporuje proměnné rozsahu bloku ani bitová pole . Vývojový nástrojový řetězec neobsahuje samostatný preprocesor a linker, což může komplikovat proces portování existujících programů na kompilátor. Od verze 10.64 je podporován obor bloků pro proměnné.

Jako příklad nekonzistence Dynamic C implicitně zachází se všemi inicializovanými globálními proměnnými, jako by byly deklarovány s const kvalifikátorem. Kromě toho jsou všechny const proměnné uloženy v paměti flash. Dřívější verze Dynamic C nekontrolovaly použití const klíčového slova v parametrech - bylo možné předat const proměnnou jako parametr funkci, která to neočekávala, což mohlo vést k pokusům o zápis do paměti flash. Od nejnovější verze Dynamic C vytvoří kompilátor chybu, když se uživatel pokusí přímo upravit const proměnnou, a vydá varování, pokud uživatel const při předání parametru funkci zruší kvalifikátor.

Multitaskingové konstrukce

Jedním z pozoruhodných rysů Dynamic C je jeho zahrnutí jazykových konstrukcí pro zjednodušení multitaskingu. Tyto konstrukce, costate prohlášení a slice prohlášení, implementují formu kooperativního a preventivního multitaskingu. Jako příklad zvažte následující program, který bliká dvěma LED diodami s různými frekvencemi:

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));
        }
    }
}

Když je tento kód spuštěn, provede se první součtování a rozsvítí se první LED. Costatement se poté přenese na druhý příkaz, zatímco čeká 100 milisekund. Druhá souběžnost se provede podobným způsobem. Zatímco obě složky čekají na vypršení času, smyčka while bude zaneprázdněna , ale tuto dobu čekání lze potenciálně použít k provedení dalších úkolů. Více informací naleznete v User Dynamic C je Manual .

Viz také

Reference

externí odkazy