Tavşan Yarı İletken - Rabbit Semiconductor

Rabbit Semiconductor Inc.
Sanayi mikrodenetleyiciler
Kurulmuş 1983
Merkez ,
Sahip Digi International
İnternet sitesi www .digi .com / lp / tavşan

Rabbit Semiconductor , Rabbit ailesi mikrodenetleyici ve mikro denetleyici modüllerini tasarlayan ve satan bir Amerikan şirketidir . Geliştirme için, çoklu görev için tescilli yapılara sahip standart olmayan bir C lehçesi olan Dynamic C'yi sağlar .

Rabbit Semiconductor, 2006 yılında Digi International tarafından satın alındı . Satın almadan önce, Rabbit Semiconductor, Z-World, Inc.'in bir bölümü idi. Z-World, gömülü kontrolör ürünleri ve gömülü yazılım geliştirme ortamları geliştirdi ve üretti.

Mikrodenetleyici mimarisi

Rabbit işlemci ailesi, Zilog Z80 / Z180 işlemcilerle birçok özelliği paylaşır . Örneğin, kayıt bir tavşanın 2000 /3000 işlemcisi neredeyse bir Z80 / Z180 işlemcinin kayıtları ile aynıdır. Rabbit 4000 işlemci, 32-bit yazmaçların kullanımını içerecek şekilde genişler. Komut kümesi Tavşan işlemcilerin de yakından Z80 / Z180 ailesinin komut seti benzer. Birçok talimatın işlem kodları, Rabbit 2000/3000 işlemciler ve Z80 / Z180 işlemciler arasında aynı olsa da, iki işlemci ailesi ikili uyumlu değildir. Z80 / Z180 ailesinde olduğu gibi, Rabbit işlemciler CISC işlemcilerdir.

Rabbit işlemci ailesinin benzersiz özellikleri vardır. Örneğin, Z80 / Z180 aile devre dışı bıraktığı kesmeler Bir kesme kez bir kesme hizmet yordamı ile ulaşılabilir. Bununla birlikte, Rabbit işlemcileri, önceliklere göre (toplam 4) hizmet rutinlerinin kesintiye uğramasına izin verir.

Rabbit Semiconductor, Rabbit işlemcilerin talimat setinin C kodu için optimize edildiğini iddia ediyor.

Dinamik C

Tavşan mikrodenetleyicisinin belki de en dikkat çekici özelliği geliştirme ortamıdır. Rabbit Semiconductor'ın bir ürünü olan Dynamic C, ANSI-C standardına kıyasla eklemeler, silmeler ve tutarsızlıklara sahiptir.

Not
(Referans: Bir Programı Dinamik C-Tavşan Yarı İletkenine Taşıma)

Dinamik C, uygun ve istendiğinde ISO / ANSI C standardını takip eder. Standart, gömülü sistemlerin özel ihtiyaçlarını hesaba katmadığından, bazı alanlarda standarttan uzaklaşmak, bazılarında ise arzu edilir. Standart, salt okunur bellek ve gömülü derleme dili gibi önemli gömülü sistem sorunlarını hesaba katmaz. Bu nedenle, gömülü sistemler için tasarlanmış pratik derleyiciler, standarda tam olarak uymaz, ancak onu bir kılavuz olarak kullanır.

Bir eklemeye örnek olarak, Dinamik C, farklı alt yordamlardan rastgele sayıda zincire kod parçalarını zincirlemek için bir zincirleme mekanizmasına sahiptir . Bu uzantı, yalnızca başlatılmış değişkenlerin kullanılmasına değil, aynı zamanda bir program ana işlevde yürütülmeye başlamadan önce herhangi bir rasgele kodun çalıştırılmasına izin verir.

Silme işlemine bir örnek olarak, 10.23 sürümünden itibaren Dinamik C, blok kapsamı değişkenlerini veya bit alanlarını desteklemez . Geliştirme araç zinciri, ayrı bir ön işlemci ve bağlayıcı içermez, bu da mevcut programları derleyiciye taşıma sürecini zorlaştırabilir. 10.64 sürümünden itibaren değişkenler için blok kapsamı desteklenmektedir.

Bir tutarsızlık örneği olarak, Dinamik C, başlatılmış tüm küresel değişkenleri, const niteleyici ile bildirilmiş gibi örtük olarak ele alır . Ayrıca, tüm const değişkenler flash bellekte bulunur. Dinamik C'nin önceki sürümleri, const anahtar kelimenin parametrelerde kullanımını kontrol etmemişti - bir const değişkeni, onu beklemeyen bir işleve bir parametre olarak geçirmek mümkündü, bu da potansiyel olarak flash belleğe yazma girişimlerine yol açıyordu. Dynamic C'nin en son sürümünden itibaren, derleyici, kullanıcı bir const değişkeni doğrudan değiştirmeye çalıştığında bir hata üretecek ve kullanıcı const bir işleve bir parametre iletirken niteleyiciyi atarsa ​​bir uyarı üretecektir .

Çoklu görev yapıları

Dinamik C'nin dikkate değer bir özelliği, çoklu görevi basitleştirmek için dil yapılarının dahil edilmesidir. Bu yapılar, costate ifade ve slice ifade, sırasıyla işbirlikçi ve önleyici çoklu görev biçimini uygular. Örnek olarak, iki LED'i farklı frekanslarda yanıp sönen aşağıdaki programı düşünün:

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

Bu kod çalıştırıldığında, ilk maliyet belirleme yürütülecek ve ilk LED yanacaktır. Maliyet belirleme 100 milisaniye beklerken ikinci ifadeye dönecektir. İkinci maliyetlendirme benzer şekilde yürütülecektir. Her iki maliyetlendirme de zamanlarının dolmasını beklerken, while döngüsü beklemekle meşgul olur , ancak bu bekleme süresi potansiyel olarak diğer görevleri gerçekleştirmek için kullanılabilir. Daha fazla bilgi için, Dinamik C Kullanıcı Kılavuzuna bakın .

Ayrıca bakınız

Referanslar

Dış bağlantılar