Thread overview
D ile gömülü sistemler
Feb 11, 2012
erdem
Feb 11, 2012
Salih Dinçer
February 11, 2012

Ben acaba Arduino gibi platformları D ile programlayabilirmiyiz diye düşündüm. Ama bildiğiniz gibi mikrodenetleyicilerde, mikroişlemcilerden farklı olarak bellek, merkezi işlem birimi, giriş çıkış arabirimleri tek bir yonga üzerinde toplanıyor. Örneğin AVR mini denetleyicisi 8 bitlik ve genelde üzerlerinde 1'den az veya birkaç kB rastgele erişimli bellek bulunuyor. Ayrıca Harvard mimarisini kullanıyor.

http://bit.ly/xRylD5

Ancak D 32 bitlik sistemler için tasarlandığı için şimdilik gömülü sistemler desteklenmiyormuş :-/

Scott Meyers'ın TDPL'nin başında C++ ve D'yi karşılaştırdığı güzel bir ön söz vardı. İşte C++ bir sistem programlama dilidir. C++'nin tasarım amaçlarından bir tanesi C'ye bu yönde rakip olmak. Burada sistem programlama derken donanımla haberleşmek, gömülü sistemler ve sürücüler yazmak, kısacası üzerinde çalıştığı donanımın son damla performansını kullanacak şekilde tasarlanmıştır. D'nin amacı sistem programlama konusunda C++'nin yeni nesil sürümü olmaktır.

Şimdi burada gömülü sistemler derken mini denetleyicileri kasdetmemiş mi :rolleyes:

Yazılanlardan D ile yakın gelecekte mini denetleyiciler için bir kütüphane yazılmayacağını mı anlamalıyız. Burada dilin kısıtlayıcı tarafı mini denetçide bir işletim sistemi olmaması mı?

http://www.nongnu.org/avr-libc

Peki C için var olan avr kütüphaneleri bunu nasıl yapıyorlar? Aslında arka planda assembly gibi alt düzey bir programlama dili mi kullanıyorlar acaba ..

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 11, 2012

ARM'leri bilemeyeceğim ama mikrodenetleyicilerde üst seviyede program yazarken aslında bir kabuk üzerinden (derleyicinin kendisi) assembly kodları oluşuyor. Yani her bir C kodu veya başka bir dildeki blokların bir assembly karşlığı var. Hoş yüksek seviyeli diller de çok farklı bir şey yapmıyorlar. Ancak bilgisayarda doğrudan makine koduna derleme (linking+binout) söz konusu.

Farz edelim mikroElektronika'nın derleyicilerinden bir tanesini kullanıyorsunuz. Orada yazdığını bir satırlık kodun kütüphane içindeki bir assembly karşılığı var. Sanki makro yazmışsınız da eklediğiniz parametreler assembly içine serpiştirilmiş. Dolayısıyla bu kodlar aşırı büyük ve hantal olabiliyorlar. Öte yandan hızlı proje geliştirme sağlaması yönünden tercih ediliyor. Tam anlamıyla donanıma hükmetmek için assembly kullanmak şart. Yoksa 3 satırda yapılabilecek şeyin 3 KB. HEX code oluşturması muhtemel.

Bence bir çoğumuz D Dili üzerinde pekala PIC assembly komutlarıyla uyumlu (18F ailesinin C uyumlu komutları ile daha iyi sonuç alabiliriz!) assembly kodlarını oluşturabilen basit bir derleyici yazabiliriz. D kodu girecek ve donanıma göre PIC assembly kodu çıkacak. Bu çok zor bir şey değil, zor olan tüm modellere göre akıllı bir kod çıkışının gerçeklenmesi.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 11, 2012

"Gömülü sistem" "embedded system"ın karşılığı ise bence D'nin şansı da C++ kadar az olacaktır. Gömülü sistemlerde C++ kullanılabiliyor ama ancak bir çok olanağı kırpıldıktan sonra. Örneğin hata atma düzeneği olamıyor.

Embedded C++ diye bir standart geliştirilmeye çalışılmıştı:

http://en.wikipedia.org/wiki/Embedded_C%2B%2B

C++'ın olanaklarının kırpılmasının gerekçeleri ne idiyse aynıları D için de geçerli olacaktır. Üstüne bir de D'de çöp toplayıcı var. O yüzden programlar şu sıralarda çok yer tutuyorlar. Bence gömülü sistemlerde D'nin daha zamanı var. Olgunlaşması gerekir.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]