Gömülü Sistem Rehberi -4- Mikrodenetleyiciler ile Gömülü Sistemlere Başlamak

Gömülü sistem rehberi adını koyduğumuz yazı dizisinin bu yazısında mikrodenetleyiciler ile gömülü sistemlere başlamayı ve bu aşamada karşılaşacağınız önemli noktaları sizlere açıklayacağız. Daha önceki yazımızda mikrodenetleyiciler ile gömülü sistemlere giriş yapmayı tavsiye etsek de ülkemizde kavramlar yerine tam oturmadığı için bu gömülü sistemlere giriş eğitimi “PIC Programlama” gibi adlarla adlandırılmaktadır. Üstleik eğitimler öyle kötü olmaktadır ki bir firmanın, bir mikrodenetleyici ailesine ait sadece bir mikrodenetleyici programlamak öğretilmekte, ne mikrodenetleyicinin mimarisi ne de geliştiricilik öğretilmektedir. Ülkemizde yıllardır PIC 16F84 anlatılmakta ve sadece bunu programlama doğrultusunda bir eğitim verilmektedir. Gömülü sistemler şu veya bu mikrodenetleyiciyi programlamaktan ibaret görülmemelidir. Gömülü sistemleri bundan ibaret görenler de geliştirici vizyonuna sahip olamamış demektir.

Mikrodenetleyiciler ile gömülü sistemlere giriş yapmak istiyorsanız karşınıza onlarca firma ve yüzlerce mikrodenetleyici ailesi çıkmaktadır. Önce hangisini seçeceğiniz büyük oranla size bağlı olmaktadır. Mikrodenetleyiciler 8 ve 32-bit olarak iki ana kategoriye ayrılsa da bunların arasında pek yaygın olmayan fakat kendine ait bir kulvarı olan 16-bit mikrodenetleyiciler de bulunmaktadır. Üstelik 32-bit mikrodenetleyiciler de tek çeşit değildir. Genel olarak ARM çekirdekli olsa da MIPS çekirdekli PIC32ler ve adını pek duymadığımız farklı çekirdeklere ve mimarilere sahip mikrodenetleyiciler bulunmaktadır. Üstelik ARM çekirdekli mikrodenetleyicileri üreten her firma kendine özgü mikrodenetleyici tasarlamaktadır ve bu mikrodenetleyicileri programlayabilmek için de temel bilgide olmasa da çevre birimlerinde ve mikrodenetleyici mimarisinde ayrı ayrı bilgilere ihtiyacımız olmaktadır. O yüzden “ARM Programlama” tabiri yerine ARM çekirdekli üretilen bir mikrodenetleyicilerden birini örneğin,”STM32 Programlama” tabirini kullanmamız daha doğru olacaktır. Görüldüğü üzere 32-bit kendi içinde mimarilere ayrılmakta ve bu mimariler de markalara ayrılmaktadır. Gömülü sistemlere giriş yapmak için tek bir modelle başlayacak olsanız da öncelikle 32-bit mi 8-bit mi, hangi mimari ve hangi marka sorularına cevap bulmanız gereklidir. Sonrasında ise başlamak istediğiniz modeli kararlaştırmanız lazımdır.

Önceki yazıda doğrudan 32-bit mikrodenetleyicilere başlayacak kişilerin daha önceden belirttiğimiz gereksinimleri ileri derece karşılaması gerektiğini söylemiştik. Pek çok kişi için doğrudan 32-bit mikrodenetleyiciler ile başlamak hüsranla sonuçlanır. Fakat herkes için doğrudan 32-bit ile başlamayın da diyemeyiz. Eğer bu alanda kendinize gerçekten güveniyorsanız 32-bit ile başlayabilirsiniz. 32-bit mikrodenetleyiciler ile gömülü sistemlere başlamak isteyenler için başta saydığımız gereksinimler içindeki birkaç özel noktayı belirtelim. Bu aynı zamanda 8-bit üzerinde çalışıp 32-bite geçmek isteyenler için de bir rehber olacaktır.

Datasheet Okuma ve Anlama, Eğer 32-bit mikrodenetleyicileri programlayacaksanız amatörler için yazılmış eğitim makalelerinden, örnek kodlardan, kütüphanelerden ve eğitim kitaplarından çoğunlukla mahrum olacağınızı biliniz. Örneğin PIC veya AVR hakkında onlarca kitap, video ve eğitim makaleleri yer alırken STM32 bunlardan daha popüler olmasına karşın hakkında bu kadar eğitim meteryali yer almamaktadır. STM32 programlayacak geliştiriciler datasheet, referans kılavuzu ve uygulama notlarını okuyup anlayacak derecede İngilizce’ye sahip olmalıdır. PIC için CCS C, Mikro C gibi hazır kütüphaneleri bulunduran derleyiciler, eğitim meteryalleri ve yardımcı kaynaklar datasheet okumadan uzun bir süre program yazabilmenizde size yardımcı olacaktır. Aynı durum Arduino için de geçerlidir.

İleri Seviye C bilgisi, 8-bit PIC veya AVR mikrodenetleyicileri programlarken bu kadar ileri seviye bir programlama bilgisine ihtiyacınız olmasa da STM32 gibi 32-bit mikrodenetleyicilerin hazır kütüphanelerini (HAL) kullanabilmek için bile ileri seviye bir C programlama bilgisine ihtiyaç vardır. Aynı zamanda kütüphane referansını okurken tanımları, yapıları ve fonksiyon prototiplerini okumakla anlamanız gerekecektir. Her fonksiyon için veya konu için örnek kod veya eğitim içeriği bulmanız beklenemez. Datasheetinin de referans kılavuzunun da 1000 sayfadan fazla olduğunu söyleyelim.

Mikrodenetleyici Mimarisi ve Dijital Elektronik, 8-bit mikrodenetleyiciler üzerinde çalışırken temel seviyede bir dijital elektronikle ilerleyebilir ve çalıştıkça bu elektronik bilginizin üzerine katabilirsiniz. Üstelik bir süre sonra Assembly ile mikrodenetleyicinin mimarisini de öğrenme şansınız vardır. 32-bit mikrodenetleyicilerde ise pek çok kavram bir araya getirilmiştir ve bunlar hakkında bilgi edindiğiniz varsayılarak ilerlenir. Yani 32-bit mikrodenetleyicilerin temeli olmayana toleransı yoktur. Örneğin datasheette “DMA, CRC, open-drain, event, vector” gibi terimleri anlayabilmek için önceden temel bilgi edinmeniz şarttır.

İleri Seviye Yazılım Bilgisi, 32-bitte yazılan yazılımlar 8-bitteki gibi basit olmamaktadır. Örneğin RTOS veya başka bir Middleware kullanmak istediğinizde bunun yazılımını çözebilmeniz gereklidir. Üstelik kullandığınız donanım birimleri de ileri seviye yazılım bilgisi ve programcılık yeteneği ile ilişkilidir. Birimler karmaşık olunca bunları kullanabilmek için de karmaşık programlar yazmak gerekecektir.

8-bit üzerinde çalışmayıp bütün bu temeli oturtmadan doğrudan 32-bit mikrodenetleyicilere geçtiğimizde kafanız çok fazla karışacaktır. Bazı eğitim veren mühendisler 8-bit mikrodenetleyicilere zaman kaybı dese de biz 8-bit mikrodenetleyiciler üzerinde çalıştığımızda ADC, USART, SPI, Kesme, Zamanlayıcı, EEPROM, PWM gibi pek çok konuyu öğrenmiş oluyoruz ve bu bilgilerle 32-bit mikrodenetleyicilere geçtiğimizde onlarda daha karmaşık olan bu ortak birimleri basit seviyede de olsa ilk bakışta kullanabilir hale geliyoruz. Zamanımızı tamamını anlamaya değil yeni özellikleri ve yeni birimleri anlamaya ayırıyoruz. Önceki öğrendiğimiz konuları 32-bit mikrodenetleyici üzerinde öğrenmek de belki 2-3 kat daha fazla zamanımızı alacak ve hatta belki de bazıları öğreneceği varsa da hiç öğrenemeyecek. Bu durumda 8-bit mikrodenetleyicileri öğrenmeye nasıl zaman kaybı diyebiliriz? 8-bit mikrodenetleyicilerin bütün dünyadaki üniversiteler tarafından eğitimde kullanılması ve bunların üzerinde durulmasının bir sebebi vardır.

Bu noktaya geldiysek yeni başlayan birinin 32-bit mikrodenetleyicilerle başlamasının riskli bir yol olduğunu ve sağlam bir temel oluşturarak temkinli bir şekilde ilerlenmesi gerektiğini anlamış olmalısınız. O halde çoğunluğun seçeceği mikrodenetleyiciler 8-bit mikrodenetleyici olmalıdır. 8-bit mikrodenetleyici üreten firmalara baktığımızda pek çok firmayı görmekteyiz. Sadece PIC veya AVR değil STM8, Renesas, 8051 tabanlı vb. mikrodenetleyici aileleri mevcuttur. Bizim yeni başlayan olarak ve üretimde değil eğitimde kullanılmak üzere hangi mikrodenetleyiciyi seçeceğimizin kriterleri bir geliştiricinin seçeceği mikrodenetleyici kriterlerinden farklı olacaktır. Eğitimde kullanılmak için uygun mikrodenetleyici seçerken şu kriterleri göz önünde bulundururuz.

C derleyicisinin ve geliştirme stüdyosunun olması, Bazı mikrodenetleyiciler için sadece Assembly derleyicisini bulunabilir. Yakın bir zamana kadar aslında firmaların alışkanlıkları bu yöndeydi. Hatta PIC mikrodenetleyiciler için bile resmi C derleyicisi yoktu. Artık bu konuda ilerlediğimizi düşünürsek günümüzde resmi C derleyicisi ve ücretsiz geliştirme stüdyosu olmayan bir markaya pek iyi gözle bakmayız. Eğitimde kullanılacak bir derleyicinin açık kaynak olması büyük bir artıdır. Geliştirme stüdyosunun olması en azından konsol komutlarıyla derleme yapmamamız da önemlidir. Bu yönüyle Atmel Studio oldukça hoşumuza gitmekte.

Fiyatı ucuz, geliştirme ve deneme kartlarının yaygın olması,  Önemli noktalardan biri de bu mikrodenetleyiciyi kolaylıkla temin edebilmemizdir. Bir öğrencinin bütçesini sarsmayacak şekilde günümüz teknolojisine göre makul fiyatlarda olmalıdır. Geliştirme kartları büyük firmaların geliştiricilerine yönelik yüzlerce dolar fiyatta değil öğrenci harçlığı ile alınabilecek fiyatlarda olmalıdır. Bu yönüyle Arduino (AVR) ve STM32 geliştirme kartları ön plana çıkmaktadır. Çok ucuz fiyata Arduino ve modüllerini alıp eğitim uygulamalarını yapabiliriz. Arduino’yu burada “Mikrodenetleyici Geliştirme Kartı” olarak kullandığımızı unutmayalım. Bir geliştirme platformu olarak Arduino Core (API) farklı bir boyuttur.

Hakkında yeterli kaynak bulunması, Mikrodenetleyici eğitiminde öğrenciler oturup datasheet okuyarak iş başlamamalıdır elbette. Datasheet geliştiricinin okuyacağı bir doküman olup başlangıç seviyesinde datasheeti anlama yolunda ikincil kaynaklara ihtiyaç vardır. Bu kaynakların başlıcası kitaplardır. Kitaplar datasheetin ucuz bir çevirisi değil tecrübe, eğitimcilik, anlatım ve uygulamaların bir araya geldiği bir eğitim kitabı olmalıdır. O yüzden piyasadaki datasheetin “kırpılmış” halinden ibaret olan ve yazara ait cümleleri bile göremediğimiz kitaplara itibar edilmemelidir. Kitap konusunda PIC mikrodenetleyicilerin önde olduğunu görüyoruz fakat benim “C ile AVR Programlama” kitabım ve İngilizce kitapları hesaba katarsak AVR’nin bu konuda eksik olduğunu iddia etmemiz güç olmaktadır. STM32 içinse ingilizce eğitim kitaplarını bile pek görememekteyiz. ARM mimarisini genel olarak ele alan akademik kitaplar olsa da onlar başlangıç için uygun değildir. Kaynakların bir diğeri de forum ve bloglarda yer alan makaleler ve uygulamalardır. Kütüphane ve örnek kodları da unutmamak gereklidir. PIC ve AVR mikrodenetleyicilerin iki konuda da oldukça zengin olduğunu söylemek mümkün. Ama gidip Renesas ya da STM8 mikrodenetleyiciler hakkında aynısını bulmak mümkün değildir. O yüzden yeni başlayacak birinin zorluk çekmemesi açısından PIC veya AVR mikrodenetleyiciler ile başlamasını tavsiye ederiz. Kendine güvenen varsa başka mikrodenetleyicileri de tercih edebilir.

Bu yazıda mikrodenetleyiciler arasında ayrımı yaptık ve seçilmesi gereken mikrodenetleyicilerin kriterlerinden bahsettik. Bir sonraki yazıda ise bir mikrodenetleyiciyi öğrenme sürecini sizlere açıklayacağım ve bu konuda nasıl ilerlemeniz gerektiğinden bahsedeceğim.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

UYARI!!

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.