CLI (Command Line Interface) her ne kadar ilkel bir yöntem olsa da hepimiz terminal ekranını açıp birşeyler yapmaktan nedensiz bir zevk alıyoruz. Bunu neden söylüyorum? Çünkü yazının ilerleyen bölümlerinde terminali kullanacaz. Fakat gözünüz korkmasın çünkü gerçekten basit bir yapısı var, size sorun çıkaracağını sanmıyorum. Fakat hala korkuyorsanız iyi bir haberim var. Yakında bunun için bir IDE yayınlanacak.

mbed OS deyince akla hemen RTOS tarzı birşeyler geliyor. Fakat mbed OS bir RTOS değil. mbed.org sitesinde bulunan tanım tam olarak şöyle;

mbed OS Internet of Things’deki (IoT) ‘things’ için özel olarak tasarlanmış açık kaynak bir gömülü işletim sistemidir. mbed OS ARM Cortex-M tabanlı, birbirine bağlı cihazları geliştirmek için tüm özellikleri içinde barındırır ve akıllı ev, akıllı şehir veya giyilebilir cihaz uygulamaları için mükemmeldir.

Yani mbed OS, mbed uyumlu cihazlar için kolay prototipleme yapabileceğimiz, içinde bir uygulama için en iyi ve en gerekli araçları bulunduran bir yapıdır. Arka planda çalışır ve kısıtlı mikrodenetleyici donanımını en iyi şekilde sizin yerinize optimize eder.

Özellikler

  • Modüler : Tüm donanımlar üzerinde çalışan tüm uygulamalar için ortak bir kod tabanına sahiptir. Ayrıca modüller uygulamanıza ve donanımınıza bağlı olarak şekillenir (scalable).  Modüller ancak uygulamanız onlara ihtiyaç duyduğunda derlenir, aksi halde bellekte gereksiz yer kaplamaz.
  • mbed OS single-threaded ve event-driven’dır, yani mbed OS’u en küçük cihazlarınızda bile kullanabilirsiniz.
  • mbed OS donanımı soyutlar, yani hangi board üzerinde çalışırsanız çalışın yapı ve arayüz aynı görünür. Siz kodunuzu değiştirmeden mbed OS seçtiğiniz donanıma göre donanım katmanını değiştirir. Bu yüzden tek bir uygulama kodu tüm desteklenen platformlar üzerine taşınabilir. Ayrıca mbed OS tüm extension boardları ve çevre birimleri ile sorunsuz bir şekilde çalışabilir.
  • mbed OS güç ve program tasklarını etkili biçimde yönetir, yani en zahmetli uygulamaları bile low-power cihazlarda çalıştırabilir.
  • Yapı, sırasıyla mbed OS uVisior ve mbed TLS kullanarak cihaz ve iletişim güvenliğini yönetir.
  • Birden fazla ağ seçeneğini destekler : BLE (Bluetooth Low Energy), Ethernet, WiFi (yakında), Thread ve 6LoWPAN.
  • mbed OS cihaz yönetim protokolleri ile çalışır – LWM2M ve CoAP – ile çalışır, yani uzaktan büyük ölçekli güncellemeler yapabilirsiniz.

 

mbed OS ayrıca diğer ARM mbed araçları ile beraber çalışabilir, bir test aracı olan Greentea ve mbed Device Server gibi. Bu araçlar hakkında daha fazla bilgi edinmek için mbed.org sitesini ziaret edebilirsiniz.

 

mbed OS’in indirip kurabileceğiniz bir biçimi veya görsel bir arayüzü yoktur. Peki nasıl kullanabiliriz?

mbed OS ve yotta

yotta mbed OS için bir uygulama derleme aracıdır. Yotta olmadan mbed OS uygulamalarımı derleyip çalıştıramayız. Yotta uygulama kodlarımızı mbed OS ve ihtiyacımız olan diğer modüller ile kombine eder. Uygulamamızda nelere ihtiytacımız olduğunu yotta’ya söylemek için, yazdığımız her uygulama için bağımlı olduğumuz modülleri belirten bir liste tanımlarız. Uygulamamızı oluştururken bunu mbed OS’e eklemek için en kolay yol uygulamamızın bağımlılığı olarak bir mbed-drivers komponenti tanımlamaktır, çünkü mbed-drivers’ın kendi bağımlılıkları olarak diğer birçok komponenti vardır, yani yotta neye ihtiyacımız varsa onu oluşturacaktır.

Yani uygalamanızı oluşturmak için şunlara ihtiyacınız var;

  • yotta
  • mbed OS modülleri ve opsiyonel olarak diğer kütüphaneler (yotta bunları sizin için sağlar)
  • Uygulama kodunuz

 

 

 

 

 

 

 

Not : Görselde belirtilen IDE seçeneği henüz yok. Fakat şuradaki forumda IDE’ye destek verebilir veya yorumlarımızı iletebilirsiniz.

İlk Uygulama

İlk uygulamamızı yapmak için öncelikle yotta’yı indirip kurmamız gerekiyor. Bu adresten yotta’yı indirip kurabilirsiniz.

Yottayı kurduktan sonra artık neredeyse herşey hazır demektir. Fakat öncelikle birşeyi belirtmek istiyorum; uygulama boyunca bazı linux komutları kullanacağız, burada onları açıklama gereği duymuyorum. Yani temel terminal komutlarına hakim olmanız gerekiyor. Eğer daha önce terminal ile çalışmadıysanız internette ufak bir arama ile bolca türkçe kaynağa ulaşabilirsiniz.

Yottayı kurduktan sonra çalıştırıyoruz ve karşımza böyle bir terminal ekranı geliyor.

Screen Shot 2015-11-10 at 19.26.01

Adım 1 : Uygulamayı Oluşturmak

  1. blinky adında bir dosya oluşturup içine girelim.
       $ mkdir blinky 
       $ cd blinky
  2. $yotta init komutu ile modülü başlatalım ve detaylarımızı dolduralım. Not : Modül tipinizi executable olarak belirlemeyi unutmayın.
    Screen Shot 2015-11-10 at 19.33.28

Şimdi blinky klasörümüzün içinde birkaç dosya ve klasör oluştuğunu göreceksinizdir.

Screen Shot 2015-11-10 at 19.35.28

  • module.json dosyası projeniz ile iligili tüm ayarlamaları içerir. Örneğin ileride projenizin versiyonunu değiştirmek isterseniz bu dosyayı açıp düzenleyebilirsiniz.
  • /source dosyası tüm kaynak kodlarınızı barındırır.
  • /test dosyası projenizin tüm test dosyalarını tutar.
  • /blinky uygulamanızın başlık dosyasıdır.

Modül tipleri hakkında daha fazla bilgi için burayı ziyaret edebilirsiniz.

Adım 2 : Geliştirme Kitinizi Seçin

yotta farklı kitler için aynı kodu derleyip çalıştırabilir.

Desteklenen tüm kitleri görüntülemek için search komutunu kullanabiliriz;


$ yotta search --limit 1000 target

Screen Shot 2015-11-10 at 19.43.56

Bu örnekteFreescale FRDM-K64F kitini kullanacaz. Bunun için $target frdm-k64f-gcc komutunu terminale girmemiz gerekiyor.

$ yotta target frdm-k64f-gcc

Hedefin başarılı bir şekilde seçildiğini test etmek için $yotta target komutunu kullanabiliriz.

$ yotta target
frdm-k64f-gcc,*missing

Not : Kitlerimiz/yotta_targets altında bulunur. Bu klasör içindeki dosyalara müdehale etmeyin çünkü bu dosyalar sizin bilginiz dışında kontrol edilir.

Adım 3 : Bağımlılıkları Edinme

Şimdi bağımlılıklarımızı indirmemiz gerekiyor. Bu uygulamada bağımlılığınız olarak mbed-drivers’ı kullanacaz.

$yotta install mbed-drivers

Screen Shot 2015-11-10 at 19.58.55

Not : indirip yüklediğimiz modüller /yotta_modules altında bulunur. Bu klasör içindeki dosyalara müdehale etmeyin çünkü bu dosyalar sizin bilginiz dışında kontrol edilir.

Not : İndirme esasında mbed.org üzerinden hesabınıza giriş yapmanızı isteyebilir.

Adım 4 : Kaynak Kodları Oluşturmak

Şimdiye kadar uygulamamızı ve bağımlı olduğumuz modüllerimizi oluşturduk. Şimdi ise modülümüzü daha kullanışlı hale getirmek için kaynak kodlarımıza ihtiyacımız var.

/source klasörü altında app.cpp adında bir dosya oluşturalım ve alttaki kodları içine kopyalayalım.

#include "mbed-drivers/mbed.h"
 
static void blinky(void) {
    static DigitalOut led(LED1);
    led = !led;
    printf("LED = %d \r\n",led.read());
}
 
void app_start(int, char**) {
    minar::Scheduler::postCallback(blinky).period(minar::milliseconds(500));
}

Bu kod parçacığı kit üzerindeki led’in durumunu sürekli değiştirir ve bunu seri port üzerinden bilgisayara yollar.

Not : Seri port baud hızı 9600’dür.

Adım 5 : Uygulamayı Derlemek

Uygulamayı derlemek için;

  1. blinky klasörü içindeyken $yotta build komutunu çalıştırın.
    Screen Shot 2015-11-10 at 20.10.11
  2. yotta derlenen ve oluşturulan .bin dosyasını /build altında tutar.

Adım 6 : Uygulamayı Kite Yüklemek

  1. Kitinizi USB üzerinden bilgisayarınıza bağlayın. Karşınıza çıkarılabilir bir disk sürücüsü gelecektir.
  2. /build/frdm-k64f-gcc/source/blinky.bin adresindeki dosyayı bu depolama birimine kopyalayın
  3. Ardından kitin üzerindeki led’in flash ettiğini görecekseniz ve eğer terminalinizi açıp kite UART üzerinden bağlanırsanız şöyle bir çıktı alacaksınız.
    LED = 1
    LED = 0
    LED = 1
    LED = 0
    ...

    Tebrikler! mbed OS ile ilk uygulamanızı yazdınız.

    Evet bu yazının sonuna geldik. Bir sonraki yazıda yotta ile git servislerine bağlanıp uygulama indirmeyi ve yüklemeyi, yotta ve mbed OS hakkında biraz daha teknik bilgiyi öğreneceğiz.

    Not : Yazıyı hemen yazıp yayınladım. Bu yüzden bazı ufak çeviri hataları olabilir. Bunun için şimdiden özür diliyorum.

    Kaynak; https://docs.mbed.com/docs/getting-started-mbed-os/en/latest/