Mar 09

C dili ile Gömülü Sistem Programlama Eğitimi Hakkında

Toplamda 4 gün sürecek olan “C Dili ile gömülü sistem programlama” eğitimimiz için kayıtlar başladı. Bu eğitimde C dilinin gömülü yazılım geliştirmede kullanımını, mikrodenetleyici programlamayı, gömülü yazılım geliştirmedeki önemli noktaları göreceğiz. Eğitim uygulamalı olacak. Eğitimde ST firmasının STM32F0 serisinden STM32F070 mikrodenetleyicisi içeren Nucleo kartını kullanacağız. Geliştirme ortamı olarak C dili örnekleri için Microsoft Visual Studio Community Edition (ücretsiz), mikrodenetleyici uygulamaları için de ARM Keil Microvision IDE (STM32F0 serisi için ücretsiz) kullanacağız. Bu eğitimle gömülü sistemler alanında çalışan veya çalışmayı düşünenler için önemli bir ihtiyacı gidereceğimizi düşünüyorum. Eğitime katılacakların temel seviyede elektronik, C veya başka bir programlama dilinde temel bilgilere sahip olmaları ve en az bir mikrodenetleyici ile çalışmış olmaları gerekiyor. Eğitime kayıt olmak için aşağıdaki linklere tıklayabilirsiniz. Eğitim için hem haftasonu grubu hem de hafta içi grubu bulunuyor. Sorularınızı iletişim formundan bana iletebilirsiniz.

 

Eğitim Satın alma linki: http://market.makerhane.com/c-ile-gomulu-sistem-programlama

Eğitim hakkında bilgiler paylaştığım videoyu da izleyebilirsiniz. Youtube kanalıma da abone olmayı unutmayın!

Şub 22

Bu kadar çok şeyi öğrenmeli mi öğrenmemeli mi?

Üniversitedeyken mikrodenetleyici dersinde 8051 tabanlı bir modelin kullanıldığını ve assembly dilinde programlamanın öğretildiğini duyduğumda biraz bozulmuştum. O zaman biraz da öğrenci ukelalığı ile “C dili varken ve PIC’ler çok popülerken neden bunlar öğretiliyor” diye düşünmüştüm. Sonradan aslında doğru yöntemin bu olduğunu anladım. 8051 uzun bir süredir endüstri standardı olarak kabul edilen ve oldukça iyi bir 8 bitlik mimari idi. Ayrıca assembly dili ile bir mikrodenetleyiciyi programlamayı öğrenmek o mimarinin çalışma yapısını iyice anlamakta oldukça faydalıydı. Meslek hayatımda hemen hemen hiç assembly dili kullanmamış olsam da alt seviye bilgilere hakim olmanın faydasını çok gördüm.

Şimdi aradan 10-11 yıl geçti. Son 10 yılda o kadar çok gelişme oldu ki ben bile kendimi yaşlı hissetmeye başladım. Konuşma yaptığım veya eğitim verdiğim yerlerde “bizim zamanımızda” kalıbını sıkça kullanıyorum 🙂

Ben öğrenci iken piyasada Microchip firmasının PIC serisi mikrodenetleyicileri yaygındı. Hakkında en çok kaynak bulunabilen bir aile olduğundan herkes bu mikrodenetleyicilerle çalışmaya başlıyordu. Öyle ki aynen Selpak örneğindeki gibi mikrodenetleyiciler “PIC” ismi ile anılıyordu. Tabi rakibi olan AVR, MSP ve diğer firmaların ürünleri de vardı. Bugün Microchip firması rakibi Atmel firmasını satın almış durumda. Tabi tek değişen bu değil.

Meslek hayatıma başladığımda PIC’leri de kullanmış olsam da daha önce hiç karşılaşmadığım modelleri programlamam gerekti. Ancak temel anlamda mikrodenetleyici progralamaya hakim olunduğunda ve C dili ile programlandığında hangi modelle çalıştığınızın pek önemi kalmıyor. Çalıştığınız platforma hakim olmak, datasheet ve kullanıcı dökümanlarından gerekli bilgileri edinebilmek yeterli oluyor.

Bugün mikrodenetleyici programlamaya başlayan öğrenci arkadaşlar çok büyük ihtimalle “Arduino” ile buna başlıyor. Hatta bazı okullarda mikrodenetleyici derslerinin Arduino üzerinden yapıldığını duyuyorum. Blogumu takip edenler daha önce yazdığım “Mühendislik öğrencileri neden sadece Arduino kullanmamalısınız” yazımı okumuşlardır. Hatta son dönemde Google aramaları ile en çok okunan yazım da bu oldu diyebilirim. Dün PIC ismiyle anılan mikrodenetleyiciler bugün Arduino adıyla anılıyor.

O yazımın ana fikri mühendislik öğrencilerinin ileride yapacaklar işler dolayısıyla işlerin altyapısına iyice hakim olmaları gerektiği ve Arduino’nun sağladığı kolaylığın bir bedeli olduğu idi. Bu bedel de “arkada dönen şeylerden habersiz kalma”, “daha verimsiz çalışan yazılımlar” ve “mikrodenetleyici programlamayı bilmeden hazır kütüphanelerle iş yapma alışkanlığı edindirmesi” idi.

Bu yazıma hem olumlu hem de olumsuz birçok yorum geldi. Bütün yorumlara saygı duyuyorum. Hatta artık kimseye şunu kullanmayın bunu kullanın demenin bile anlamsız olduğunu düşünmeye başladım.

Son dönemlerde gömülü sistem programlama konuları üzerine eğitimler veriyorum. Şimdi de yeni eğitimler için içerikler hazırlamakla meşgulüm. Ancak eğitimleri hazırlarken en çok zorlandığım noktalardan birisi içerikleri belirlemek. Alt seviye konulara ayrıntılı bir şekilde girmeli miyim yoksa “Arduino” stili hazır kütüphaneler üzerinden mi gitmeliyim? Sürücü yazma konusuna yer vermeli miyim yoksa hazır sürücülerin nasıl kullanılacağını mı anlatmalıyım? Tabi ki her eğitimi hedef kitleye göre hazırlıyorum. Ancak artık birçok işte gerçekten her şeyi kendimizin sıfırdan yazması hem verimlilik açısından hem de maliyet açısından anlamsız hale gelmeye başladı. Hatta artık öyle bir duruma gelindi ki ” gömülü yazılım” diye bir ayrıma gitmemiz bile anlamsızlaşıyor. Artık hepimiz genel olarak kendimizi “yazılımcı” olarak görebiliriz. Platformların gelişmesi ve işlemci kapasitelerinin artması gömülü sistemler ile genel amaçlı bilgisayar sistemlerine giderek birbirine yaklaştırıyor. Örneğin artık Python dilinde Rasperry Pi üzerinde I2C kütüphanesi üzerinden bir sensörün değerlerine ulaşmak mümkün.

Bu konuda sizlerin de görüşlerini merak ediyorum. Lütfen yorumlarınızı paylaşın.

Şub 02

Gidenler ve Kalanlar

Şu sıralarda sürekli çevremden bir iki arkadaşın yurt dışına yerleştiği haberini alıyorum. Siz de bilişim / elektronik alanlarında iseniz muhtemelen aynı şeyi farketmişsinizdir. Geçenlerde Hasan Başusta Mümin Sekman’ın kitabından aşağıdaki alıntıyı paylaşmıştı:

Ben de artırıp Murathan Mungan’dan şu dizeleri paylaşmak istiyorum:

“Kimdi giden kimdi kalan
aslında giden değil
kalandır terk eden
giden de bu yüzden gitmiştir zaten”

Murathan Mungan

Bu gidişlerin sonu nereye çıkar dersiniz?

Ara 22

Android Things ve Nesnelerin İnterneti (IOT)

Açıkçası Android geliştiriciler sayfasında (developer.Android.com)  breadboard, PWM ve UART vs. konuların anlatıldığını görmek bana biraz ilginç geldi. Sonunda “donanım” işlerinin ışığı parlamaya başladı diyebiliriz sanırım. Bahsettiğim şey Android’in nesnelerin interneti için olan versiyonu Android Things.

Şu anda Android Developer sitesine girdiğinizde Android, Auto, TV, Wear ve Things kategorilerini görebilirsiniz. Google’ın ( yeni adıyla Alphabet ) Android’i bütün araçların içerisinde sokma vizyonunun son meyvesi de Android Things oldu. Aslında bu yeni bir çalışması değil Google’ın. Google, daha önce Brillo adıyla bir “nesnelerin interneti işletim sistemi” geliştireceğini duyurmuştu. Projeyi daha sonra Android Things olarak isimlendirdiler. Android’in gömülü sistemler ve Nİ cihazlarının içerisinde çalışacak olan Android Things bölümünde şu anda desteklenen platformlar da listelenmiş. Listede NXP pico, Intel Edison, Rasperry Pi 3 kartları bulunuyor. Tabi bu listenin yakın zamanda kalabalıklaşacağını tahmin etmek güç değil. Yazımın girişinde bahsettiğim temel donanım bilgilerine de “Hardware 101” başlığı altında yer verilmiş.
Continue reading