20
Oct
2020

Kırk Ambar – Giriş

Programlama dili çoğu zaman bir araçtır. Bir programlama dilinin yapısı, sahip olduğu tüm keywordler bu dili kullanan bir sistem geliştirici için olmazsa olmazlarından olsa bile temel yetkinlik konuları kesinlikle bunlar değildir. Algoritmik; analitik düşünebilme yetisi, sistem çözümleyebilme, disiplinli çalışabilme gibi yetiler daha amaçsaldır. Bunu metaforlaştıracak olursak eğer, bir roman yazarının yeni yazacağı roman için amaçsal konu başlıkları; romanın konusu, karakterlerin profilinin çıkarılması, roman bölümlerinin oluşturulması, giriş-gelişme ve sonuç gibi süreçlerin belirlenmesidir. Yazarın kullanacağı daktilo, kağıdın rengi-boyu, kitabın kapağı gibi detaylar önemsiz denemez ancak amaçlar arasında bulunmamaktadır.

Gömülü sistem geliştiricileri genellikle C programlama dilini kullanmaktadır. C programlama dilini kullanırken bu dilin sunduğu tüm imkanlardan çoğu zaman faydalanmadan projeler geliştirilmektedir. Bunun en büyük sebebi az bilinen keyword’leri (C programlama dili deyimleri) ve özellikleri kullanacak kadar özümsemiş olmamaktır.

Bu durum için bir örnek geliştirmeye karar verdim. Kağıdın rengini, daktilonun markasını düşünmeden bir roman yazacağız. Bu örnekte algoritmik düşünme gerektiren bir problemin yanında C üzerinde nesne tabanlı programlamaya girişi ve C programlama dilinin hemen hemen tüm keyword’lerini ve az bilinen çoğu özelliği bulunmaktadır. Birçok özelliği barındırdığı için bu örneğin ismini Kırk Ambar koydum.

Bu örneği açıklamaya başlamadan önce hangi konu başlıklarını bilmek gerekiyor onlardan bahsetmek istiyorum. Maddeler halinde aşağıda bulabilirsiniz.

●       static, const ●       extern ●       typedef ●      struct
●       union ●       type casting ●       enum ●       pointer
●       double pointer ●       void pointer ●       function pointer ●       struct pointer
●       struct alignment ●       macros ●       passing by reference ●       passing by pointer

Bu örnekte dynamic memory kullanmayı gerektirecek bir durum bulunmamaktadır. Örneğin sonunda dynamic memory kullanabilmek ve uygulamayı kendiniz geliştirebilesiniz diye  tavsiyeler verdim. Şimdi örneğe odaklanalım.

Kırk Ambar:

Bu örneği CANopen Object Dictionary kontrolünden esinlendim. Bu örneği yapabilmek için CANbus ya da CANopen bilmeye kesinlikle gerek yok. Ancak bu uygulamayı yaptıktan sonra CANopen gibi haberleşme protokollerinin data kontrolünü çok rahat gerçekleştiriyor olacaksınız.

Örneği iki parçaya ayırarak C ve  embedded systems olarak ele alacağız. İlk aşamanın tamamını bilgisayar üzerinde C derleyicisinde çalıştıracağız. Dileyen kendi embedded systems ortamında da yazabilir. Ben Qt-Plain-C application üzerinden gideceğim.

Örneğin ikinci kısmı embedded systems üzerinde olacak. Bu kısmı yapmadan da örneği bitirmiş olacaksınız aslında. Uygulamasını görebilmek için bu kısmı eklemeyi düşündüm.

Kurulumu ve kullanımı kolay, minimum donanım gerektiren bir haberleşme arayüzü üzerinden ikinci kısmı geliştireceğiz. İstediğiniz ortamda, istediğiniz gömülü sistem kitiyle eşlik edebilirsiniz bu aşamaya. Ben Atollic TrueStudio ile STM32 kit kullanacağım.

Örneği anlatmaya birinci kısım üzerinden başlayabiliriz.