Mikrodenetleyicilerin Geleceği

Artık sadece gömülü sistemler değil elektronik diyince bile aklımıza ilk gelen aygıtlardan biri mikrodenetleyiciler olmakta. Ayrıca mikrodenetleyicileri artık sadece gömülü yazılımcılar değil yazılım ve elektronik alanında çalışan pek çok kişi programlamaktadır. Mikrodenetleyiciler gömülü yazılım ya da gömülü sistemler sınırından çıkıp elektronik ve bilgisayar bilimlerinin uygulama sahalarının neredeyse tamamına girmiştir. Bu durumda da insan ister istemez gelecekte ne olacağını merak etmektedir. Ben de bu makalede bu konu ile ilgili tahmin ve yorumlarımı aktaracağım.

Değişim

Öncelikle donanımın yazılım kadar aniden değişmediğini söylemem gerekir. Her ne kadar donanım noktasında gelişmeler söz konusu olsa da yazılımda olduğu gibi birkaç yılda bir programlama dili, framework veya platform değişimi söz konusu değildir. Örneğin 80'lerin sonundan itibaren PIC ve 8051 mimarisi, 90'lardan itibaren de AVR mimarisi kullanılmaya devam etmektedir. Hatta artık bıkkınlık verecek dereceye gelen bir eski donanım kullanımı da söz konusudur. Bu alanda çalışanların pek çoğunun bileceği üzere PIC’in 16F84 gibi çok eski denetleyicileri bile halen kullanılmaya devam etmektedir. PIC denetleyicilerin eski moıdellerini bir kenara bırakırsak 8-bit PIC’ler her ne kadar mimari bakımından ilkel sayılsa da çevre birimleri bakımından güncel sayılmaktadır. Belki 8-bit PIC’leri kullanmak çok eleştirilecek bir konu olmasa da bazı yerlerde halen eski 8051 denetleyicilerin bile kullanıldığını görebiliriz. Donanım noktasında insanlar eski alışkanlıklarını çok değiştirmek istememekte ve yeni bir donanıma kolayca adapte olamamaktalar. Bu yüzden yazılım alanında olduğu kadar hızlı bir değişimin olacağını söylemek güç olacaktır. Firmalar yeni donanımları piyasaya sürse de geliştiriciler eski alışkanlıklarını hızlı bir şekilde terk etmeyecektir. Bu bir yönden de avantajlı olabilir. Örneğin bundan 15 yıl önce PIC ya da AVR öğrenen birisi o zaman öğrendiği bilgilerle bile iş yapabilir. Yeni çıkan denetleyicileri kullanmak için bilgisinin üzerine biraz ilave yapması gerekecektir. Ama bundan 15 yıl önce Web programcılığı yapan birinin bilgileri bundan yıllar önce çoktan işe yaramaz hale gelmiştir. Değişimin bu kadar hızlı olmaması bilgilerinizin birkaç yıl sonra çöp olmaması anlamına da gelebiliyor.

Başka Donanımların Yerini Alma

Mikrodenetleyiciler birer Turing makinesi olduğu için bilgisayarlar, çip üzeri sistemler ve tek kart bilgisayar gibi bilgisayar sistemleri ile aynı kategoride değerlendirilir. Yani teoride evimizdeki bir bilgisayarın yaptığı bütün işleri tırnak ucu olan kadar bir mikrodenetleyici de yapabilir. Burada mikrodenetleyiciyi kısıtlayan iki faktör işlem gücü ve hafıza miktarıdır. Son zamanlarda mikrodenetleyicilerin işlem gücü hem mimari ve komut kümesi hem de saat frekansı bakımından giderek artmaktadır. Artık FPU(Floating Point Unit) ve DSP(Digital Signal Processing) komutlarını bile ihtiva eden ve toplamda belki 200'e veran komuta sahip mimariler mevcuttur. Ayrıca 400MHz’e varan saat hızı normal kabul edilmekte, program hafızası birkaç megabayta varmakta ve harici hafıza desteği ile hem program hem de veri hafızası bir dönemin bilgisayarlarını bile geçebilmektedir. 90'ların sonunda kişisel bilgisayarların saat hızının 400MHz olduğunu düşünürsek mikrodenetleyicilerin ne kadar güçlendiğini rahatça görebiliriz. Buradan anlayacağımız üzere mikrodenetleyiciler bir dönemin tek kart bilgisayarlarının, x86 tabanlı bilgisayarlarının, PowerPC gibi gelişmiş çip üzeri sistemlerin ve mikroişlemcilerinin yerini çok kolay alabilecektir.

Mikrodenetleyicileri sadece işlem gücü yönüyle değerlendirmek büyük bir hata olacaktır. Pek çok zaman mikrodenetleyiciler gelişmiş çevre birimleri ile öne çıkmaktadır. Bu çevre birimleri sayesinde pek çok donanımı kullanmak yerine tek bir mikrodenetleyiciyi kullanabiliriz. Aynı zamanda bu çevre birimleri işlem gücüne de katkıda bulunmaktadır. Grafik hızlandırıcıları, TFT sürücüleri, DMA denetleyicileri mikrodenetleyicinin işlem yükünü üzerinden alan çevre birimleridir. Üstelik bazı mikrodenetleyici mimarileri amaca yönelik tasarlanmaktadır. Buna Cortex-M55 mimarisini örnek gösterebilirim. Bu mimari yapay zeka ve makine öğrenmesi uygulamaları için özel birimlere sahiptir. ARM Cortex mimarisi bildiğim kadarıyla (M3-M4) işletim sistemi çalıştırmaya da uygun bir şekilde tasarlanmıştır. İşin mimari kısmını bırakıp en basit çevre birimleri olan UART, SPI gibi birimlere baktığımızda bile aynı işi yazılım ile yapmaktansa çevre birimleri ile yapmak çok daha kolay ve hızlı olmaktadır. STM32F3 mikrodenetleyicilerin dahili ADC birimi ile harici bir birimde elde edilemeyecek derecede hızlı analog-sayısal dönüşümler (saniyede 5 milyon) yapılabilmektedir. Bu çevre birimleri uygulamaya yönelik eklenmiş ve doğru kullanılıyor ise kısıtlı işlem gücü ile bile büyük işler başarılmaktadır.

Bundan başka mikrodenetleyicilerin ASIC ve FPGA aygıtlarının yerini de alabileceğini söylemek mümkündür. Günümüzde basit 8-bit mikrodenetleyicilerde bile bir dönemin PAL, GAL aygıtlarına benzer çok basit programlanabilir mantık bloklarının olduğunu görmek mümkündür. Bunlar CPLD ve FPGA yerini alamasa da basit mantık aygıtlarının yerini çoktan almıştır. STM32F3 gibi orta-üst seviye 32-bit denetleyicilerde “peripheral interconnect matrix” adında FPGA yapısına benzer çevre birimlerinin birbirine konfigürasyon ile bağlandığı bir yapı bulunmaktadır. Bunun dışında daha öncesinde FPGA ve mikrodenetleyicilerin tek bir çip içinde olduğu aygıtlar olsa da bunların çok fazla tuttuğunu görmemekteyiz. Genelde FPGA ve mikrodenetleyici iki ayrı çip olarak beraber kullanılmaktadır. Dijital bir aygıt olarak FPGA, CPLD ya da PAL gibi programlanabilir mantık aygıtları boolean ifadelerini yerine getirmektedir. Mikrodenetleyici de bunların yaptığı işi yapabilse de işlem gücü ve kapasite bakımından çok yerde yetersiz kalmaktadır. İşlem gücü artan mikrodenetleyiciler programlanabilir mantığa göre basit seviyede ve nispeten yavaş da olsa programlanabilir mantık aygıtlarının yerini alabilir. Paralel işlemin çok da şart olmadığı, ufak bir gecikmenin sıkıntı çıkarmadığı uygulamalarda belki eski 8-bit yavaş mikrodenetleyiciler kullanılamasa da gelişmiş mikrodenetleyiciler artık kullanılabilir. Fiyat bakımından FPGA gibi programlanabilir mantık aygıtları mikrodenetleyicilerden çok daha pahalıdır. Mikrodenetleyicilerin son dönemde iyice ucuzlamasıyla ASIC yerine de kullanılabileceğini söylemek gerekir.

Düşük Güç Tüketimi ve Azalan Fiyat

Tüketici elektroniğinde genellikle mikrodenetleyicilerden çok sıkça damla entegre olarak gördüğümüz ASIC elemanlar kullanılmaktadır. Bunlar halen de kullanılacak olsa da mikrodenetleyicilerin fiyatının iyice düşmesinden dolayı bir kısmında ASIC yerine kullanılabilir. Üstelik düşük güç tüketimleri sayesinde pek çoğu batarya ile çalışan cihazlarda mikrodenetleyiciler rahatlıkla kullanılabilir. Günümüzde 1,5V ile çalışan mikrodenetleyicileri bile görmekteyiz. Bu sayede herhangi bir güç devresi kullanmadan doğrudan bir kalem pil ile bile mikrodenetleyiciyi çalıştırmamız mümkündür. Gelişmiş mikrodenetleyicilerde gelişmiş uyku modları ve çekirdekten bağımsız çalışabilen çevre birimleri ile güç tasarrufu en yüksek seviyeye çıkarılmaktadır.

Genişleyen Kullanım Alanı

Mikrodenetleyiciler kısıtlı özelliklerinden dolayı bunca zaman kısıtlı bir geliştirici kitlesine ve kullanım alanına sahip oldu. Adından da anlayacağınız üzere elektronik kontrol uygulamalarında, basit işleri yerine getirmekte kullanıldı. Mikrodenetleyici diyince bir motoru sürmek, zamanlama işlemi yapmak, röle açıp kapatmak, ekrana yazı yazdırmak gibi basit kontrol uygulamaları artık akla gelmemeli. Mikrodenetleyiciler daha gelişmiş bilgisayar sistemlerinin yerini aldıkça onların uygulamalarını da üzerlerinde çalıştırabilir hale gelmiştir. İleride de mikrodenetleyicilerin yazılım tarafının ciddi manada gelişeceğini tahmin etmek mümkündür. Bir dönem mikrodenetleyicileri işletim sistemi olmayan aygıtlar olarak anlatırken şu an pek çok 32-bit mikrodenetleyici için işletim sistemleri mevcuttur ve bunların önemi giderek artmaktadır. Her ne kadar görev zamanlayıcısı(task scheduler) ağırlıklı olan RTOS olarak adlandırılan işletim sistemleri ağırlıkta olsa da bunun yanında FAT veya TCP/IP kütüphaneleri gibi middleware yazılımlar da kullanımdadır. Yakın zamanda bu işletim sistemlerinin gelişeceğini ve bilgisayarlarda kullanılacak işletim sistemlerinin yerini alabileceğini söyleyebiliriz.

Hatta kişisel bilgisayarlarda nasıl sistem programcılığı ve uygulama programcılığı olarak iki ayrı dal varsa mikrodenetleyiciler için de alt seviye ve üst seviye programcılık olmak üzere bunun ikiye ayrılacağını söylemek mümkündür. Şimdi Arduino, Mbed OS, MicroPython gibi teknolojilerle bunun ilk adımları atılmaktadır. Arduino kullanan birisi mikrodenetleyiciye program yazarken yazılım çatısının fonksiyonlarını öğrenmesi yeterlidir. Ne datasheet okumaya ne bit manipülasyonuna ne de yazmaçlara erişim ihtiyacı duymaktadır. Bu tarz teknolojiler bu yüksek seviye olma yönleriyle yazılım camiasından pek çok programcı tarafından kullanılmaktadır.

Ben mikrodenetleyicileri bir dönemin bilgisayarlarına benzetmekteyim. Eskiden bilgisayarlarda çok fazla alt seviye ve üst seviye diye bir kavram olmayıp Assembly dili ile program yazılırken sonra C diline geçildi ve daha sonrasında ise C++, Java, Delphi gibi üst seviye dillere geçiş yapıldı. C ve Assembly halen sistem programcılığında kullanılsa da büyük çoğunluğu teşkil eden uygulama programcılığında C dili neredeyse tamamen terk edilmiş gibi görünmektedir. Günümüzde ise 90'ların başından itibaren kişisel bilgisayarlarda olduğu gibi mikrodenetleyicilerde C dili ağırlıklı olarak kullanılmaktadır. Pek çoğumuz mikrodenetleyicilere işletim sistemi, sürücü vs. değil uygulama yazmaya yönelik programcılık yaptığı için ileride daha yüksek seviye dillerin, hiç olmazsa yüksek seviye frameworklerin yoğun olarak kullanılacağını düşünmekteyim.

8-bit, 16-bit ve 32-bit

Mikrodenetleyiciler bit yönleri ile de bir dönemin bilgisayarına benzemektedir. Ama yukarıda söylediğim gibi mikrodenetleyicilerde bu değişiklik çok hızlı yaşanmamaktadır. Bir dönemin bilgisayarları yenisi piyasaya çıktığında çöp olurken onlarca yıllık 8-bit mikrodenetleyiciler bile kullanılmaktadır. Bu mikrodenetleyicilerin geniş uygulama alanlarına sahip olmasından dolayı böyledir. Bir dönemin bilgisayarları uygulama çalıştırmaya yönelik olup bu uygulamalar da işlem gücüyle aşırı derecede kısıtlanmaktaydı. Aynı durumu 8 veya 16-bit denetleyicilerde gelişmiş uygulama çalıştırmak istediğimizde yaşamaktayız. Ama basit kontrol uygulamaları için 8 veya 32-bit denetleyici kullanmanın çok farkı hissedilmemektedir. 32-bit her uygulama için gerekmese de günümüzde 32-bit denetleyiciler fiyatları ve gelişmiş özellikleri bakımından 8-bit denetleyicilerin elinde bir avantaj bırakmamaktadır. Her 32-bit denetleyici için bunu söyleyemesek de mesela STM32F0 ve diğer Cortex-M0 serisine baktığımızda bunu rahatça görebiliriz. Bunları kullanmamanın ardındaki sebep tamamen geçiş zorluğu ve öğrenme maliyeti olmaktadır. Bu geçiş ileride daha da kolaylaştırılırsa 8-bit pazarı oldukça kısıtlı bir kitleye sahip olacaktır.

Eninde sonunda 32-bit denetleyicilerin pazara hakim olacağını tahmin edebiliriz. Günümüzde aynı şekilde bir dönemin bilgisayarlarında olduğu gibi piyasada aşırı derecede mikrodenetleyici bolluğu yaşanmaktadır. Onlarca farklı marka ve mimariyi görmek mümkündür. Bazı markaların bazı markalara karşı hiç avantajı olmasa da her yarı iletken üreticisi neredeyse kendi mikrodenetleyicisini üretmektedir. Bir tarafta yüzlerce MHz hızda Cortex-M7 çekirdekli denetleyiciler varken bir tarafta 1KB hafızaya sahip 8051 tabanlı mikrodenetleyiciler vardır. Bu kadar çok mimarinin ve çeşitin olması gereksizdir ve bir müddet sonra eskiyen teknolojiler piyasadan çekilecektir. Bunu onlarca bilgisayar çeşitinin, işletim sisteminin vs. olduğu 80'li yıllara benzetebiliriz. Şu an bir firmayı sayamasak da ARM mimarisinin tekelleşmeye başladığını söylememiz mümkündür.

Konuyu özetlemek gerekirse ileriki yıllarda mikrodenetleyicilerde yazılım kısmı ağırlık kazanacak, sistem programcılığı ve uygulama programcılığı ayrımı gözle görülür hale gelmeye başlayacak ve kullanım alanları oldukça genişleyecek gibi görünmektedir.

--

--