Temel ve Gömülü C Derslerine Giriş

C programlama dili derslerine kış tatilinde başlamayı düşünsem de bu arada dijital elektronik, bilgisayar mimarisi ve STM32 çalışmaları yaptığımız için C programlama derslerimiz gecikti. Bir sebebi bu olsa da asıl sebebi bir programlama dilini anlatabilmek için o dili gerçek anlamıyla anlamak gerektiğidir. O yüzden belki yıllar sonra anlatacak olsam da gelen talep doğrultusunda C ve Gömülü C programlama derslerini biraz aceleye getirmek zorundayım. Çünkü Elektrik-Elektronik ve Bilgisayar mühendislikleri dahil çoğu bölümü okuyan öğrencilerde C programlama dilini anlama ve kullanma sıkıntısı gözlemlemekteyim. Bu yönde bir eğitim verilse de kaynaklar da olsa da ya bu kaynaklar gömülü sistemlerde çalışmak isteyenlere yönelik değil ya da eğitim ezberci olduğundan öğrenci bu dili anlayıp kullanamıyor. İşin ilginç yanı olarak ise bunca yıl bilişim sektörünü takip eden biri olarak şunu gözlemleme şansını buldum. Bizim ülkede ezberci eğitimle Visual Basic, Visual C# gibi hazır kütüphane ve uygulama geliştirme arayüzüne sahip platformlar öğretiliyor ve öğrencinin kullanma şansı oluyor. İş ne zaman kalabalıktan kurtulup C, C++ gibi temel ve sade dillere gelirse o zaman öğrenci bunu öğrenemiyor. Bu aynı kelimelerden cümle kurabilme ya da hazır cümleleri ezberleyip kullanma gibi bir durum ortaya çıkarıyor. Ezbere eğitimle hazır kodları ve kütüphaneleri kullanabilse de kendisi temelden bir şey ortaya koyamıyor. C dili ise günümüzün en temel dili olduğu için ezberlemekten çok anlamayı gerektiriyor. O yüzden bunca zaman en zor kısım olarak C dilini anlatabilmeyi gördüm. Yazdığım Arduino Eğitim Kitabı’nda C programlama ve kütüphane kullanımına dair bilgilere yer versem de daha ileri bir seviye kaynağa işte ilerledikçe ihtiyaç duyuluyor. Bu eksikliği ortadan kaldırma adına C programlama derslerini en kapsamlı şekilde yazmaya gayret edeceğiz.

Ders içeriği sadece gömülü C veya sırf C programlamaya yönelik olmayacak. Bu sefer farklı bir yaklaşım yapıp hem masaüstünde C programlama dilini hem de gömülü C programlamayı beraber anlatacağız. Kısacası bize lazım olan her konuyu anlatma gayretinde olacağız. Sadece gömülü sistemler üzerinde programlama yapmak günümüzde yeterli olmamaktadır. Pek çok elektronik projenin bilgisayar ile iletişime geçmesi gerekli ve bilgisayarda bir arayüz programının ihtiyacı duyulmaktadır. Bu yüzden C programlamayı öğrenmek hem gömülü sistemlerde program yazabilmeyi hem de masaüstü programlarını yazmayı sağlamalıdır. Öğrendiğimiz C dilinden sonra C++ diline geçiş yapabilmemiz gereklidir. Böylelikle Visual C++ gibi yazılım ortamlarında uygulama yazabilmeliyiz. Aynı zamanda C dilini alt seviye kullanabilmeli ve mikrodenetleyici ve mikroişlemciler üzerinde yazmaç tabanlı uygulama yazabilmeliyiz. Bu geniş bir yelpaze olsa da ülkemizde gömülü sistemler sektörü oldukça dar olduğu için çok yönlülüğün fazla olması gereklidir. Donanımcı-Yazılımcı diye bir ayrımdan kurtulup bir projenin her aşamasında söz sahibi olmamız bizim yararımıza olacaktır. Çünkü bazı projeler donanım yönünden iyi olsa da iyi yazılımcı olmadığı için ortaya çıkamayabilir. Bazı projelerin de donanım yönünden eksikliği yazılımı ne kadar iyi olursa olsun telafi edilemez.

Planladığımız ders içeriğini üç ana maddeye ayırmamız mümkündür,

  • Temel C
  • Gömülü C
  • Masaüstü C/C++

Bunlardan Temel C kısmı en kolay kısım olup giriş konularından meydana gelecektir. Pek çok uygulamayı Eclipse üzerinden konsol ekranından gerçekleştireceğiz. Burada konsol ekranında uygulama yapmamız şart gibidir. Çünkü C dilini bilmeyen birine donanımı veya diğer yazılım ortamlarıyla beraber C dilini anlatmak iyice kafa karıştıracaktır. C dilini sadece C dili olarak kullanabildiğimiz konsol ortamları bu konuda kafa karışıklığına sebep olmayacaktır. O yüzden Gömülü C’ye geçmeden önce temel C programlamayı bu şekilde öğrenmek gereklidir. Bu temel C kısmında okuyucuyu gömülü C programlamaya hazırlar nitelikte bilgileri vermekten kaçınmayacağız.

Gömülü C kısmında ise donanım ile beraber dersleri yürüteceğiz. Çünkü donanım bilmeden gömülü sistemler üzerinde de gömülü C üzerinde de çalışmak mümkün değildir. Gömülü C’nin farkı zaten buradadır. O yüzden donanım ile yazılımı beraber götüreceğiz. Yalnız burada dersler AVR Programlamada olduğu gibi donanım ağırlıklı değil yazılım ağırlıklı geçecek. Önceden alışkın olduğumuz AVR ve STM32 üzerinden dersleri anlatmaya devam edeceğiz. Aynı zamanda ileri seviye Arduino konularına da değineceğiz. Örneğin kütüphaneleri inceleyeceğiz, kaynak kodundan örnekler vereceğiz, kütüphane yazacağız.

Masaüstü C/C++ kısmında ise artık C konularını bitirmiş olacağımızdan yavaştan C++ ile karışık C programları yazmaya başlayacağız. Visual C++ başta olmak üzere C ve C++ için masaüstü geliştirme ortamlarına göz atacağız. Klasik kitapların konsol ekranından çıkamaması gibi bir duruma düşmeyeceğiz. Hem teoriyi öğreneceğiz hem pratikte bunu gerçekleştireceğiz. Fakat uygulama yazma noktasında pratik daha ön planda olacak. Bilgisayar programı yazarak mikrodenetleyici kartları ile iletişimde bulunacağız ve arayüz ortamı geliştireceğiz. Bu noktadan sonra tam kapsamlı bir proje geliştirmek için eksiğimiz kalmayacak.

Lojikprob.com’a ilk yazmaya başladığım hakkında yıllardır Türkçe kaynak bulamadığım “AVR Programlama” konusundan itibaren pek çok başarıya imza attık ve artık internet sayfamız gömülü sistemler alanında bir numaralı kaynaklardan biri haline geldi. Bu projeyi tamamlamak amacıyla artık yazdığımıza “boş zaman uğraşı” gözüyle bakmıyor daha ciddiye alarak yazılarımızı yazmaya devam ediyoruz.

 

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...

1 Response

  1. Orhan TOSUN dedi ki:

    Derslerinizi ve yazılarınızı ilgi ile takip ediyorum. Bu güne kadar yayımladığınız yazılardan çok faydalandım. Elektroniğe hobi olarak çok önce başladım uzun bir aradan sonra Arduino ile tanıştım, temele inme ihtiyacı hissedince AVR programlamaya geçtim. Sizin anlatmayı planladığınız konulardan masaüstü arayüz haricinde her konuya az çok girdim ve kullandım. Halen bir çok eksiğim olduğunu biliyorum, bu eksiklerimin bir bölümünü gidermek için sizin yapmayı planladığınız çalışmaları merakla bekliyorum. Yapmış olduğunuz çalışmalar büyük faydalar sağlıyor, emeğiniz için çok teşekkür ederim.

Bir cevap yazın

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