TinyOS'ta NesC İle Geliştirilen Uygulamaların Genel Yapısı

Yazar:

NesC bileşen bazlı bir programlama dilidir. TinyOS sistemi, kütüphaneleri ve uygulamaları NesC ile yazılmıştır. Bu programlama dili sensör ağlar gibi gömülü sistemeler için tasarlanmıştır.
NesC dili, C programlama diline benzer bir sözdizimi (sentaks) yapısına sahiptir. Bu dil TinyOS için geliştirilmiştir. Temel amacı ise uygulama tasarımcılarının, gömülü sistem bileşenlerini kolaylıkla inşa etmesine olanak tanır. Ayrıca eş zamanlı sistemler oluşturmak ve derleme zamanında kapsamlı denetim yapma olanağı da tanımaktadır.

TinyOS, NesC ile ifade edilen bir takım önemli kavramlar tanımlar. Bunların ilki nesC uygulamaları, iyi tanımlanmış ve çift yönlü arayüzlere sahip bileşenlerden oluşturulmuştur. İkinci olarak nesC, görev (task) ve donanım olayı işleyicilerine (hardware event handlers) dayalı bir eşzamanlılık modelini tanımlar ve derleme zamanında veri türlerini tespit eder.

Bileşenler

Tanımlanması

Bir nesC uygulaması, bir yürütülebilir dosya oluşturmak üzere birbirine bağlanan bir veya daha fazla bileşenden meydana gelir.

Bir bileşen, arayüzleri (interfaces) oluşturur ve kullanır. Bu arayüzler bileşene erişimin tek noktasıdır ve iki yönlüdür. Bir interface (arayüz) commands (komutlar) ve events (olaylar) adı verilen fonksiyon setlerini bildirir.

Commands, interface sağlayıcısının impelement (uygulama) etmek zorunda olduğu kısımdır. Events ise, kullanıcı tarafından implement (yerine getirilmesi gereken) edilmesi gereken kısımdır.

Bir bileşen için, arayüzdeki komutları çağırmak için bileşenin, o arayüzdeki 'events'leri implement etmesi gerekmektedir. Bir bileşen, aynı arayüzün (interface) birden çok arayüzünü ve olayını kullanabilir veya sağlayabilir.

Uygulanması (Implementation)
NesC'nin iki tip bileşeni vardır. Biri modules (modüller) diğeri ise configurations (konfigürasyonlar).

Modules, uygulama kodunu barındırır ve bir veya daha fazla arayüzün uygulamasını sağlar.

Configurations, diğer bileşenleri bir araya getirmek, birbirlerine monte edip bağlantı halinde olmaları için kullanılır diyebiliriz. Örneğin, bileşenler (components) tarafından kullanılan arayüzler (interfaces) ile diğer kullanıcıların oluşturduğu arayüzler birbirine bağlar. Bu olaya wiring (kablolama) denir. Her NesC uygulaması, bileşenleri içeride birbirine bağlayan üst seviye bir yapılandırma ile tanımlanır.

NesC dili ile kodlanan interfaces, modules ve configurations dosyalarının uzantıları ".nc" uzantılıdır. Kısacası nesC dili ile yazacağınız uygulamaların dosya uzantısı ".nc" olmalıdır.

Bakınız : TinyOS Kodlama ve İsimlendirme Kuralları

Eşzamanlılık Modeli
TinyOS, seçilen sistem bileşenleri ve ihtiyaç duyulan özel bileşenlerden oluşan bir uygulama için, yalnızca bir program çalıştırır. Çalıştırma olayının iki iş parçacığı vardır. Bunlardan biri "tasks" (görevler), diğer ise "hardware event handlers" (donanım olay işleyicisi)'dir.

Tasks (görevler), yürütülmesi kişi tarafından ertelenen yada gecikmeli olarak çalıştırılacak işlevlerdir. Planlandıktan sonra, görevi tamamlanmaya çalışırlar ve bir başka görevi öne atmazlar.

Hardware event handlers (donanım olay işleyicileri), bir donanım kesilmesine yanıt olarak yürütülür ve tamamlanıncaya kadar çalışır. Bunun haricinde bazen, bir görevin veya başka bir donanım olay işleyicisi (Hardware event handlers) yürütülmesini önceliklendirebilir.

Donanım olay işleyicisi'nin (hardware event handler) bir parçası olarak çalışan "command" ve "events"ler async anahtar kelimesi ile belirtilmek zorundadırlar. Çünkü task ve hardware event handler başka asenkron (eş zamanlı olmayan kod) tarafından çalıştırılabilir. NesC dili ile yazılmış programlar belirli "data race" koşullarına duyarlıdır. Data Races, ya paylaşılan verilere yalnızca görevler (tasks) dahilinde erişilerek veya tüm erişimlere atomik ifadeler dahilinde sahip olmak suretiyle engellenir. NesC derleyicisi, potansiyel  "data races"ları derleme sırasında programcıya bildirir. Derleyicinin, derleme sırasında programcıya yanlış "data race"  bildirimi yapması da söz konusu olabilir. Bu durumda değişken, "norace" anahtar kelimesi ile tanımlanabilir. Norace anahtar kelimesi çok dikkatli bir şekilde kullanılmalıdır.

Bakınız : nesC Language Reference Manual

Bu yazının orjinaline şu linkten ulaşabilirsiniz :

http://www.cse.iitd.ernet.in/~pulkit/embedded2/docs/lesson1.html

Çevirinini devamı : TinyOS Blink Uygulamasının Detaylı Olarak Anlatımı

Çeviri tamamen Ali ARSLAN tarafından yapılmış olup, ilk defa Blogkafem.net üzerinden yayınlanmıştır. Kopyalamanız halinde lütfen kaynak gösteriniz. Konuyla ilgili farkettiğiniz çeviri veya yazım hatalarını, aşağıdaki yorum formu aracılığıyla iletebilirsiniz. İyi çalışmalar.

Thanks to Indian Institute of Technology Delhi for TinyOS documentation that they present. (Sundukları TinyOS dokümanları için Hindistan Teknoloji Enstitüsü'ne teşekkürler.)





Hey!

Blogkafem'de okumuş olduğunuz içerik ile ilgili belirtmek istediklerinizi, aşağıdaki yorum formuna yazabilirsin. En kısa sürede dönüş yapacağımdan emin olabilirsiniz.

Özel sorularınız için BLOGKAFEM'in sosyal medya hesapları üzerinden benimle iletişime geçebilirsiniz.

Okuduğunuz içerik faydalı olduysa #blogkafem etiketiyle okuduğunuz içeriğin linkini Twitter'da paylaşarak Blogkafem'e destek olabilirsiniz.

0 yorum:

Yorum Sayfası :



Yorum yaparken dikkat edilmesi gerekenler;

1. Yorum Formunu doldurduktan sonra Profil Seç -> ADI/URL bölümünden isminizi yazıp yorum yaparsanız size karşı bir hitap şeklimiz olur. (URL kısmını boş bırakabilirsiniz.)

2. Anonim olarak yaptığınız yorumlar "Adsız" olarak gözükmektedir.

3. Türkçe yazım ve dilbilgisi kurallarına uymaya özen gösteriniz.

4. Küfür,hakaret,mail adresi veya konu ile ilgisi olmayan reklam amaçlı website adresi içeren yorumlar yayınlanmamaktadır.

İstatistikler

BLOGKAFEM.NET

© Copyright 2008-2018
Sitedeki yazıların her hakkı BLOGKAFEM.NET sitesine aittir.
Kopyalanması halinde lütfen kaynak gösteriniz.
DMCA.com Protection Status
Anasayfa | Hakkımızda | Bizden | Reklam | İletişim