May 04

ARM Programlama Öğrenmek Zor mu?

 

Tuğla gibi maşallah!

İnternette makaleleri gezinirken şöyle bir yazıya rastladım: (Türkçesi) ARM mimarisinde geliştirme yapmak diğerlerine göre zor mu?* . Ben de sık sık ARM programlama ile ilgili sorular alıyorum. Açıkçası geçmişte 8 bit mikrodenetleyiciler (PIC, AVR vs..) ile çalışmış olanlar veya sıfırdan başlayanlar için ARM mimarisindeki mikrodenetleyicilerle programlama yapmak biraz karışık gelebiliyor. Bunun da çeşitli sebepleri var. Birçok ARM tabanlı mikrodenetleyicinin sadece tek bir kullanım kılavuzu 1000 sayfaları aşabiliyor. Üstelik bu dökümanlar ARM çekirdeği ile ilgili bilgileri içermezken bile. Sadece ARM – Cortex – M3 çekirdeğini anlatan döküman 384 sayfa! Benim de elimde olan Joseph -Yiu’nun yazdığı “Definitive Guide to ARM Cortex – M3 – M4 Processors” kitabı 800 sayfa ve kitapta herhangi bir mikrodenetleyicinin çevrebirimleri anlatılmıyor. Hal böyle olunca ARM tabanlı mikrodenetleyicilere geçenler zorluk yaşayabiliyorlar. Tabi bir de İngilizce problemi varsa zorluk daha da katlanıyor. Dikkat ederseniz yukarıda örneğini verdiğim hiç bir döküman Türkçe değil!

ARM programlamadaki bir diğer zorlukta linkte verdiğim yazıda da anlatıldığı gibi programlama araçlarının çok dağınık olması. ARM programlama için önerilen ve önde gelen geliştirme araçları çoğunlukla ücretli. Ücretsiz olarak Eclipse + GCC derleyicisi + OpenOCD gibi araçlarla çalışmak mümkün olsa da bu araçları çalışır hale getirmek büyük zorluklar içeriyor. Kimi firmalar bu araçları kullanarak ticari ürünler de piyasaya sürebiliyorlar.

Aslında ARM programlama diye özel bir konu yok. Temelde mikrodenetleyici programlama hangi ürünle çalışıyor olursanız olun farketmiyor. Gözlemlediğim kadarıyla mikrodenetleyici programlama (hatta dijital devreler) konusunda temeli olmayanlar bu alanda daha da zorlanıyorlar. Bugün mikroişlemci programlama derslerinin seçmeli olduğu elektronik mühendisliği bölümleri var. Öğrenci arkadaşlar da  biraz zor olduğundan bu dersleri seçmeyebiliyorlar. Açıkçası elektronik alanında çalışmayı düşünen bir mühendislik öğrencisinin mikroişlemci dersi almadan mezun olmasını, araba kullanmayı öğrenmeden ehliyet almaya benzetiyorum. Tabi mikroişlemci derslerinden önce temel elektronik derslerinde de temelin sağlam olması gerekiyor. Elektronik konuları da aynı matematikte olduğu gibi üst üste eklenerek gidiyor. Dolayısıyla alt seviyedeki konulardaki bilgi eksikliği daha üst seviyedeki konuları anlamayı güçleştiriyor.

Gömülü sistemler alanındaki bir diğer olumsuz durum ise içerdiği konular itibariyle ne bilgisayar mühendisliğinin ne de elektronik mühendisliği müfredatlarının bu alanı tam olarak karşılamaması. Önümüzdeki yıllarda “gömülü sistemler mühendisliği” veya farklı adlarda bölümlerin ortaya çıkacağını ve bu bölümlerde yazılım ve elektronik konularının okutulacağını düşünüyorum. Aynen mekatronik mühendisliğinde olduğu gibi…

Kısacası ARM programlamaya gelene kadar temel dijital elektronik, programlama, C dili, az da olsa Assembly dili mikrodenetleyici mimarisi çalışmakta fayda var. Bu bilgilere hakim olunca hangi mimaride çalıştığınızın çok da önemi kalmıyor aslında.

*Bahsettiğim yazı: https://dzone.com/articles/is-developing-for-arm-more-difficult-than-for-othe-1

 

Ş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.

Kas 01

Gömülü Yazılım Eğitimlerine başlıyoruz! İlk eğitim “C Programlamaya giriş”

Merhaba,
Uzun zamandır teknik eğitimler konusunda planlar yapıyordum. Sürekli gelen talep ve önerilere de tam bir karşılık veremiyordum maalesef. Ülkemizde elektronik ve gömülü sistemler alanındaki eğitimler konusunda bir açık sözkonusu. Bu konuda hazırlıklarımızı sürdürüyoruz ve ilk eğitimimize de başlıyoruz. Gömülü sistemler konusundaki en temel konulardan birisi olan C programlama ile ilgili eğitimizi 28 Kasım’da yapacağız.  İleriki dönemde başka eğitimlerimiz de olacak. Ayrıca kurumsal eğitimler de vereceğiz. Firmalarınız ve ar-ge ekipleriniz için eğitim almak için benimle iletişime geçebilirsiniz.

 

 

Kas 10

Atollic Truestudio’nun ücretsiz versiyonunda kod sınırı kaldırıldı

Geçtiğimiz aylarda ST ve ARM firmaları arasındaki anlaşma ile STM32F0 ve STM32L0 serileri için Keil Mikrovision geliştirme ortamı ücretsiz hale getirilmişti. Şimdi de yeni bir haber Atollic firmasından geldi. Atollic firması  ARM – Cortex M tabanlı mikrodenetleyiciler ile yazılım geliştirmede kullanılan Truestudio ürününde yeni bir fiyatlandırma politikasına gittiğini açıkladı. 32 KB kod sınırlaması olan Lite versiyonda bu sınırlama kaldırıldı. Pro versiyon ise ayda 59 dolar gibi bir fiyatla sunuluyor. Web sitesinde bu fiyatın 12 aylık peşin ödemede geçerli olduğu yazıyor.

Geliştirme platformları ARM tabanlı mikrodenetleyicilerle çalışırken karşılaşılan en temel zorluklardan birisi. Böylelikle ücretsiz seçeneklere bir tane daha eklenmiş oldu. Uzun zamandır Trustudio ürününü kullanmadım. Yeni versiyonu deneyip sizlerle izlenimlerimi paylaşmaya devam edeceğim.

Atollic Truestudio’yu aşağıdaki linkten indirebilirsiniz.

http://timor.atollic.com/truestudio/

Eki 17

Gömülü Yazılımlar Türkiye’yi Kurtarır mı?

Bugün bütün dünya büyük bir ekonomik kriz yaşıyor. Daha da kötüsü krizin ne zaman bitebileceğine dair en uzman ekonomistlerin bile pek bir fikri yok gibi görünüyor. Geçmişin dev kuruluşlarının bir bir batışına şahit oluyoruz.

Şimdi krizle gömülü yazılımların ne alakası var diye düşünebilirsiniz. Yazımın başlığından konuyu yine gömülü yazılımlara bağlayacağımı anlamış olmalısınız. Hayalimdeki bir senaryoyu sizinle paylaşmak istiyorum.Gelin biraz hayal kuralım:

Türkiyede seçimle yeni iş başına gelmiş hükümet açıkladığı programda “en önemli hedefimiz Türkiyeyi teknoloji alanında dünyada lider ülkeler arasına sokmak. Ülkemizin önde gelen bilimadamları ve mühendisleriden oluşan teknoloji kurulumuzla birlikte yaptığımız beyin fırtınası toplantıları sonucunda,  gömülü sistemler ve gömülü yazılımlar alanlarının en stratejik alanlardan biri olacağını öngörüyoruz. Dolayısıyla bu alanları kendimize stratejik hedef olarak alıyoruz. Türkiye’nin gömülü sistemler alanında lider ülke olması için gereken herşeyi yapacağız.” demektedir.
Ardından devletin teknoloji alanıyla ilgilenen bütün kurumları bu konuda çalışmalara başlıyor. İlk olarak gömülü sistemler için insan gücü oluşturmak için yapılması gerekenler belirleniyor ve yol haritası ortaya çıkarılıyor. Başlangıç olarak ülkenin 8 noktasında yeni teknoparkların oluşturulması ve gömülü sistemler alanında çalışan firmalara büyük teşvikler getirilmesi kararlaştırılıyor. Ayrıca mevcut üniversitelerde mühendislik fakültelerindeki bilgisayar ve elektronik mühendisliği kontejanları artırılıyor.Gömülü sistemler mühendisliği bölümleri açılıyor.
Televizyon kanallarında üniversiteye hazırlanan gençlerin mühendislik bölümlerini tercih etmelerini sağlamak için tanıtım programları yayınlanmaya başlanıyor. Teknolojinin en hızlı gelişen alanı olan elektronik ve yazılım mühendislikleri tanıtılıyor. Artık hayatın her alanında bulunan elektronik sistemler ve bunların içinde çalışan yazılımların ne kadar hayati rol oynadıklarından bahsediliyor. Bu konuda yetişmiş insan gücüne oldukça fazla ihtiyaç duyulacağından ve bu alanda çalışan insanların parlak bir geleceğe sahip olacağı söyleniliyor.
Savunma Bakanlığı ve ordu da bu konuyla özel olarak ilgileniyor. Çünkü bütün komutanlar ve savunma alanındaki uzmanlar biliyorlar ki kendi silahlarını ve bu silahlar içindeki yazılımları kendisi geliştiremeyen hiçbir ülke tam olarak bağımsız sayılamaz. Dışarıdan aldığımız silahlar, uçaklar vs… barış zamanında tam olarak çalışırken bunların herhangi bir savaş ve çatışma zamanında da aynı şekilde çalışacaklarının garantisi yoktur. Bu nedenle ordu da yürütülen teknolojik seferberliğe tam olarak destek veriyor.
Teknoloji alanında çalışan özel sektör firmaları bir araya geliyorlar ve yaptıkları ortak açıklamayla hükümetin ortaya koyduğu teknoloji hedeflerine ulaşmak için ellerinden geleni yapacaklarını açıklıyorlar. Mühendislik ve ilgili bölümlerde okuyan öğrenciler için bir burs havuzu oluşturulacağını ve bu alanda eğitim görmek isteyen öğrenciler için her türlü kolaylığın sağlananacağını söylüyorlar.
Yapılan tüm bu çalışmalar 4-5 sene içinde meyvesini veriyor ve Türkiye Avrupa’nın en büyük “gömülü sistemler tasarım” merkezi oluyor. Hindistan’ın PC tabanlı yazılımlarda gerçekleştirdiği atılımın benzerini Türkiye’nin yaptığından bahsediliyor. Türk mühendisler yurtdışında da birçok projede büyük başarılara imza atıyorlar. Avrupalı otomotiv üreticileri ardı ardına “geleceğin akıllı otomobillerini üretmek için Türkiye’de tasarım üstleri kurmak zorundayız. Çünkü önümüzdeki yıllarda otomotiv alanında gelişmelerin büyük çoğunluğu gömülü yazılımlar sayesinde olacaktır ve bu yazılımların en iyileri Türkiye’de geliştiriliyor” şeklinde açıklamalarda bulunuyorlar. Yabancı devlet adamları Türkiye’nin bu başarısının altında yatanları öğrenebilmek için  sık sık Türkiye’ye ziyaretlerde bulunuyorlar. ”Türkiye Teknoloji Günleri” adı altındaki teknoloji fuarı her yıl bütün dünyadan yüz binlerce ziyaretçinin akınına uğruyor.”
İçinizden amma da uçtun diyenler olabilir. Şu an için bütün bunlar büyük hayaller olarak görünüyor olsa da gerçekleşmesi imkansız denilemez. Şu kriz günlerinde herkes bir reçete yazarken benim de aklıma bunlar geldi.Evet ben de Türkiye’yi gömülü yazılım kurtaracak diyorum.Benim reçetem de bu…