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 :
https://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.)
TinyOS'ta NesC İle Geliştirilen Uygulamaların Genel Yapısı
Daha fazlası için arama yapın :
Etiketler:
bilgisayar ağları,
kablosuz sensör ağlar,
nesC,
network,
tinyOS
0 yorum:
Yorum formuna konuyla ilgili görüş ve sorularınızı bırakabilirsiniz.
Yorumunuza mümkün olan en kısa sürede dönüş yapılacağından emin olabilirsiniz.
Eklenen yorumlar, moderatör onayından sonra yayınlanmaktadır.