Gömülü Sistemlere Başlangıç
Amacınız her ne olursa olsun, gömülü sistem programlamaya bir yerden başlamak istiyorsanız ve bu başlangıç noktasını tam olarak kestiremiyorsanız doğru yerdesiniz. Hobi amaçlı veya geleceğe yönelik kariyer amaçlı gömülü sistem programlama, bu amaçlardan en yaygın olan iki tanesidir. Dolayısıyla en başta kendinize bu soruyu sormanız gerekiyor: “Neden bu işe girişmek istiyorum?”. Bu soruyu sorduktan sonra zihninizin daha berraklaşacağına eminim.
Hobi elektroniği tüm dünyada giderek yaygınlaşmaktadır. Gelişen teknoloji ve yarı-iletken üretim maliyetlerinin düşmesi de bu sürece olumlu bir şekilde katkı sağlamıştır. Eğer ki siz de bu noktadaysanız, “keyfi olarak elektronikle ilgileniyorum” veya “ilk-orta-lise öğretim öğrencisiyim, bu alana şöyle bir bakmak istiyorum” diyorsanız ilk tavsiyeler sizin için…
Henüz daha işin bu boyutunda olan insanları derin teknik konularla sıkmanın anlamsız olduğunu düşünüyorum. Dolayısı ile birçok angarya işlerin sizin için kolaylaştırıldığı “Arduino” platformunu tavsiye ediyorum. Arduino platformunu burada sizin için uzun uzun izah etmeyeceğim, haddinden fazla bilgiyi internet ortamında bulabilirsiniz. Bu platformla, cihazlarınızı internete bağlayabilir, önceki tasarladığınız hobi devrelerinizin kontrollerini otomatik hale getirebilir, robotlar tasarlayabilir, sensor verileri okuyabilir ve hayalinizin izin verdiği birçok başlangıç-orta düzeyindeki projenizi gerçekleştirebilirsiniz. Arduino platformunun birçok hazır kütüphanesi ve örnek uygulamaları ile hedeflerinize kısa sürede ulaşabilirsiniz. Artık bu noktada olduğunuzdan eminseniz, vakit kaybetmeden hemen bir kitap ve geliştirme kiti alıp işe koyulmanızı tavsiye ediyorum.
Fakat ikinci gruba dahilseniz, tavsiyelerim biraz daha geniş çaplı olacaktır. Bu gruptaki arkadaşlar muhtemelen elektronik, kontrol veya haberleşme gibi alanlarda yüksek okul yahut mühendislik eğitimi alan kişilerdir. Bu grup da yine iki gruptur. Birincisi, kolay bir noktadan başlamak isteyen arkadaşlardır. Bu arkadaşlara biraz önce verdiğim tavsiyelerin aynılarını veriyorum, kısa zamanda bir Arduino kitabı ve geliştirme kiti alıp başlayabilirler. Ek olarak dürüst olmam gerekirse, hayatını bu işten kazanmak isteyen arkadaşlara bu metodu tavsiye etmiyorum, öğrenirken kaçtığınız her kolay noktanın ileride size kayıp olarak dönmesi muhtemeldir… Arduino platformu, birçok temel konuları sizin için halletmiş ve sizi birçok donanım katmanından soyutlamış vaziyettedir. Bu durum ise bu meslek alanında ilerlemek isteyen arkadaşların, en başta öğrenmesi gerektiği en temel konuları bence sebepsiz bir şekilde ileri bir tarihe atmaktadır. Arduino ile bitirme projesini tamamlamış bir arkadaşım, “osilatör ne ki?” gibi basit bir soru sormuştu… Bu konuda “biraz” tecrübe kazandıkça bu sorunun ne kadar vahim olduğunu anlayacağınıza eminim… Yine de Arduino ile başlamak istiyorum diyorsanız, o süreci geçtikten sonra devam eden tavsiyelere kulak verebilirsiniz.
Şimdi gelelim, ikinci grubun ikinci grubuna, yani “bu işi ciddi bir şekilde öğrenmek ve hayatımı bu işten kazanmak istiyorum” diyen arkadaşlara verilecek tavsiyelere… Ek olarak şunu da not düşmekten kendimi alamıyorum, çalışmayı bırakın eğer bu konuları tartışmak bile size sıkıcı geliyorsa, bu alanda çalışmak için kendinizin gerçekten uygun olup olmadığını tekrardan kontrol etmenizi tavsiye ediyorum. Bir meslek dışarıdan güzel görünebilir. Fakat gerçekten bu işi sevip sevmediğinizi ve yapmak isteyip istemediğinizi sorgulayın. Eğer bu alana girerseniz sizi temin ederim ileride o kadar boğucu işlerle uğraşacaksınız ki… İşte bu boğucu dediğim işler sizi heyecanlandırıyorsa; saatlerinizi, günlerinizi, belki aylarınızı harcadığınız sistem çalıştığında, içinizde bir mutluluk belirecekse ve ondan sonra rahat bir şekilde uyuyabilecekseniz… İşte, bu iş için biçilmiş bir kaftansınız! Gelelim bu heyecanlı arkadaşlar için “evrenselleşmiş” bazı tavsiyelere….
Gömülü sistem programlamaya başlamak sizler için “programlamaya başlamak” kadar sancılı bir süreç olabilir. İstekli olmak yetmez, başlayacak doğru noktayı bulmak bile sizi çok yorabilir. Yılmadan sabredin, bu işin üstatlarının takip ettiği yolları takip edin ve bu işte ileri giden insanlara saygı duyun, söylediklerine kulak verin. Hele ki bu alanda çalışan birisi ile gerçek hayatta karşılaşırsanız, sohbet etmeye çalışın ve sizin için neyin gerekli olduğunu bu sayede anlamaya çalışın. İş ilanlarından, ulusal veya uluslararası ortamlarda sizden beklenenleri çıkarım yapın. Elinize tornavida, havya veya yonga almadan önce yapacağınız işler ve benimseyeceğiniz prensipler bunlar olsun. Sabırla ve istikrarla öğrenmeye devam edin. X üniversitesinde mikrodenetleyiciler dersi veren bir profesörün, “bir ledi yakmak için bir haftamı harcamıştım” dediğini hatırlatmak isterim. (Tabi gözünüz korkmasın o kadar da değil, onun zamanında bu işler yeni başladığı için birçok sebepten dolayı biraz sıkıntılı bir süreç olmuş)
Standartlara daima yakın olun. Bu işte kullanabileceğiniz bir metot size hoş gelebilir, fakat ilk önce bu metodun evrensel olarak ne kadar kabul edildiğini sorgulayın. Örneğin, Java dili ile mikrodenetleyici programlama örneklerini görebilirsiniz. Bir web sitesini C++ dili ile kodladığınızda web işi ile uğraşanların size, “bu adam aklını kaçırmış” demesi çok normaldir. O zaman siz de aklınızı kaçırmayın ve standartları takip edin, iş hayatında bu standartlardan sorumlu olacağınıza yemin edebilirim. Peki nedir bu standartlar:
- C programlama dilinin başlangıç için en azından temel konularını öğrenin. Mühendislik öğrencisiyseniz, okullarda öğrendiğiniz C dili size başlangıç için fazlasıyla yeterli gelecektir. Kod yazma ve algoritma geliştirme kabiliyetlerinizi ilerletmeye bakın. C dilini kullanarak, şu anda yaygın olarak dağıtımda bulunan hemen her gömülü sistem platformuna kod yazabilirsiniz. C dili gömülü sistemlerin standardıdır. TIOBE indeksine göre de 2017 Eylül ayı için dünyada en yaygın olarak kullanılan ikinci programlama dilidir. Sadece başlangıç değil, ileri seviye gömülü sistem uygulamalarında da yoğun bir şekilde C kullanılmaktadır.
- Temel elektronik bilginizi gözden geçirin. Bu durum sizin gözünüzü korkutmasın. Başlangıç aşamasında jumper kablolar ile kurabileceğiniz basit temel devreler dahi işinizi görür. Bu iş içinde ilerledikçe, zaten elektronik bilginizin de zamanla ilerlediğini göreceksiniz.
- Lehim yapma, baskı devre çıkarma, breadboard üzerinde devre tasarlama, multimetre ile ölçüm yapma gibi temel konuları da aradan çıkarın. İlk başta devrelerinizi breadboard üzerinde tasarlayın. Bunu kesinlikle bir angarya görmeyin ve ilerledikten sonra devrelerinizin artık breadboard üzerine sığmadığını göreceksiniz. İşte bu noktada baskı devreler çizip çıkarmaya çalışın. En başta korkunç derecede iğrenç lehimler yapmanız ve baskı devreleri çıkaramamanız gayet normaldir. Altın kuralımızı bozmayın, öğrenmeyi sürdürerek sabredin, tekrar ve tekrar deneyin!
- En önemli ve belki de insanları birbirine düşüren bir konuya geldik! Bir mikrodenetleyici ve bir toolchain seçin. Toolchain, bir programlar topluluğudur ve mikrodenetleyiciniz için program geliştirmenize imkân verir. Seçtiğiniz mikrodenetleyicinin toolchain desteğini araştırın ve bu toolchain ile ne kadar geniş bir yelpazede geliştirme yapacağınızı keşfedin. Gömülü sistem dünyası mikrodenetleyicilerden ibaret değildir fakat birçok çevre tarafından başlangıç için en uygun nokta olarak görülmüştür. CPU, DSP, FPGA, SoC gibi daha ileri seviye konular ve donanımlar da mevcuttur fakat mikrodenetleyiciler bu işe başlamak için en ideal ortamdır. Benim kişisel tavsiyem başlangıç olarak PIC mikrodenetleyicilerini kullanmanızdır. PIC mikrodenetleyicileri ve üreticisi olan Microchip firmasının sunduğu imkanlarla; IDE ve toolchain tanıma, bir mikrodenetleyicinin çalışması için gereken minimum donanım gereksinimleri, mikrodenetleyicinin çalışma mantığı, mikrodenetleyici çevresel modüllerini programlama, interrupt(kesme) mekanizmaları ve kütüphane oluşturma gibi birçok temel konuları aradan çıkarabilirsiniz. Sonrasında daha ileri ve yüksek seviye platformlara yönelip çok daha ciddi işler yapmanız, sizin için uygun olacaktır. Bir platformu çok iyi öğrenen bir gömülü sistem programcısı, diğer platformu çok kısa süre içerisinde öğrenecektir. Başlangıçta LED yakma, buton okuma, zamanlama gibi temel konuları öğrenin. Daha sonra bir sensor verisi okumaya çalışın, basit bir LCD sürün veya yongaları konuşturun ve bu şekilde sürekli ilerleyin…
- Bu işe yönelip başarısız olan insanları görebilirsiniz. Bu başarısızlığa düşmemenizde etkili olacak en önemli 3 altın kuralı veriyorum:
- Data Sheet’leri okuyun
- Data Sheet’leri iyi okuyun
- Data Sheet’leri çok iyi okuyun
- Her şeyden önce danışacağınız “yegâne” doküman, kullandığınız yonganın datasheet dosyasıdır. Hemen her şeyi birine sormadan veya internete yazmadan önce datasheet dosyasına göz atın ve bunu bir prensip haline getirin.
- Ufak çaplı bile olsa sürekli projeler geliştirin. Sadece okumakla, gömülü sistem mühendisi olunmaz maalesef…
- İnternet ortamında iyi bir şekilde bilgi alışverişi yapın. Arayın ve aramanın gücüne inanın. Bulamadığınızı sormaktan çekinmeyin…
- Son olarak da hiçbir teknoloji firmasının fanatikliğini yapmayın. Projeniz ve çalışmanız neyi gerektiriyorsa, hangi teknoloji ve mimariyi kullanmanız gerekiyorsa onu kullanın ve öğrenin.
Bu yazımda zamanındaki ben gibi arayışta ve henüz yolun başında olan meraklı gömülü sistem/yazılım mühendisi adayı arkadaşlara yol göstermesi niteliğinde bir konuya değinmek istedim. Bilgi kolektif çalışmaların üst üste yığılması sonucu hızlı bir şekilde yayılır ve gelişir. Herkesin her şeyi en baştan öğrenmesini ve araştırmasını zorunlu kılsaydık, bugün insanlık bu kadar ilerleyemezdi. Bu sebepten ötürü, geçmişte 5 birim sürede yanlışlar silsilesi içinde öğrendiğim, kıymetli gördüğüm ve başlangıç noktasında işe yarayacağını düşündüğüm birtakım bilgileri; ilgili insanların 1 birim sürede öğrenip, bir an önce işe başlaması için anlatmaya çalıştım. Umarım güzel bir noktaya değinebilmişimdir ve umarım ilgili arkadaşlara güzel bir fikir verebilmişimdir.
Sevdiğiniz işin peşinden aşkla koşun, sağlıcakla kalın…
Burak Kirazlı
Merhaba burak bey,güç elektroniği alanında teknik servisimiz var,tamire gelen kartlarda cpu(fpga,gpu,mpu) bozulmuş ise,çok kötü çuvallıyoruz,markalar genelde lattice,xilinx,altera..bizim bu ürünleri değiştirip kartı onarabilmemiz için gerekli alt yapı,ekipman ve bilgi ile alakalı yardımıza ihtiyacımız var
Burak bey kolay gelsin. Yazınızı bir solukta okudum.
-Sizden tavsiye alabilir miyim? IoT üzerine çalışmak istiyorum (Ticari olarak). Nereden başlayacağımı kestiremedim. Temel gömülü sistemlerden mi başlamalıyım, yoksa basite kaçıp arduino/esp ile mi başlamalıyım.
(Not: 10 yıllık Elek-Elkt Mühendisiyim) (C++, Pıc Prog., başlangıç seviyede Arduino bilgim var)