Gömülü C – 1 : Gömülü Programlama Yol Haritası

YOL HARİTASI

Düşündüm yazının başlığını, daha güzel ifade edemedim. Bu yazıda, bu yazı dizisine ilişkin hayallerimi, yol haritasını anlatacağım ve umuyorum ki hepsi adım adım gerçekleşecek. Kararlılıkla, sabırla gerçekleşecek. Ve diliyorum ki  hayatımıza bir katkı sağlanabilecek. Eğer bu yol haritasını sonuna kadar okuduysanız, ama heyecanlanmadıysanız lütfen yazı dizisine devam etmeyin.

Önceki yazılarda gömülü sistemler için gerekli donanım altyapısını tahsis etmeye katkı sağlamaya çalışmıştım. Nihayetinde heyecanla beklediğim an geldi çattı 🙂 Yazı dizisinin bu bölümünde her yerde bulunabilecek bilgilere referans vererek, her yerde bulanamayacak bilgileri paylaşmaya çalışacağım. Paylaşırken de öyle sıkıcı şekilde değil de, sohbet muhabbet tadında paylaşmaya çalışacağım. Neyse şimdi laga-lugayı kısa kesip konuya gireyim 🙂

Malumunuz gömülü sistemler kısıtlı kaynaklı sistemler. Gel gelelim bu ifade artık, her durumda doğru bir ifade sayılmaz. Hakikaten bir çok görev için son derece “kısıtlı kaynaklı” olarak değerlendirilebilecek sistemlerin yanında bayağı bayağı “bol kaynaklı” gömülü sistemler de mevcut. Bir “gömülü webserver” yapmak için Microchip firmasının PIC16F84A mikrokontolörü çok kısıtlı kaynaklı kalabilir, öte yandan bu iş ARM Cortex A15 barındıran, doğru tasarlanmış bir gömülü sistem için genelde çocuk oyuncağının bir kaç mertebe altında bir iştir. Sözün özü, kısıtlı kaynak, spesifik bir görev için söz konusudur. Ancak yine de, rekabette var olabilmek için genelde bir işi olabilecek en ucuz ve en kaliteli şekilde yapmak, amaçtır. Bu da kaynakların kısıtlı kalmasına neden olur.

Kaynaklar kısıtlı olduğu gibi, zaman da çoğunlukla kısıtlıdır. Bu sebeple yazılan kodların son derece optimize, kolay anlaşılabilir, tekrar kullanılabilir, yani aslında “kaliteli” olması gerekmektedir. Efendim yazılım neye göre kaliteli olacak? Meselenin aslı ortaya kondu mu, cevap bulmak kolay olur demişler(N.E.). Cevap basit, “yazılım tasarımı kalitesi standartlarına” göre kaliteli olacak. Yani isim verecek olursak ISO/IEC-14598, ISO/IEC 250×0 standart serisine göre. Evet, sizi duyar gibiyim ve ben de aynı fikirdeyim ama var işte yazılım kalitesinin de standardı 🙂

Efendim neymiş bu standartlar? Standartlar mı yönetecek bizi? Hayır efendim, standartlar yönetmeyecek, standartlar tanımları yapacak, ortak dili belirleyecek sonra biz o ortak dilden konuşacağız ve yazılımlarımızın kalitesini ölçülebilir hale getireceğiz. İyi tamam, ama gömülü sistemler ne alaka? Gömülü sistemler, belki de kaliteli tasarıma en çok ihtiyaç duyulan yazılım tasarım ortamıdır. Zaten zaman kısıtlı, kaynaklar kısıtlı, işin içinde donanım olduğundan değişkenlerin sayısı çok fazla, ürün sürekli güncelleniyor gibi bir ton sebep, rekabette öne geçmek için tasarımın kaliteli olmasını zorunlu kılıyor. İyi de madem standard var, ben ne konuşuyorum? Dedim ya standardlar sadece ortak dili anlatıyor ve bazı ölçüm yöntemlerini belirliyor. İyi olana gitmek bize kalıyor. Dil ortak ama ne konuşacağımızı yine biz belirliyoruz.

Bu yazı dizisinde C dili, C++ dili anlatılmayacak. Deitel&Deitel’in kitabı o işi çok çok iyi yapıyor. Ancak bu yazı dizisinde onun yerine, sanatsal seviyede programlama pratikleri, gömülü sistemlere özel tasarım kalıpları, modelleme yöntemleri ve iyi programlama pratikleri anlatılacak. Bunların bir kısmının, benim bildiğim bir kaç düzine önemli kitaplarda dahi yer almadığını belirtmek isterim. Uzmanlar için bile faydalı olabilecek bir iki numaram olduğunu düşünüyorum 🙂 Peki nasıl olacak? Her şeyden önce sabırla, sebatla, ilim irfan aşkıyla, azimle olacak. Her zaman yaptığımız gibi, bitirememek üzere başladığımız 1632. iş olmayacak bu. Önce eğer C bilmiyorsanız, bir kaynaktan C öğreneceksiniz. Önerdiğim kaynak Deitel&Deitel’in kitabı. Ardından bu yazı dizisini okuduğunuzda hakikaten keyif alacaksınız. Gerçi bir dili bilmek iddiası fazla özgüvenlice bir iddia bence, her zaman birbirimizden öğrenecek şeylerimiz var o ayrı mevzu ama C dilini zaten biliyorsanız doğrudan yazılara devam edebilirsiniz. Böylelikle gömülü sistemler için çok net, taş gibi bir yazılım alt yapısı edinmiş olacaksınız. Zaten varsa da onu cilalamış olacaksınız. Yazıda C ile birlikte C++ konseptlerine de değineceğim.

Sonra ne olacak? Yazı dizisi nasıl devam edecek? Donanım bilgisi oluştu, yazılım bilgisi kültürü oluştu, sırada ne olacak. Sırada artık ellerin kirlenmesi var. Microchip firmasının 8 bitlik PIC mikrodenetleyicilerini programlama’yı ince detaylarla anlatacağım. Bu sayede küçük bir sistemde çalışmanın faydalarını,  temelleri ve detayları tertemiz görmeyi öğreneceğiz. Aynı zamanda basit sürücüler yazacağız, sensörleri ve komponentleri tanıyacağız. Ardından Atmel firmasının Atmega serisi ile analoji kuracağım, onu her şeyiyle kullanmayı da anlatacağım. Burada araya Arduino’nun iç yapısını, anlatılmayanlarını sıkıştıracağım, malum çoğunun içinde Atmega var. Sonra 16 bitlik bir mikrodenetleyici serisine geçeceğiz. Aynı zamanda bu ultra-low power bir seri olacak; Texas Instruments MSP430 serisi. Buradan hem 16-bit’lik bir mikrodenetleyici nasıl kullanılır, farkı nedir, low-power sistem tasarlamanın püf noktaları nedir onları da anlatacağım. Sonra geleceğiz ARM Cortex M3-M4 serisi işlemci barındıran 32-bit’lik mikrodenetleyicilere. Burada da STM32 ve LPC17 serisinden örnekler vereceğim. Hemen hemen aynı şeyler, ama aynılıkları farklılıkları bilmek bence önemli bir bilgi seti olacak. Aynı zamanda DMA gibi, EMC gibi yepyeni modülleri tanıyacağız. Bu sayede mikrokontolörlerin tüm çevresellerine hükümdar olacağız. TFT ekran, thermal printer, manyetik kart okuyucu, rf modem gibi cihazlar ile çalışacağız, sensörler kullanacağız. Seviye atlamış olacağız. Burada RTOS kullanmanın inceliklerine de değineceğim. Çok çok önemli bir bilgi seti RTOS. Ya sonra? Bitmedi mi bu mikrokontrolörler filan? Hayır efendim bitmedi. Çok çekirdekli sistemler nasıl programlanır onu anlatacağım. 64-bit’lik platformlara değineceğim. Malum son IPhone’larda 64 bitlik işlemciler var, neticede o da gömülü sistem. Ya sonra? Sonra 32-bit’e döneceğiz ama mikrobilgisayar seviyesindeki çekirdekleri inceleyeceğiz. Burada gömülü linux ile platform bazında kapanışı yapacağım. Kafama eserse VxWorks de yazabilirim ama elzem değil. En sonunda açık kaynaklı yazılımlarla çalışma, açık kaynak lisans tiplerine değineceğiz.

Burada yazı dizisi sonlanacak sanıyorsanız yanılırsınız. Neticesinde sadece gömülü sistem temeli tahsis edilmiş olacak. Ama öyle bir temel ki, üstüne artık ne kurarsan kur. Sonra her telden çalacağız, başına gömülü etiketi koyacağız. Ne demek istiyorum? Gömülü görüntü işleme yapacağız. Gömülü kontrol sistemi tasarlayacağız. Gömülü haberleşme tekniklerini ağlatacağız, havadan karadan giden gelen veriye hükmedeceğiz. Gömülü sistemlerde pastanın üstüne çilekler koyacağız, kriptopgrafi yapacağız. Sonra FPGA konuşuruz. Sonra PSOC konuşuruz. Ve daha nicesi 🙂

Bu yol uzun olacak, zaman alacak, fedakarlık isteyecek ama yol bu olacak. Her türlü öneriye açık olduğumu da belirtmek isterim. Ülkemizin, teknoloji üretiminde ileriye gitmesine, yani sizlere, hayatımıza bir nebze katkıda bulunabilirsem ne mutlu bana.

Şimdi devam.

Önceki Sayfa   Sonraki Sayfa

 

Leave a Reply