YAZARLIK BAŞVURUSUBize Katılmak istermisiniz?

Mbed CLI Kullanımı ve ARM Programlama

 

 

Merhaba arkadaşlar,

Bu konuda STM32 serisi kartlara yönelik uygulamalara değineceğiz. Arduino dışındaki konular çok fazla okunmuyor olsa da Arduino üzerinde çok büyük bir Tükçe kaynak yığını oluştuğu görüşündeyim. Bu yüzden elimden geldiğince farklı kartlar ile yazılar paylaşmaya çalışıyorum. Ancak Arduino dışındaki kartlar ile uygulama geliştirmek Arduino kadar kolay olmadığından yazı biraz daha fazla uğraştırıyor. Şimdi gelelim yazımıza.

ARM tabanlı STM32 serisinden kartlar Mbed kütüphaneleri yardımı ile kolayca programlanabilirler. Nasıl mı?

Bilindiği üzere ARM tabanlı kartları doğrudan KEIL yada IAR idesi kullanarak HAL kütüphaneleri yardımı ile programlamak uğraştırıcı ve vakit alan işlemler. Ancak ARM firmasının geliştirdiği Mbed kütüphanesi yardımı ile STM32 kartların çok büyük bir kısmını sanki Arduino programlarmış gibi rahatça programlamak mümkün. Bu kartların hangileri olduğuna buradan bakabilirsiniz.

ARM ile Mbed’ i web üzerinden kendi compiler’ yardımı ile de kullanabilirsiniz. Compiler bağlantısına buradan ulaşabilirsiniz. (Üye olunması kütüphanelere erişim için veya ide kullanımı için zorunludur.) Ancak Web üzerinden compiler kişinin isteklerini her zaman karşılamayabilir. Bu durumlarda kodu kendi bilgisayarınıza export edip bir çok ide ile yada direk gcc ve g++ kullanarak derleyebilirsiniz. Mbed’ in herhangi bir offical ide’ si bulunmaması bana göre tek eksi yanı. Ancak Keil kullanmaya alışmış birisi bu zorluğa çok fazla takılmıyor. Eğer Linux tabanlı bir işletim sistemi kullanıyorsanız özelleşmiş bir ARM ide’ si zaten bulunmamakta.

Peki ya Mbed-Cli ne işe yarar. Daha önce de belirttiğimiz gibi Mbed’ in bir offical ide’ si bulunmamakta. Ancak mbed-cli komut sistemi aracı yardımı ile komut sistemi üzerinden mbed’ e bağlanarak kütüphane indirebilir, proje derleyebilir ve ide’ ler için programı export edebilirsiniz. Özellikle linux kullanıcıları için en kolay yöntemdir.

Şimdi gelelim proje oluşturmaya. Öncelikle mbed-cli nasıl kurulur onlara bir bakalım. Mbed-cli kurulumu için bilgisayarınızda şunlar olamsı gereklidir:

  • Python 2(Python 3 henüz geliştirme aşamasında)
  • Git
  • Python-pip (Linux kullanıcılarında python-dev paketi ile birlikte yüklenir. Windows kullanıcılarında default olarak yüklerler) 
  • Tortoise-Hg (Windows kullanıcıları)
  • GCC_ARM(tavsiye ederim) yada ARM Kütüphaneleri

Bu araçları yükledikten sonra özellikle windows kullanıcıları sistemde PATH’ a bu araçların yollarını girmelidir. Aksi taktirde komut satırından çalıştırma yapamazlar.

Üstte araçları yüklediyseniz yada zaten sizde varsa şimdi yükleme adımlarına geçebiliriz. Aşağıdaki komut yardımı ile mbed-cli’ yi pip aracına yüklüyoruz. Linux kullanıcıları komutu başına sudo ekleyerek çalıştırmalıdır. Unutmayınız aşağıdaki adımlar komut satırı üzerinden yapılacaktır. 

Eğer bu adımda sorun yaşarsanız github üzerinden indirerek de kurulumu gerçekleştirebilirsiniz. 

Dosyayı indirdiğiniz yerde mbed-cli klasörüne giriş yapın ve aşağıdaki komutu çalıştırın.

Şimdi proje alanımızı bilgisayarımızda oluşturalım. Projeyi var olan bir link üzerinden kendi bilgisayarıma import edeceğiz. Daha önceden git kullanmış olanlar için alışmak uzun sürmeyecektir. 

Github üzerinden link çekebileceğiniz gibi direk Mbed’ den de çekebilirsiniz. Üstteki adımı yapanlar bu adımı atlayabilirler.

Çekmeye çalıştığım link yanlışmıdır diye bir korkuya kapılmayın yanlış ise mbed-cli zaten hata verecektir. Sıra geldi derleme işlemlerine. İmport işlemini yaptıktan sonra bulunduğunuz dizinde indirdiğiniz dosya isminde bir klasör oluşacaktır.  Klasöre girdikten sonra derleyici ayarını yapalım.

Bu ayar global bir ayardır. Yani bir kere yapmak yeterlidir. Daha sonra GCC_ARM ı istediğiniz zaman kullanabilirsiniz.

Derleyiciyi ayarladıktan sonra sıra geldi kartı bilgisayara bağlayıp tespit etmeye. Aşağıdaki komut yardımı ile bilgisayara bağlı olan ARM cihazları ve desteklediği derleyicileri görebilirsiniz.

detect

Benim kullanacağım cihaz NUCLEO_F401RE ve derleyicim GCC_ARM olacak. Bu seçimi aşağıdaki komutlar yardımı ile yapacağız. Not: Supported Toolchain sizde farklı çıkmış olabilir. Bu rakam sisteminizde desteklenen derleyici sayısını göstermektedir. Bende 3 tane olduğundan 3 olarak çıktı.

Seçme işlemlerini yaptık sıra geldi derleme işlemine. Derleme işlemini de aşağıdaki komut yardımı ile yapabilirsiniz.

Derleme işleminde sorun yaşıyorsanız ya GCC_ARM düzgün yüklenmemiştir yada GCC_ARM içerisindeki bin dosyası sistem PATH’ a eklenmemiş demektir. Şimdi derlediğimiz kodu karta yükleyelim. Bunun için proje klasörünüz içerisinde aşağıdaki yolu izlemelisiniz.

-> BUILD -> NUCLEO_F401RE -> GCC_ARM

Bu konumda eğer derleme işlemi başarı ile tamamlandı ise mbed-os-example-blinky.bin dosyası bulunuyor olmalıdır. Bu dosyayı kartın üzerine sürükleyip bırakmalısınız. Böylece ilk yazılımımızı da yüklemiş olduk.

upload

Peki biz projeyi oluşturduk ancak mbed üzerindeki bir kütüphane kullanmaya ihtiyaç duyduk. Bunu da aşağıdaki komut yardımı ile mbed-cli üzerinden indirebilirsiniz. Örneğin eklemek istediğimiz kütüphane servo kütüphanesi olsun. Bu aşamada özellikle windows kullanıcıları hata alabilirler. “hg” bulunamadı şeklinde hata alıyorsanız Tortoise-Hg düzgün olarak yüklenmemiş yada sistem PATH’ a eklenmemiş demektir.

Peki ya mbed dışındaki bir kütüphaneyi mbed-cli ile yükleme ihtiyacı duyarsak ne yapmalıyız. Bu noktada mbed-cli doğrudan kullanımı malesef yoktur. Kütüphanenin cpp ve header dosyalarını bir klasör içerisine koyup varsa .lib uzantılı dosyayı proje konumuna koyarak derleme yapabilirsiniz. Tabi bu yöntem kütüphanin c++ olması durumunda işe yarayacaktır. C olması durumunda ek ayarlar gerekebilir. O zaman oluşturduğumuz projeyi bir ide için export edip ide üzerinden eklemenizi tavsiye ederim. Şimdi mbed destekli bir ide için export işlemi nasıl gerçekleştirilire bakalım bakalım. Aşağıdaki komut yardımı ile hangi kart hangi ide desteği bulunmaktadır görebilirsiniz.

support

Liste biraz kaymış olarak çıkıyor ancak keil yada iar gibi ide’ lerin çoğunda kartların desteği bulunduğu için benim kartım desteklermi şeklinde bir şüpheye düşmeyin. Ancak diğer ide’ ler için bi kontrol etmeniz iyi olur. “+” olanlar destekler “-” olanlar ise desteklemez anlamına gelmektedir.

Keil Uvision5 ve IAR için export komutları yukarıdaki gibidir. Bu komutlaradn herhangi birini yazdığınız zaman proje dosyasının içersinde ide ile başlatılabilecek dosyalar oluşturulacaktır.

Komut sistemi kullanımına alışkın olanlar için kullanımı zaten basittir. Kullanmamış olanlar için de güzel başlangıç olacaktır diye umut ediyorum .. :)

 


 

Peki ya hiç komut sistemi ile uğraşmak istemezsek? Onun da yöntemi mevcut. Başta bahsettiğimiz mbed kendi online compiler’ ini kullanabiliriz. Ancak sonradan ek yapmak ikinci yöntem ile biraz daha zordur. 

Mbed sitesine üye olup giriş yaptıktan sonra kart seçim sayfasına gidelim. Buradan kullanacağınız ARM kartı bulup üzerine tıklayın. Ben örnek olarak bende ekli olmayan herhangi bir kartı seçtim. Siz elinizdekini seçmelisiniz. Açılan sayfada “Add to your mbed Compiler” seçeneğine tıklamalısınız. Böylece kart mbed derleyicinize eklenmiş olacaktır.

board

Daha sonra mbed compiler sitesine giriş yapalım. Burada sol üstte “New” butonuna basarak ilk programımızı oluşturalım. Açılan sayfada Template kutucuğuna tıklayarak program şablonu oluşturabilirsiniz. Burada bir çok örnek sizinde gördüğünüz üzere mevcuttur. Biz örnek olarak “Blinky LED test for the ST Nucleo boards” yazan şablonu seçelim. 

Not: Arka planda gözükenler benim önceden oluşturduğum projelerdir. Siz ilk kez giriş yapıyorsanız boş olacaktır.

new

Projemizi oluşturduk. Soldaki workspace ekranında proje ismini görünüyor olmalı. Buradan “main.cpp” yi seçerek kodlamaya başlayabilirsiniz. Görüldüğü üzere kodlar son derece basit ve anlaşılırdır. Kart üzerindeki dahili Led zaten “LED” olarak tanımlı ve onu çıkış olarak ayarlayıp 0.2 sb yanık 1 sn sönük olarak bir yazılım main dosyası içerisinde görülmektedir.

Yine sol üstte import seçeneğine tıklayarak yeni projeler veya kütüphaneler import edip kullanabilirsiniz(Üstteki resim) Kütüphane eklemek ismini Search kısmının yanında kutucuğa yazıp Search butonuna basmayı unutmayınız. Yada workspace üzerinden projeye sağ tıklayarak projeyi yerel bir ide için (Keil, IAR vs..) export edebilirsiniz(Alttaki Resim). Bir çok ide desteği bulunmakta ve yenileri her geçen gün eklenmektedir. Bu yöntem her ihtiyacın başta belli olduğu durumlarda ilkine göre daha basit gelebilir ancak sonradan ekleme yapmak özellikle offline ide kullananlar için zor olacaktır.

import

Mbed daha gelişmekte olan bir platform bu yüzden yaşadığınız her sorunun çözümünü rahatlıkla bulamayabilirsiniz. Ancak ARM kullanımını çok kolaylaştırdığı için bence önü açık ve üzerine düşülmesi gereken bir platformdur. En yakın zamanda özellikle ESP8266 ile örnekler yazmaya çalışacağım. 

İyi çalışmalar dilerim..

Add a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir