Bazı zamanlarda sunucu kaynaklı sebeplerden dolayı internet sitenize erişim problemi yaşayabilirsiniz. Bunun için en basit yöntem ise sunucuyu yeniden başlatmaktır. Eğer ki sunucuyu yeniden başlatmanıza rağmen sorununuzu çözemediyseniz, akla gelen diğer bir yöntem ise "apache2"yi yeniden başlatmak olacaktır.

Putty benzeri bir programla, sunucu terminal ekranınıza giriş yaptıktan sonra, Apache2 için yeniden başlatma komutu şudur :
service apache2 restart

"Restarting web server apache2 [fail]" Problemi ve Çözüm Yöntemi


Kimi zaman, Apachi2'yi yeniden başlatma komutunu yazdıktan sonra şöyle bir hata ile karşı karşıya kalabilirsiniz :
 * Restarting web server apache2 [fail]
 * There are processes named 'apache2' running which do not match your pid file which are left untouched in the name of safety, Please review the situation by hand.


Aldığınız hata tam olarak buysa, bu hatayı gidermek için apachi2 prosesini tamamen sonlandırmamız gerekmektedir. Sonrasında ise apache2'yi sorunsuz olarak yeniden başlatabilirsiniz. Aşağıdaki adımları takip ederek, bu sorundan kolayca kurtulabilirsiniz.

1) İlk önce apache2'nin id değerini bulmak için terminalden şu komutu yazıyoruz :
pidof apache2
2) İlgili id değerini bulduktan sonra bu "id" değerini kullanarak, apache2'yi sonlandırmak için işletim sistemine kill komutunu veriyoruz.
sudo kill -9 "buraya tırnaklar olmadan, önceki adımda bulunan id değerini yazın"

3) Son olarak ise alttaki komutu yazarak apache2 web yorumlayıcısını sorunsuz olarak başlatabilirsiniz
sudo service apache2 restart

Eğer ki sitenizde SSL kullanıyorsanız, restart komutundan sonra sizden şifre istenebilir. Şifre olarak ise SSL kurarken kullandığınız şifreyi yazmanız gerekecektir. Aşağıdaki görsele bakarak, buraya kadar anlattıklarımı uygulamalı bir şekilde görebilirsiniz.


Görseldeki "id" değerini sakın siz kendi sunucunuzda kullanmayın. Çünkü "pidof apache2" komutu sonucu sistemin size vereceği "id" bilgisi her sunucuda farklıdır. Konuyla ilgili yorumlarınızı aşağıdaki yorum kutucuğuna yapabilirsiniz, kolay gelsin.
Yazının devamını oku

Bir markanın güvenilir olduğunu nasıl anlarsınız? Elbette bağımsız ve saygın test kuruluşlarının raporlarını takip ederek. Reklamlar ve promosyonlara aldanmayın, bir markanın ne kadar güvenilir olduğu ve müşteri memnuniyetini ne denli önemsediği, ancak sahip olduğu sertifikalar sayesinde anlaşılabiliyor. Bu bakımdan, Almanya merkezli GC Mark, Avrupa’nın en saygın denetleme ve sertifikalandırma firmalarından biri sayılıyor. Firmaların hammadde işlemesinden üretimine, paketlemesinden satışa sunulmasına dek pek çok farklı unsurunu uluslararası standartlara göre denetleyip değerlendiren bağımsız bir kuruluş olan GC Mark, dünyanın en saygın ve prestijli sertifikalarını veriyor. GC Mark sertifikasına sahip olan bir şirketin ISO 9001, IS0 10001, 2, 3, 4 standartlarına uygun üretim ve kalite kontrolü yaptığına, sürekli olarak gelişime açık bir üretim ve yönetim yapısına sahip olduğuna emin olabilirsiniz.

Dünyada sayılı şirketin sahip olduğu GC Mark Verified Customer Satisfaction (Kanıtlanmış Müşteri Memnuniyeti) sertifikasına sahip olan tek Türk şirketi, hâlihazırda sektörde 60 yılı aşkın bir deneyime sahip olan Uğur Soğutma. Müşteri memnuniyetine verdiği önemi Avrupa’nın en büyük bağımsız denetim kuruluşlarından biri olan GC Mark Verified Curstomer Satisfaction denetimini başarıyla tamamlayarak elde ettiği sertifikayla global düzeyde ispat eden Uğur Soğutma, böylelikle ürünlerinin kalitesi kadar tüketici deneyimine verdiği önemi de bir kez daha göstermiş oluyor. İki yıl boyunca Türkiye’de aynı sektördeki başka hiçbir markanın alamayacağı bu sertifika, Uğur Soğutma’nın müşterilerine vermiş olduğu değer ve önemi mükemmel bir şekilde yansıtıyor. Uğur Soğutma, ürünlerinde GC Mark sertifikası amblemini kullanma hakkını da elde etmiş oluyor.

Diğer bir deyişle, Uğur Soğutma ürünlerinin kalitesi, global düzeyde bir kez daha tasdik edilmiş oluyor. Uğur Soğutma’nın çevrimiçi mağazasından ve bayilerinden satın aldığınız ürünlerden memnun kalacağınıza emin olabilirsiniz: Hem Uğur Soğutma, hem de GC Mark bunu garanti ediyor!

Bir boomads advertorial içeriğidir.

Yazının devamını oku
TinyViz, TinyOS ortamında çalışan bir Grafiksel Kullanıcı Arayüzü'dür. Hata ayıklama, görselleştirme ve TinyOS uygulamalarının TOSSİM simülasyonlarıyla etkileşim kurmaları için, genişletilebilir bir grafiksel kullanıcı arayüzü (GUI) sağlar.

TinyViz ile;
  • Çalışan TinyOS uygulamalarının işleyişi kolaylıkla takip edilebilir.
  • Beklenmeyen olaylar meydana geldiğinde kesme noktası atanabilir.
  • Radyo mesajları görselleştirilebilir.
  • Düğümlerin (mote) radyo bağlantıları ve sanal pozisyonları manipüle edilebilir.
Buna ek olarak TinyViz, kendi uygulamanıza özel bir şekilde verilerinizi görselleştirmek veya çalışan simülasyon ile etkileşim kurmanız için, kendi TinyViz modüllerinizi yazmanıza imkan tanıyan basit bir "eklenti" API'yi desteklemektedir.

Başlangıç için apps klasöründe yer alan TestTinyViz uygulamasına bakabilirsiniz. TestTinyViz uygulaması, düğümlerin periyodik olarak rastgele bir komşuya, mesaj gönderen bir uygulamadır. Bu test uygulamasının başka bir özelliği yok fakat; TinyViz'in temel özelliklerini görmemizi sağlayacak bir uygulamadır. Hemen apps/TestTinyViz klasörüne cd komutu ile girip "make pc" ile uygulamayı build (oluşturmak, derlemek) edin.

TinyViz'i derlemek için terminal üzerinden cd komutu ile tools/java/net/tinyos/sim dizinine gidin ve "make" komutunu yazarak enter tuşuna tıklayın. Bu işlem sizin, tinyviz.jar dosyasını build etmenizi sağlayacaktır. Yani bu komut ile beraber TinyViz programı,tinyviz.jar olarak oluşacaktır. Bağımsız olan bu Jar uzantılı Java dosyasını, tinyviz script komutu ile çalıştırabilirsiniz. TinyViz script dosyasının, dosya yolunu belirterek, 'tinyviz'i doğrudan komut satırı üzerinden çalıştırabilirsiniz.

TinyViz uygulamasını başlatma ve TestTinyViz uygulamasını çalıştırma işlemlerini şu şekilde yapabilirsiniz.

export DBG=usr1
tinyviz -run build/pc/main.exe 30

Bu komutu çalıştırdıktan sonra aşağıdaki gibi bir pencere göreceksiniz.


Solda, sensör ağının grafik ekranı yer almaktadır. Sağ tarafta ise, TinyViz'in nasıl çalıştığını kontrol eden ve bir dizi eklentiyle etkileşime girebileceğiniz yönetim ekranı yer almaktadır.

Düğümlerin listelendiği sol ekranda, herhangi bir düğüme tıklayarak o düğümü seçebilir veya fare imleci ile bir dikdörtgen oluşturarak, toplu düğüm seçimi yapılabilir. Her bir düğüm üzerine tıklanarak başka bir yere sürüklenebilir. Herhangi bir düğümü bu şekilde, üzerine tıklayarak seçmek, bazı işlemler veya eklentiler için kullanışlı olabilmektedir. Örneğin tek bir düğümü açıp kapatmak yani devre dışı bırakıp, tekrar akitf etmek işlemi vs. gibi.

TinyViz ekranındaki "duraklat/oynat" olarak adlandırabileceğimiz yeşil üçgene sahip olan buton, simülasyonu duraklatıp, tekrardan kaldığı yerden oynatmamıza olanak tanır. Hemen sağ tarafında yer alan, içinde kare ızgarayı andıran dikdörtgen olan buton ise, ekrandaki kılavuz çizgileri arasında geçiş yapmayı sağlar. "Clear" düğmesi görüntüleme durumunu temizler. Clear butonun hemen sağ tarafın yer alan buton ise tüm işlemleri sonlandıran "Stop" butonudur. Stop butonu simülasyonu tamamen kapatır.

"Delay" yazılı sürgü ise, her TOSSIM etkinliğinin işlenmesi arasında belli bir süre beklenmesini istiyorsanız, gecikme (delay) sürgüsü, iki etkinlik arası belli bir gecikme sağlayabilirsiniz. Gecikme sürgüsü, az sayıda düğümün olduğu ağlarda, simülasyonun "gerçek zamanlı" olarak izlenmesi gerektiği durumlar için faydalıdır.

"On/Off" düğmesi ise, seçilen düğümlerin güç durumunu değiştirir. Yani güç verip kesme işlemi yapar diyebiliriz.

Bu yazının orjinaline şu linkten ulaşabilirsiniz : http://www.cse.iitd.ernet.in/~pulkit/embedded2/docs/lesson5.html

Yazının çevirisi 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.)

Yazının devamını oku
TOSSIM'in önemli bir avantajı, bilgisayarda çalıştığından dolayı "gdb" gibi geleneksel hata ayıklama araçlarının kullanılabiliyor olmasıdır. Bununla birlikte TOSSIM'de, çok sayıdaki düğüm için ayrı bir olay simülasyonu olduğundan, geleneksel olan, adım adım hata ayıklama teknikleri yalnızca bir etkinlik (event) temelinde çalışır. Çapraz olaylar için çalışmaz.


Maalesef ki gdb NesC için değil, genellikle C için tasarlanmıştır. NesC'nin bileşen modeli tek bir komut için birden çok sağlayıcıya sahip olacağı anlamına gelir. Belirli bir komuttan yararlanmak veya komuta başvurmak için bileşen, arabirim ve komutun belirtilmesi gerekir. Örneğin, LedsC'nin Leds arayüzünün redOff komutunu kesmek için, şu yapılmalıdır :

 gdb build/pc/main.exe  // start gdb

(gdb) break *LedsC$Leds$redOff
Breakpoint 1 at 0x804c644: file tos/system/LedsC.td, line 97.

run 1    

LedsC, geçiş komutları için açma kapama işlemlerini tutar. gdb işlevinin doğru ayrıştırılması için "*" ifadesini eklemek önemlidir.

Değişkenler de benzer şekilde isimlendirilir. Örneğin, LedsC'nin, ledsOn değişkenini ekrana basmak için yazılması gereken kod :

(gdb) print LedsC$ledsOn
$3 = '\0' 

Aslında üstte gösterilen çıktı tamamiyle doğru değil. Çünkü TOSSİM'de, ledsOn tek bir uint8_t değil, 1000'in üzerinde bir dizi. Bu işlem, TOSSIM'in birden fazla düğümün durumunu, n bileşene sahip olan dizilerin nasıl derlendiğini işler. Buradaki "n" ifadesi, maksimum simülasyon boyutudur.

Ancak bir düğüm, bir bileşenin durumuna eriştiğinde, kendi kimliğine (ID) bağlı olarak dizinin içine indeksler. Bu nedenle, belirli bir kod durumunu çağırmak için dizinin doğru dizinlenmesi gerekiyor:

(gdb) print LedsC$ledsOn[tos_state.current_node]
$2 = 0 '\0'

Örneğin siz de adı VAR olan bir gdb olay işleyicisi yapabilirsiniz. Bunun için tos/platform/pc/ klasörü içerisinde .gdbinit adında bir dosyaya sahip olmalısınız. Eğer TinyOS klasörünüzde .gdbinit dosyası yoksa, kendiniz oluşturabilirsiniz. Böyle bir dosyaya sahipseniz, içine yalnızca şunu eklemeniz yeterli olacaktır :

(gdb) VAR LedsC$ledsOn
$3 = 0 '\0'

GDB İle İlgili Daha Detaylı Bilgi Edinmek İçin Buraya Tıklayınız.

Bu yazının orjinaline şu linkten ulaşabilirsiniz : http://www.cse.iitd.ernet.in/~pulkit/embedded2/docs/lesson5.html

Yazının çevirisi 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.)
Yazının devamını oku
Bundan önceki yazımızda, DBG modlarının tam setini, build/pc/main.exe --help yazarak görebilirsiniz demiştik.

Öncek Yazı : TinyOS'ta TOSSIM İle Simülasyon Yapmak (Detaylı Anlatım)

Bu yazıda ise DBG'nin kullanımı ve DBG'nin modların kullanımına yoğunlaşacağız.


TinyOS'taki uygulamaların bileşenleri için, DBG'nin hata ayıklamak için usr1, usr2, usr3 ve temp olmak üzere 4 farklı modu vardır. TinyOS'ta DBG komutu şu parametreleri alır :

dbg(, const char* format, ...);

Mode parametresi, bu mesajın hangi DBG modlarında yazdırılacağını belirtir. Modların tamamına tos/types/dbg_modes.h dosyasında bulabilirsiniz. dbg ifadesi printf() sözdizimini içerir ve string çıktısı verir. Örneğin şu dosyayı tos/lib/Counters/Counter.nc editörde açın. Daha sonrasında ise Timer.fired() fonksiyonunda return ifadesinden önce aşağıdaki komutu ekleyin :

dbg(DBG_TEMP, "Sayaç: Value is %i\n", (int)state);


Üstteki kod kod parçasında olduğu gibi dbg'nin modunun ayarlandığı ilk parametreyi DBG_TEMP olarak ayarlayın ve tek düğüm (mote) için simülasyonu çalıştırın. Simülasyon çalıştığında "Sayaç" değerinin arttığını göreceksiniz.

Genel olarak, üstteki kod örneğinden de göreceğiniz üzere, TinyOS kodundaki "DBG modu", simülatörü çalıştırdığınızda DBG alt tire çalıştırmak istediğiniz özellik (DBG_özellik) ile birlikte kullanılır. Modun kullanımı için birkaç örnek :

  • aktif mesajlar modu için DBG_AM
  • paketler için DBG_PACKET
  • boot işlemi için DBG_BOOT

Simülatörü çalıştırırken çoklu modları etkinleştirebildiğiniz gibi, tek bir hata mesajı da birden fazla modda etkinleştirilebilir. Bunun için mod tanımları arasınad şu ayıraç operatöründen "|" eklemeniz yeterli olacaktır.

Örneğin;

dbg(DBG_TEMP|DBG_USR1, "Sayaç: Value is %i\n", (int)state);

Bu kodu çalıştırdıktan sonra, hangi mod aktifleştirilmişse ekran o moda ait çıktılar göreceksiniz. Kodu çalıştırarak bunu kendiniz de test edebilirsiniz.

Bu yazının orjinaline şu linkten ulaşabilirsiniz : http://www.cse.iitd.ernet.in/~pulkit/embedded2/docs/lesson5.html

Yazının çevirisi 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.)
Yazının devamını oku
TOSSIM bir TinyOS simülatörüdür ve direkt olarak TinyOS kodundan derlenir. "make pc" komutu ile simülasyon direkt olarak bilgisayarda çalışır. TOSSIM, eş zamanlı olarak binlerce düğümü (mote) simüle edebilir. Simülasyondaki her düğüm (mote) aynı TinyOS programı ile çalışır. TOSSIM, her defasında yeniden derlemeye ihtiyaç duyulmadan, çalışma zamanında yapılandırılabilir hata çıktıları sağlar. TOSSIM ayrıca kullanıcıların, TOSSIM aracılığıyla çalıştırdıkları bir uygulamanın, farklı açılardan incelenmesine olanak tanır.



Uygulama Oluşturmak ve Çalıştırmak

TOSSIM, uygulamanın dizinindeyken terminale "make pc" yazarak derlenir. Derlenmesi beklenen TinyOS bileşenlerine ek olarak, simülatöre özgü bazı dosyalar da derlenir. Bu dosyalar, TCP yuvaları üzerinden ağ izleme desteği gibi işlevsellikler sağlarlar.

TinyOS dosyasındaki apps/CntToLedsAndRfm dizinine girin. CntToLedsAndRfm uygulaması, 4Hz'lik bir sayaç çalıştırır. Bu uygulama, simülasyon olarak çalışacağı zaman, 3 LED'e sahip bir mica düğümüne (mote veya donanım) sahip olduğumuzu varsayar. Uygulama, her bir sayaç işaretinde, sayacın en önemli 3 bitini, donanımın 3 LED'i üzerinden gösterir ve tüm 16 bitlik değeri bir paket olarak gönderir. Uygulamayı, mica mote üzerine kurup, yükleyin. Simülasyonun başarılı bir şekilde çalıştığını anlamak için, LED'lerin yanıp söndüğünü görmelisiniz. (run with mica mote)

"make pc" komutu ile bir uygulamanın TOSSIM sürümünü oluşturabilirsiniz. Çalışır sürüm oluşturulduktan sonra, çalıştırmanız gereken dosya, şu dosya yolunda olacaktır : build/pc/main.exe

Terminal ekranına build/pc/main.exe --help yazarak, komut satırının nasıl kullanılacağına dair kısa bir özet görebilirsiniz.

Belli sayıdaki düğümü simüle etmek için TOSSIM, gerekli olan tek bir parametreye ihtiyaç duyar. Konsol ekranına build/pc/main.exe 1 yazarak tek bir düğümün simülasyonunu çalıştırabilirsiniz. Bu komutu çalıştırdıktan sonra, radyo bitleri ile ilgili olan, uçtan uca uzun bir olay akışı görmelisiniz. Simülasyonu durdurmak için Ctrl+C'ye basmanız yeterli olacaktır.

Varsayılan olarak, TOSSIM tüm hata ayıklama bilgilerini ekrana yazdırır. Radyo biti olayları (events) 20 veya 40 KHz'de tetiklendiğinden (bu aynı zamanda simülatörde en sık görülen olaylardır), CntToLedsAndRfm uygulamasındaki çıktıların çoğunu oluştururlar. Uygulama göz önüne alındığında, bireysel radyo bitlerinden çok, paket çıkışı ve düğüm (mote) LED'leri ile daha fazla ilgileniyoruz. TOSSIM çıktısı, shell üzerinden DBG çevre değişkeni ayarlanarak konfigüre edilebilir. Örneğin, Export DBG = am komutunu verince, bu sadece LED ve AM (aktif mesajlar) paket çıkışını etkinleştirir. Tek düğümlü simülasyon tekrar çalıştırdığınızda ise, aşağıdaki çıktıyı elde etmiş olmanız gerekiyor.

0: LEDS: Yellow off.
0: LEDS: Green off.
0: LEDS: Red off.
0: Sending message: ffff, 4
    ff ff 04 7d 08 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 3b f3 00 00 01 00 00 00
0: LEDS: Yellow off.
0: LEDS: Green off.
0: LEDS: Red on.
0: Sending message: ffff, 4
    ff ff 04 7d 08 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 ac e6 00 00 01 00 00 00       

Paketin 6. baytı, iki baytlık sayaçların en anlamlısını içerir. Örneğin yukarıda yer alan 1. pakete baktığımız zaman, 6. bayt 16'lık sayı tabanına göre "20" değerini içerirken, sadece kırmızı led ışığın yandığı ikinci paketin mesaj içeriğine (sayaç bitleri) baktığımız zaman 6. bitin 16'lık tabanda "21" değerine sahip olduğunu görmekteyiz.

Neredeyse her mesajın önünde "0:" ifadesinin yer aldığını farketmişsinizdir. Bu ifade, sıfırıncı düğümün (mote:0) çalıştığı anlamına gelmektedir. Örneğin, "build/pc/main.exe 2" komutu ile 2 düğüm (mote) içeren bir simülasyon çalıştırı ve daha sonra CTRL+C yaparak simülasyonu durdurun. Çıktıları incelediğinizde, hem mote 0 hem de mote 1'e ait mesajlar göreceksiniz.

DBG'yi crc'ye ayarlayın. CntToLedsAndRfm uygulamasını çalıştırıcağınız zaman, build/pc/main.exe 2 komutu ile, iki düğüme sahip bir simülasyon çalıştırın. Bu işlemden sonra, her iki düğümün de birbirinden başarılı paketler aldığını gösteren çıktılar göreceksiniz.

DBG modlarının tam seti, build/pc/main.exe --help yazarak görülebilir. Modlar, bunlar çıktıların alt kısmında listelenir.

İlgili Yazı : TOSSIM'de DBG'nin Kullanımı (TOSSIM'de Hata Ayıklamak)

"İlgili Yazı" linkine tıklayarak TOSSIM'de DBG'nin kullanımı hakkında daha detaylı bilgiye ulaşabilirsiniz.

Bu yazının orjinaline şu linkten ulaşabilirsiniz : http://www.cse.iitd.ernet.in/~pulkit/embedded2/docs/lesson5.html

Yazının çevirisi 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.)
Yazının devamını oku
Daha önceki yazıda "Blink" uygulamasını yalnızca TinyOS'un sağlıklı olarak çalışıp çalışmadığını test etmek için kullanmıştık.

Bakınız : TinyOS'u Blink Uygulaması İle Test Etmek

Sonrasında ise TinyOS'ta nesC ile geliştirilen uygulamaların genel yapısından bahsetmiştik.

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

Şimdi ise, "Blink" uygulamasının detaylarına ineceğiz. Eğer TinyOS platformunda yeniyseniz, programa daha iyi hakim olabilmeniz açısından bu yazı sizler için çok yararlı olacaktır.

Blink uygulaması, TinyOS içindeki "apps" klasörü içerisinde yer almaktadır. Uygulamanın kaynak kodlarını (source code), daha önceden kurulumunu TinyOS'a özel olarak anlattığım anlattığım "Eclipse" uygulaması ile düzenli bir şekilde görüntüleyebilirsiniz.

Blink uygulaması, TinyOS'a özel olarak geliştirilen NesC dilini kavrayabilmemiz için inceleyeceğimiz en basit örnektir. Bu uygulama yalnızca donanım (mote veya düğüm de denebilir) üzerindeki kırmızı ledi 1 Hz (hertz) ile açıp kapatıyor.

Blink uygulaması "BlinkM.nc" adlı bir modülden (module) ve "Blink.nc" adında bir konfigürasyon (configuration) dosyası olmak üzere 2 farklı bileşenden (component) oluşur. TinyOS'taki uygulamalar, uygulamanın kendinden sonra, tipik olarak isimlendirilen üst seviye konfigürasyon (configuration) dosyalarına ihtiyaç duyduğunu hatırlayın.

Bakınız : TinyOS ve NesC Nedir? Nesc Uygulamalarının Genel Yapısı Nedir?

Bu durumda Blink.nc dosyası, blink uygulaması ve NesC derleyicisinin çalıştırılabilir bir dosya oluşturabilmesi için derleyicinin kullandığı kaynak dosyasının, konfigürasyon (configuration) dosyasıdır.

Module dosyası dediğimiz BlinkM.nc dosyası ise, Blink uygulamasının, 'implementation' olarak adlandırılan kısmını oluşturur.

Tahmin edebileceğiniz gibi; Blink.nc configuration dosyası, Blink uygulamasının ihtiyaç duyduğu diğer bileşenler ile BlinkM.nc modülü arasında kablolama (wire) yapması için kullanılır.

Modüller ve konfigürasyonlar arasındaki ayrımın nedeni, bir sistem tasarımcısının uygulamaları hızla "bir araya getirmesini" sağlamaktır.  Örneğin bir sistem tasarımcısı, bir konfigürasyon dosyası sayesinde gerçekte kendi tasarlamadığı birden çok modülü basitçe bir araya getirebilir. Ayrıca başka bir uygulama geliştirici (developer), uygulama dahilinde kullanılabilen yeni kütüphanaler dizisi geliştirebilir.

Uygulama implemantation modülü için adlandırılan "BlinkM.nc" ve configuration işlemi için "BlinkC.nc" olarak belirtilen dosya adlandırmaları, TinyOS'un uygun gördüğü adlandırma şekilleridir. Siz de TinyOS'ta kendi uygulamanızı yazacağınız zaman, Blink uygulamasında olduğu gibi uygulamanızın implemantation modülü (uygulamadiM.nc) ve  configuration dosyasının (uygulamadiC.nc) adlandırma şeklini, aynı kurala uyarak adlandırmanızı tavsiye ederim.

Bakınız : TinyOS Naming Conventions (Adlandırma Kuralları)

Blink.nc Configuration

NesC derleyicisi (ncc), üst düzey configuration içeren dosya verildiğinde, nesC uygulamasını derler. Tipik TinyOS uygulamaları, platform seçimine izin veren ve uygulamanın üst düzey yapılandırmasında uygun seçeneklerle ncc'yi çağıran standart bir Makefile ile birlikte gelir.

Blink.nc (Configuration Dosyası)
configuration Blink {
}
implementation {
  components Main, BlinkM, SingleTimer, LedsC;

  Main.StdControl -> BlinkM.StdControl;
  Main.StdControl -> SingleTimer.StdControl;
  BlinkM.Timer -> SingleTimer.Timer;
  BlinkM.Leds -> LedsC;
}

İlk satıra baktığınızda, dosyasının bir yapılandırma dosyasını olduğunu gösteren "configuration" anahtar kelimesinin kullanıldığını görüyorsunuz. Bu işlemle bu dosyanın "Blink" adı verilen bir "configuration" dosyası olduğunu tanımlamış olduk. Burada "configuration" içerisinde bir modülde olduğu gibi "uses" ve "provide" tanımlaması yapılabilir. Burada unutulmaması gereken şey ise, bir "configuration" dosyası arayüzleri kulanabilir veya yeni bir arayüz sağlayabilir.

Gerçek yapılandırmalar (konfigürasyonlar) ise aslında "implementation" anahtar kelimesi adı altındaki parantezler içinde tanımlanmaktadır. Bunun (implementation) içerisinde de yararlanılan bileşenler (componenets) belirtilir. Bu örneğimizde Main, BlinkM, SingleTimer, LedsC bileşenlerinden faydalanılmış olduğunu görmekteyiz. Kalan kısımlar ise bileşenler tarafından kullanılan,   başkaları tarafından yapılmış, birbiri ile bağlantılı arayüzlerden (interface) oluşur.

Main, TinyOS'ta ilk olarak çalıştırılan bileşendir. TinyOS'ta ilk çalışan komut ise, "Main.StdControl.init()" komutudur. StdControl denen şey, TinyOS'ta ortak olarak kullanılan bir arayüzdür. TinyOS klasörünüzün içerisinde yer alan "tos/interfaces" klasörüne girerek StdControl.nc dosyasının içeriğini inceleyebilirsiniz.

Bakınız :

StdControl.nc
interface StdControl {
  command result_t init();
  command result_t start();
  command result_t stop();
}

Bu interface, TinyOS bileşenlerinin (components) kurulumu ve çalıştırılmasını sağlar. Bu sebeple configuration dosyasının içerisinden çağrılması gereken bir interface'tir.  Gördüğünüz StdControl.nc dosyası 3 komuttan oluşmaktadır.

init()  : Bir bileşen ilk defa başlatılacağında / çalıştırılacağında çağrılır.
start(): Uygulama ilk defa çalıştırılacağında çağrılır.
stop() : Bileşen durduğunda çağrılır. Örneğin kontrol edilen cihaz kapatıldığında.

init() birden çok kez çağrılabilir. Sadece ve sadece, start() ve stop() komutları çağrıldıktan sonra init() çağrılmaz.

Bir bileşen üzerinden çağrılan init(), o bileşenin tüm alt bileşenlerinden de çağırmalıdır.

Bakınız :

  Main.StdControl -> BlinkM.StdControl;
  Main.StdControl -> SingleTimer.StdControl;

Blink configuration, Main'deki StdControl arayüzünü (interface) hem BlinkM hem de SingleTimer'deki StdControl arayüzünü bağlar. SingleTimer.StdControl.init () ve BlinkM.StdControl.init () ise,  Main.StdControl.init () tarafından çağrılır. Aynı kural, start () ve stop () komutları için de geçerlidir.

Kullanılmış arabirimler ile ilgili olarak, alt bileşen başlatma işlevlerinin, kullanan bileşen tarafından açıkça çağrılması gerektiğini unutmamak önemlidir. Örneğin, BlinkM modülü Leds arayüzünü kullanır, bu nedenle Leds.init () açık bir şekilde BlinkM.init() içinden çağrılır.

NesC arayüzleri arasındaki ilişkileri belirlemek için "->" oku kullanır. Okun sol tarafı, sağ taraftaki uygulamanın arabirimini uygulamaya bağlar. Başka bir deyişle, arayüzü (interface) kullanan bileşen soldadır ve soldaki bileşen sağdaki arayüzü çağırarak, (veya uygulamamıza bağlayarak) kullanabilmemizi sağlar.

Bu açıklamayı daha iyi anlamak için, şu ifadeyi açıklayalım :

BlinkM.Timer -> SingleTimer.Timer; 

Burada BlinkM, Timer arayüzünü (interface) kullanır. Bunu kulanabilmesi için ise, SingleTimer bileşeni tarafından sunulan Timer arayüzüne başvuruluyor. Böylece sağ taraftan "provide" edilen "Timer" arabirimi (interface), sol tarafta kullanılmış oldu. Bu configuration işlemi sayesinde, "Timer" arayüzünü artık BlinkM uygulamamızda kullanabileceğiz.

Dosya yolları :

Okun sol tarafında yer alam Timer => tos/interfaces/Timer.nc
Okun sağ tarafında yer alam Timer => tos/lib/SingleTimer.nc

Unutmayın! Her zaman okun sol tarafı arabirimleri (interfaces) ifade eder, sağ tarafı ise uygulamaları (implementations) ifade eder.

nesC, tek bir arayüzün çoklu implementation olayını desteklemektedir. Timer interface implementation işlemi buna güzel bir örnektir. TimerC bileşeni, Timer id değerini parametre olarak kullanarak çoklu implement yaparken, SingleTimer bileşeni yalnızca bir Timer arayüzünü implement eder.

Bazı wiring (bağlama/yapılandırma) işlemleri, uzun uzun yazılmaması adına kısaca şu şekilde yazılabilir :

  BlinkM.Leds -> LedsC;

Bu işlem aslında şununla aynıdır :

  BlinkM.Leds -> LedsC.Leds;

Eğer ki ok işaretinin sağ tarafında, interface ismi uzunca tanımlanmamış ise, nesC derleyicisi default olarak sol tarafta tanımlı olan interface değişkenini kullanmayı dener.

BlinkM.nc Modülü

Şimdi ise BlinkM.nc adı verilen Blink modülünü inceleyeceğiz.

BlinkM.nc
module BlinkM {
  provides {
    interface StdControl;
  }
  uses {
    interface Timer;
    interface Leds;
  }
}
// kod burada devam eder..


Tanımlamanın ilk başında, dosyamızın bir modül dosyası olduğunu belirttik. Daha sonrasında ise, hangi arabirimleri (arayüz/interface) hazır TinyOS kütüphanesinden sağlayacağımızı "provides" ile, hangilerini kullanacağımızı ise "uses" süslü parantezleri içinde tanımladık. Bu açıklamayı biraz daha açacak olursak, şöyle diyebiliriz :

BlinkM modülü, StdControl arabirimini (interface) implement etmektedir. Daha önceden de açıkladığımız gibi StdControl, Blink bileşenlerinin (components) kurulumu ve başlatılması için gerekli tanımlamadır.

Blink modülünün ayrıca "uses" içerisinde "Timer" ve "Leds" adında iki arabirimi kullandığını görmekteyiz. Bu işlemin anlamı da şudur. Blink modülü, "Timer" ve "Leds" arabirimleri içerisinde tanımlı olan tüm "command" ve "events"leri kullanabilir anlamına gelmektedir.

Leds arabiriminde redOn(), redOff() gibisinden, donanım üzerindeki farklı renkteki ledleri açıp kapatacak komutlar (command) yer almaktadır. BlinkM modülü Leds arabirimini (interface) kullandığı (uses) için, bu komutlardan (command) istediği birini çağırabilir. Burada unutmamanız gereken şey, Leds'nin yalnızca bir interface olduğudur. Implementation olayını,  Blink.nc adını verdiğimiz configuration dosyasında tanımlamıştık.

Şimdi de Timer arabirimini (interface) inceleyelim.

Timer.nc
interface Timer {
  command result_t start(char type, uint32_t interval);
  command result_t stop();
  event result_t fired();
}

Timer interface içerisinde start() and stop() commands tanımlamaları ve bir adet fired() adlı verilen event tanımlaması yer almaktadır.

start() adlı komut (command) iki parametre alır. Önce ikinci parametreden bahsedeyim.  start() komutunun ikinci parametresi, sonlanmasını istediğimiz işlemin, milisecond cinsinden, ne kadar süre sonra sonlanacağını tanımlamamızı sağlar.

İlk parametre ise, zamanlayıcının türünü tanımlar. Geçerli olan iki zamanlayıcı türü vardır. Bunlardan biri TIMER_REPEAT bir diğer ise, TIMER_ONE_SHOT'tır.  TIMER_ONE_SHOT türü tanımlı ise işlemimiz, ikinci parametrede belirtilen süre bitene kadar çalışır. TIMER_REPEAT türü tanımlı ise işlemimiz, biz stop() komutu belirtinceye kadar sürekli olarak çalışmaya devam eder.

Uygulama, sürenin dolduğunu ise şu event sayesinde anlayabiliyor :

event result_t fired();

Event, arayüz uygulamasının (implementation of interface) belli bir olay gerçekleştiğinde, sinyal vereceği bir fonksiyondur. Belirlenen zaman aralığı aşıldığında bu durum, fired() event'ine bildirilir.


Timer.nc arabirimi, bize yalnızca command olarak tanımlanmış bileşenler değil, ayrıca, kullanıcılar tarafından kullanılıp, kontrol edilebilen "event"lar sunduğu için, Timer.nc için için çift yönlü interface diyebiliriz. Hatırlarsanız, StdControl.nc arabirimi (interface) yalnızca command'lar içeriyordu. Bir interface uygulamasındaki (implementation) "Event" dediğimiz olayı, callback yapan (geri dönüş değeri olan) bir fonksiyon gibi düşünebilirsiniz. Bir modülde "uses" içerisinde, kullanılacak olan "interface" tanımlanır demiştik. Kullanılacak olan interface'e ait event() modül içinde belirtmelidir.

Bakınız :

BlinkM.nc Implementation Kısmı
implementation {

  command result_t StdControl.init() {
    call Leds.init();
    return SUCCESS;
  }

  command result_t StdControl.start() {
    return call Timer.start(TIMER_REPEAT, 1000) ;
  }

  command result_t StdControl.stop() {
    return call Timer.stop();
  }

  event result_t Timer.fired()
  {
    call Leds.redToggle();
    return SUCCESS;
  }
}


Gördüğünüz gibi BlinkM modülü StdControl interface'ine ait olan,  StdControl.init(), StdControl.start(), and StdControl.stop() komutlarını implement etmiş. Timer.fired() dediğimiz event, implement edilmiş. Çünkü event kullanacağımı "module" içerisindeki süslü parantezler içerisinde böyle bir event kullanacağımızı belirtmiştik. O yüzden bu 'event'i kullanmamız gerekiyor.

init() komutu StdControll adlı interface'ten implement edilmiştir. StdControll.init() komutu içerisinde call Leds.init() yaparak, Leds'in alt bileşenleri de çağrılarak başlatılmış (initialize) oldular.

StdControl.start() komutunun içerisinde her 1000 milisaniyede bir defa süresi dolan bir Timer tanımlanmış. Burada birinci parametre TIMER_REPEATER olduğu için, işlem 1000 milisaniyede bir defa tekrar edecektir.

Son olarak ise, Timer.fired() olayı (event) tetiklendiğinde, Leds.redToggle() işlemi ile LED renginin kırmızıya dönmesini sağlamış oluruz.

TinyOS ile ilgili tüm dökümanlara, "doc" klasöründen veya http://tinyos.stanford.edu/tinyos-wiki adresinden ulaşabilirsiniz.

Bu yazının orjinaline şu linkten ulaşabilirsiniz : http://www.cse.iitd.ernet.in/~pulkit/embedded2/docs/lesson1.html

Yazının çevirisi 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.)
Yazının devamını oku
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.)
Yazının devamını oku
TOSSIM, TinyOS kurulumu ile beraber gelen bir ağ simülatörüdür. Bu simülatör ile kablosuz ağ aygıtlarınız olmadan, size simülasyon imkanı tanıyor.

İnternet ortamında bu konuyu araştırırsanız eğer karşınıza gerçek cihaz üzerinde yapılan denemeler ve örnekler çıkacaktır. Bu yazıda Telosb cihazına sahip olmadan, TOSSIM ile Telosb simülasyonunu nasıl yapacağınız göstereceğim.

Bu yazıyı okuyorsanız eğer bilgisayarınıza TinyOS kurmuşsunuzdur diye varsayıyorum.

Bakınız :  Ubuntu 14.04 ve Ubuntu 16.04 İçin TinyOS Kurulumu

TinyOS klasörü içerisinde yer alan "apps" klasöründeki hazır örneklerden biri olan Blink uygulamasını kullanarak TelosB simülasyonunu çalıştıracağız. Öncesinde, MSP430 mikrodenetleyicisini (microcontroller) bilgisayarınıza indirmeniz gerekmektedir.

MSP430 mikrodenetleyicisi, TelosB cihazlar için kullanılan bir mikrodenetleyicidir. MSP430 mikrodenetleyicisi 16 bitlik düşük güç tüketen mikrodenetleyicilerdir.


MSP430 mikrodenetleyicisinin zip halini indirdikten sonra, indirdiğiniz dosyayı bilgisayarınızdaki uygun bir yere koyup, zipten çıkarın. Ben Ubuntu kullandığım için, "opt" klasörü içerisinde "MSPSim" adında bir klasör oluşturdum ve zip dosyasının içindeki tüm dosya ve klasörleri bu opt klasörünüm içinde oluşturduğum "MSPSim" klasörüne attım. Eğer işletim sistemi olarak Ubuntu kullanıyorsanız siz de benim gibi yapın. Çünkü yazının ilerleyen kısımlarında bu belirttiğim dosya yolunu kullanacağız.

Bundan sonraki aşamaları adım adım anlatacağım.

1. Oluşturduğumuz MSPSim klasörüne sağ tıklayıp "Uçbirimde Aç" yapın.





2. Açılacak olan terminal penceresine "make" yazın. Terminalde şu şekilde işlemler gerçekleşecektir:


3. İşlemler bittikten sonra bu seferde terminale "make jar" yazın.



Bu işlemden sonra "MSPSim" klasörü içerisinde "mspsim.jar" adında, jar uzantılı, bir java arşivi dosyası oluşacaktır.

4. TinyOS içerisinde, apps klasörü içinde yer alan "Blink" klasörüne girin. Oradan build klasörünün içine girin daha sonrasında da "telosb" klasörüne sağ tıklayarak "Uçbirimde Aç" yapın. Açılacak olan uç birimde şu komutu yazın :
cp main.exe main.elf
Bu işlemden sonra main.elf uzantılı bir dosya elde etmiş olacağız. Çünkü kurmuş olduğumuz "MSPSim", "exe" uzantılı dosyaları çalıştıramaz, "elf" uzantılı dosyaları çalıştırabilir.

Bu aşamayı da geçtikten sonra açık olan tüm terminalleri kapatın. TinyOS'ta, "apps" klasörü içinde yer alan "Blink" klasörüne sağ tıklayarak "Uçbirimde Aç" yapın. Sonrasında da şu komutu çalıştırın :
java -jar /opt/MSPSim/mspsim.jar build/telosb/main.elf

Bu komutu çalıştırdıktan sonra şöyle bir çıktı elde etmiş olmanız gerekiyor :



Benim anlatacaklarım bu kadar. Umarım faydalı olur. Böylece elinizde TelosB cihazı olmadan TOSSIM'de TelosB simülasyonunun nasıl yapıldığı öğrenmiş oldunuz. Yazının tüm hakları blogkafem.net'e aittir. Lütfen emeğe saygı gösterelim ve kaynak göstermeden başka yerlerde yayınlamayalım. Konuyla ilgili belirtmek istediklerinizi aşağıdaki yorum formu üzerinden bana iletebilirsiniz. Hepinize kolay gelsin, iyi çalışmalar.
Yazının devamını oku
Önceki yazılarda TinyOS kurulumundan, test aşamasına ve hatta karşılaşan hataların çözümlerine bir çok konuda yazı yazdım.

Bakınız : TinyOS Kurulumu ve Hata Çözümleri

Şimdi ise sıra, Ubuntu'da TinyOS için Eclipse kurulumuna geldi. Eclipse kurulumunu başarıyla gerçekleştirdikten sonrasında ise Yet2 eklentilerinin Eclipse'e nasıl entegre edeceğimizi göstereceğim.

1. Aşağıdaki kodları sırasıyla terminal ekranında çalıştırarak Eclipse kurulumunu yapalım.

sudo apt-get update
sudo apt-get install eclipse eclipse-cdt eclipse-gef

2. TinyOS için gerekli olan Eclipse sürümünü başarıyla kurduktan sonra Eclipse programını açın. En üstteki menüden şu adımları uygulayın.

Help -> Install Software

Bakınız :




3. Karşınıza gelecek olan pencereden "Add..." yazılı butona tıkladıktan sonra, karşınıza alttaki gibi küçük bir ekran açılacaktır.



Bu ekranda yer alanları aşağıdaki gibi doldurun;
Name : Yeti2 Update Site
Path    : http://tos-ide.ethz.ch/update/site.xml

Daha sonra"OK" butonuna tıklayın. Paketlerin yüklendiğini göreceksiniz.

Bakınız :



"Select All" yaparak yüklenen tüm bu paketleri seçin ve "Next" butonuna tıklayın. Sonraki adımda da yine tüm paketler seçili ise bu sefer "Finish" butonuna basarak kurulumu tamamlamak üzere Eclipse'in bu paketleri kendine entegre etmesini bekleyiniz.

Bakınız;



Ben paketleri daha önceden kurduğum için ekran görüntüsündeki "Finish" butonu bende pasif ama sizde aktif olarak gözükecektir. 

Kurulumlar bittikten sonra menüden "Window -> Preferences" kısmına tıklayınız. Sol menüye "TinyOS"un gelmiş olduğunu görürseniz eğer, Eclipse ile TinyOS konfigürasyonu başarılı bir şekilde gerçekleşmiş demektir.

Bakınız :



Solda ve en alt kısımda yer alan TinyOS menüsüne tıkladıktan sonra, "opening problems  tinyos.perspective eclipse" sorunu ile karşılaşırsanız eğer, bilgisayarınıza en son java sürümünü kurarak bu sorunu çözebilirsiniz.
Yazının devamını oku

İ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