HAYIR, ELEKTRONİKÇİLERİN DE İŞİ 🙂
Birkaç ay önceki “programlama sadece bilgisayarcıların işi mi?” adlı yazımda programcılığın elektronik mühendisliği alanındaki önemini tartışmıştım. Şimdi de aynı konuda yazmaya devam edeceğim.
Programlama elektronikçilerin de işidir diyoruz. Ancak bilgisayarcıların programlaması ile elektronikçilerin programlaması aynı mıdır? Önce buradan başlayalım. Bu konudaki kafa karışıklıklarımıza ilk örneği üniversitelerimizdeki “mikroişlemciler” dersinden verebiliriz. Bu ders aynı isimle birçok elektronik ve bilgisayar mühendisliği bölümlerinde okutulmaktadır. İki bölümün ortak dersi gibi görünmesine rağmen ayrım yapılması gereken noktalar var.
Çoğu zaman bilgisayar bölümündeki öğrencilere 8051 gibi “mikrodenetleyicilerin programlanması gösterilirken,elektronik bölümündeki öğrencilere 8088,80286 vs.. gibi Intel’in x86 tabanlı mikroişlemcilerinin öğretildiği görülebilmektedir.Bu “mikroişlemci ve mikrodenetleyici “ arasındaki farkın tam olarak anlaşılamamış olmasından kaynaklanmaktadır.
Mikroişlemciler başlangıçta büyük çaptaki hesaplamaların hızlıca yapılabilmesi için üretilmişlerdi. Daha sonra geliştikçe ve PC denilen kişisel bilgisayarlar ortaya çıktıkça, hesaplama dışında teknik tasarımlardan, eğlenceye birçok alanda kullanılmaya başlandılar. Böylelikle de mikroişlemciler elektronik alanından koparak bilgisayar mühendisliği adı altında ayrı bir dalın konusu içine girdiler.
Yarıiletken teknolojisindeki gelişmeler birim hacme sığdırılabilen transistör sayısında müthiş artışlara yol açtı. Böylelikle çok daha büyük performansa sahip mikroişlemciler üretildi.
Elektronik dünyası da kendi içinden çıkan bu teknolojiden faydalanmasını bildi. Daha önceki tasarım yöntemleriyle oluşturulan “sabit” fonksiyonlu devrelerin yerini, programlanarak değişik fonksiyonlar gerçekleştirebilen “mikrodenetleyiciler “ aldı. Mikrodenetleyici tabanlı sistemler bugün “gömülü sistemler “ adı altında ayrı bir mühendislik dalı da olmuştur. Bunu başka bir yazının konusu olmak üzere burada bırakıyorum.
Mikrodenetleyiciler bugün çok yüksek hızlara ve birçok değişik fonksiyona sahiptirler. Söylenenlere göre bugün ortalama bir aile otomobilinde 20’den fazla mikrodenetleyici bulunmaktadır. Evimizde kullandığımız birçok cihazda da bu minik bilgisayarlar görev yapmaktadır.
Bugün mikrodenetleyiciler elektroniğin içine bu kadar girmişken, programlama bilgisinin elektronikçiler açısından da ne kadar önemli olduğu açıktır. Burada kastedilen programlama mikrodenetleyici programlamasıdır. Peki, mikroişlemciler nasıl programlanmaktadır?
“Ben acayip assembly bilirim!”
MİKRODENETLEYİCİLERİN PROGRAMLANMASI:
“Ben acaip assembly bilirim” diyen birini gördüğünüzde ona ,”hadi be sende “ diyebilirsiniz..Evrensel bir assembly dili olmadığı gibi assembly bilmek diye bir şey de yoktur.Ancak şöyle cümleler anlamlı olabilir:”x86 assembly bilirim,8051 assembly’si biliyorum,PIC assembly öğrenmek istiyorum”
Assembly dili bir mikroişlemcinin anadilidir diyebiliriz. Assembly komutlarının her biri işlemci için bir anda gerçekleştirebileceği bir işlemi belirtir. Bilgisayar yazılımcılığı açısından bakarsak assembly dillerinin kullanımı çok kısıtlı kalmıştır. Artan karmaşıklığın altından bu şekilde kalkılması da imkansız zaten. Yazılımlar yüksek seviyeli dillerle yazılmaktadır.
Elektronik alanında assembly hala önemini korumaktadır. Çünkü bu alanda performans önemli bir kriterdir. Örneğin en çok kullanılan 8 bitlik mikrodenetleyicilerde assembly’nin sağladığı performans göz ardı edilemez kuşkusuz. Ancak günümüzde oldukça gelişen derleyiciler sayesinde C gibi orta seviyeli dillerde de yüksek performans alınmaktadır. Zaten yapılan araştırmalar dünyada bu alanda en çok kullanılan dilin C olduğunu göstermektedir. C kullananların büyük bölümü aynı zaman da assembly de kullanmaktadır.
PROGRAMLAMANIN ab C’Si
C programlama dillerinden belki de en ünlüsüdür.70’li yıllarda Brian W. Kernighan
Dennis M. Ritchie tarafından geliştirilmiştir. İlerleyen yıllarda C dilinin popüleritesi oldukça arttı. Dilin standartlaştırılması için 1983 yılında ANSI (Amerikan Ulusal Standartlar Enstitüsü ) tarafından bir komite oluşturuldu. Komite çalışmasını 1989 yılında tamamladı ve bugün geniş kabul gören ANSI C ortaya çıktı.ANSI C ile anlatılmak isteneden ANSI komitesinin 1989 yılında kabul ettiği standart C’dir.Bir kere ANSI C öğrenildiğinde bu dille uyumlu bütün derleyicilerin kullanımı kolaylaşmaktadır. ANSI C için en temel kaynaklardan biri dilin yaratıcıları Brian W. Kernighan ve Dennis M. Ritchie tarafından yazılan ANSI C kitabıdır.Bunun dışında C dilini anlatan birçok kitap bulunmaktadır.
Yapılan araştırmala gösteriyor ki mikrodenetleyi tabanlı tasarımlarda büyük oranda C dili kullanılmaktadır* C dilini kullananların büyük çoğunluğu da kullandıkları mikrodenetleyicinin assembly dilini bilmekte ve kullanmaktadırlar.
Buradan mikrodenetleyici tabanlı tasarımda yol almak için bir yol haritası çizecek olursak:
– Kullandığımız mikrodenetleyiciyi iyi tanımalıyız.Mümkünse az da olsa assembly ile programlama yapmalıyız
– ANSI C ‘yi öğrenmeliyiz.ANSI C öğrenirken ilk başta PC programlama yaparak aşinalık kazanabiliriz.
– Mikrodenetleyici ile ufak projeler yaparak deneyim kazanmalıyız.
İnternetteki bazı arkadaşların “C öğrenmek için kursa gitmeli miyim, bana faydası olur mu?” türünden sorular sorduklarını görmekteyim. Tabiki herkesin kendine has bir öğrenme stili vardır. Ancak şunu belirtmek gerekir ki bu tür kurslarda PC tabanlı programlama anlatılmaktadır. Dolayısıyla mikrodenetleyici programlama ile ilgili kavramlara yer verilmemektedir. Ancak ANSI C dilini öğrenmek için bu tür kurslardan faydalanılabilir. Gerisi de sizin kişisel çabalarınıza bağlı.
Umarım bu yazı bir ölçüde de olsa sizlere faydalı olur. Başka bir yazıda görüşmek üzere…
*C dilinin kullanımına dair örnek bir araştırma:
http://www.ertl.jp/ITRON/survey99/graph-e/lang1.gif
– C programlama dili ile ilgili wikipedia sayfası:
http://tr.wikipedia.org/wiki/C_programlama_dili