Rabbit Semiconductor

Rabbit Semiconductor Inc.
Industri mikrokontroller
Grundad 1983
Huvudkontor ,
Ägare Digi International
Hemsida www .digi .com /lp /kanin

Rabbit Semiconductor är ett amerikanskt företag som designar och säljer Rabbit -familjen av mikrokontroller och mikrokontrollermoduler. För utveckling tillhandahåller den Dynamic C, en icke-standardiserad dialekt av C med proprietära strukturer för multitasking.

Rabbit Semiconductor köptes 2006 av Digi International för 49 miljoner dollar. Innan köpet var Rabbit Semiconductor en division av Z-World, Inc. Z-World utvecklade och tillverkade inbäddade kontrollerprodukter såväl som utvecklingsmiljöer för inbyggd mjukvara.

Mikrokontroller arkitektur

Rabbit-processorfamiljen delar många funktioner med Zilog Z80/Z180- processorerna. Till exempel registren för en Rabbit 2000 /3000-processor nästan desamma som registren för en Z80/Z180-processor. Rabbit 4000-processorn utökas med användning av 32-bitars register. Instruktionsuppsättningen av Rabbit-processorer liknar också instruktionsuppsättningen i Z80/Z180-familjen . Även om opkoderna för många instruktioner är desamma mellan Rabbit 2000/3000-processorerna och Z80/Z180-processorerna, är de två familjerna av processorer inte binärt kompatibla. Precis som med Z80/Z180-familjen är Rabbit-processorerna CISC- processorer.

Rabbit-processorfamiljen har unika funktioner. Till exempel, Z80/Z180-familjen inaktiverar avbrott när ett avbrott betjänas av en avbrottsservicerutin. Kaninprocessorerna tillåter emellertid avbrott för att avbryta servicerutiner enligt prioriteringar (totalt 4).

Rabbit Semiconductor hävdar att instruktionsuppsättningen för Rabbit-processorer är optimerad för C-kod.

Dynamisk C

Den kanske mest anmärkningsvärda egenskapen hos Rabbit-mikrokontrollern är dess utvecklingsmiljö. Dynamic C, en produkt från Rabbit Semiconductor, har tillägg, raderingar och inkonsekvenser jämfört med ANSI-C-standarden.

Obs
(Referens: Portera ett program till Dynamic C-Rabbit Semiconductor)

Dynamic C följer ISO/ANSI C-standarden när det är möjligt och önskvärt. Eftersom standarden inte tar hänsyn till de inbyggda systemens speciella behov är det nödvändigt att avvika från standarden på vissa områden och önskvärt på andra. Standarden tar inte hänsyn till viktiga problem med inbyggda system som skrivskyddat minne och inbyggt assemblerspråk. Av denna anledning följer praktiska kompilatorer avsedda för inbyggda system inte helt standarden, utan använder den som vägledning.

Som ett exempel på ett tillägg har Dynamic C en kedjemekanism för att kedja fragment av kod från olika subrutiner till ett godtyckligt antal kedjor. Denna tillägg tillåter användningen av inte bara initierade variabler, utan vilken godtycklig kod som helst att exekvera innan ett program börjar köras i huvudfunktionen.

Som ett exempel på en borttagning, från och med version 10.23 stöder Dynamic C inte blockomfångsvariabler eller bitfält . Utvecklingsverktygskedjan inkluderar inte en separat förprocessor och länk, vilket kan komplicera processen att porta befintliga program till kompilatorn. Från och med version 10.64 stöds blockomfång för variabler.

Som ett exempel på en inkonsekvens behandlar Dynamic C implicit alla initialiserade globala variabler som om de deklarerades med const- kvalificeraren. Dessutom finns alla konstvariabler i flashminnet. Tidigare versioner av Dynamic C kontrollerade inte användningen av const i parametrar – det var möjligt att skicka en const- variabel som en parameter till en funktion som inte förväntade sig det, vilket potentiellt ledde till försök att skriva till flashminnet. Från och med den senaste versionen av Dynamic C kommer kompilatorn att producera ett fel när användaren försöker modifiera en const- variabel direkt, och kommer att producera en varning om användaren kasserar const -kvalificeraren när han skickar en parameter till en funktion.

Multitasking-konstruktioner

En anmärkningsvärd egenskap hos Dynamic C är dess införande av språkkonstruktioner för att förenkla multitasking. Dessa konstruktioner, costate statement och slice statement, implementerar en form av kooperativ respektive förebyggande multitasking. Som ett exempel, betrakta följande program som blinkar två lysdioder med olika frekvenser:

 

     
    
        
        
        
            
            
            
            
        
        
        
            
            
            
            
        
    
 void  main  ()  {  while  (  1  )  {  // Skapa 2 costatements som kommer att växla mellan våra lysdioder.  costate  {  led1on  ();  waitfor  (  DelayMs  (  100  ));  led1off  ();  waitfor  (  DelayMs  (  50  ));  }  costate  {  led2on  ();  waitfor  (  DelayMs  (  200  ));  led2off  ();  waitfor  (  DelayMs  (  50  ));  }  }  } 

När denna kod körs kommer den första kostnadsberäkningen att utföras och den första lysdioden tänds. Kostnadsberäkningen kommer sedan att ge efter för det andra uttalandet medan det väntar i 100 millisekunder. Den andra kostnadsberäkningen kommer att utföras på liknande sätt. Medan båda kostnaderna väntar på att tiden ska gå ut, kommer while-slingan att vara upptagen-vänte , men denna väntetid kan potentiellt användas för att utföra andra uppgifter. För mer information, se Dynamic C User's Manual .

Se även

  1. ^ Digi International förvärvar Rabbit Semiconductor arkiverad 2009-02-13 på Wayback Machine
  2. ^ "Control Engineering | Digi köper Rabbit Semiconductor för $49 miljoner" . Styrteknik . 2005-06-07 . Hämtad 2022-07-06 .
  3. ^ Användarmanual för Rabbit 3000 mikroprocessor

externa länkar