Ağu 30

Endüstri 4.0 Muhabbetleri

Yeni Sakızımız Endüstri 4.0

Endüstri 4.0 konusunu en azından bir kere duymamış olanımız yoktur herhalde. Şu sıralar neredeyse bir “sakız” haline gelen bu konuyla ilgili Twitter’da yukarıdaki görseli paylaşmıştım 🙂

Özetlemek gerekirse sanayi devrimleri şu şekilde sıralanıyor:

  • 1. Sanayi devrimi: Buhar gücünün sanayide kullanılması
  • 2. Sanayi devrimi: Elektrik gücünün sanayide kullanılması
  • 3. Sanayi devrimi: Otomasyon sistemlerinin sanayide kullanılması
  • 4. Sanayi devrimi (Endüstri 4.0): Fiziki ve siber sistemlerin bir araya geldiği ve kararların otonom olarak alındığı yeni bir endüstri

Continue reading

Ağu 21

gomuluyazilim.com açıldı!

Merhaba,
Gömülü Sistemler konusunda hem güncel haberleri hem de faydalı yazıları bulabileceğiniz www.gomuluyazilim.com adlı siteyi açtık. Bundan sonra gömülü yazılım ağırlıklı yazılarımı bu sitede bulabileceksiniz. Eğer gömülü sistemler konusunda siz de yazılarınızla katkıda bulunmak isterseniz bana iletişim sayfasından ulaşabilirsiniz.

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

 

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.