MCU'lar için C++ kullanlar?

Başlatan Elektroemre, 07 Ocak 2012, 16:07:58

Elektroemre

Selamlar,

MCU için C++ kullanan arkadaş var mı? Yorumlarını bekliyorum.

ARM AVR vs birçok MCU derleyicileri C++'ı destekliyor ama şuana kadar nette çok az örneğini gördüm.
Profesyonel piyasada kullanılmıyor mu? Yada az buçuk işletim sistemi vs çalıştıran gömülü sistemlerde?

MCU için amacım C++'ın alengirli özelliklerini kullanmak değilde class'lar vs ile programlamaya renk katmak.

mufitsozen

QP Framework'e bir bakin. Isletim sistemi ile yada isletim sistemsiz kullanilabilir.

Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems kitabinda detayli bahsediliyor.

benim bildigim kadari ile cortex m3lerde uyarlandi.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

Klein

Bu günlerde ben de bu konu üzerindeyim.
Bir projede kullanmadım ama renesas R8C ve M16 için bazı denemelerim oldu. Bu denemeler sonucunda gayet memnun kaldım. Bu yüzden Cortex-M4 ile başlayacağım projeleri C++ ile yazmayı düşünüyorum.

https://www.picproje.org/index.php/topic,37194.msg269763/topicseen.html#msg269763

Bu başlıkta konuyu biraz kaşımayı düşünüyorum.

Elektroemre

#3
Teşekkürler,

C++'a ve bahsedilen kaynaklara biraz göz attım, vakit olunca deneme yapacağım.
Fakat şuan ileriye dönük olarak fayda/zarar  durumunu kestiremiyorum.

İleride ilgileneceğim alan gömülü sistemler olacak bu doğrultuda düzenli ilerlemek istiyorum.
İlerisi olduğuna emin olsam C++'a daha çok yöneleceğim.
Bilgisayar tarafında da C# uğraşıyorum onada daha fazla yönelmek istiyorum ama karasızım biraz.

z

Ufak uygulama ile buyuk uygulama arasindaki siniri nasil tarif edersiniz?
C ve C++ ile ayni uygulama icin kod gelistirilmeye calisilsa kod ve ram alani kullanimi icin ne soylenebilir?

Araclarda kullandigimiz navigasyon cihazlari c++ ile mi yazilmistir?

Ben de bunlari merak ediyorum.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mufitsozen

Alıntı yapılan: bunalmis - 08 Ocak 2012, 20:59:36
Ufak uygulama ile buyuk uygulama arasindaki siniri nasil tarif edersiniz?
C ve C++ ile ayni uygulama icin kod gelistirilmeye calisilsa kod ve ram alani kullanimi icin ne soylenebilir?

Araclarda kullandigimiz navigasyon cihazlari c++ ile mi yazilmistir?

Ben de bunlari merak ediyorum.
buyuk uygulamalarda ne kadar kod ve ram kullandigimizla ilgilenmeyiz. buyuk uygulamayi gelistirebilmek ve calistirmak yeteri kadar zor ve zahmetlidir, ne kadar kod yada ram harcandiginin onemi cok dusuktur.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

mufitsozen

Alıntı YapNeyse şimdi forumdaki kimse burada bunları hesaplamaz sanırım.

sayın @gerbay, when you ASSUME something you make an ASS of U and ME.

bu forumda kimse kullanmaz derken, en azindan @mufitsozen sizi tenzih ederim gibi bir ifade kullanabilirdin.  ;)
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

yamak

Alıntı yapılan: bunalmis - 08 Ocak 2012, 20:59:36
Ufak uygulama ile buyuk uygulama arasindaki siniri nasil tarif edersiniz?
C ve C++ ile ayni uygulama icin kod gelistirilmeye calisilsa kod ve ram alani kullanimi icin ne soylenebilir?

Araclarda kullandigimiz navigasyon cihazlari c++ ile mi yazilmistir?

Ben de bunlari merak ediyorum.
hocam bi arkadasim bi savunma sanayiinde calisiyi. Ucaklarin navigasyon cihazlari icin uygulama yaziyo. Kullandigi dil C imis

yamak

#8
KHocam sizin kastettiginiz driver yazma falansa yani donanima hukmeden yazilimlarsa o arkadasin yaptigi sey o değil ben ona sormustum driver falan mi yaziyon diye yok demisti.Ben de fazla israr etmedim ne olduguna dair.Yani gomulu isletim sistemi vardir cihazlarda direkt donanim icin değil de isletim sistemi uzerinde calisacak programlar yaziyodur. Tam emin değilim yani. Ama durumboyle bile olsa nesne yonelimli bi dil kullanmak daha.mantikli geliyo bana

EKLEME: Hocam yukaridaki yazinizi tam okumamistim simdi okudum siz de zaten isletim sistemine kod yazmaktan bahsediyomussunuz

Elektroemre

Bi ara C++'a merak salıp uğraşıp bırakmıştım. Şuan tekrar göz atıyorumda classlar nesneler overloding vs. ayrı bir hava katıyor programlamaya.
Denemeye değer  :)

yamak

Alıntı yapılan: gerbay - 08 Ocak 2012, 22:33:18
hocam o dediğin işi şu an yapan iki firma var, birisinde VxWorks kullanıyorlar o işlerde. Diğerinde de GreenHills Integrity kullanıyorlar..

benim kastettiğim driver yazma falan değil zaten..

bir de şu var, savunma sanayiinde çalışan biri öyle yazıyor diye o iyi birşeydir değildir tartışması yapılmadan insanlarda bir "demekki bu iş o şekilde yapılır" düşüncesi oluyor..

ben size yabancı savunma sanayyinde bir çok farklı firma sayarım benzer işleri C++ kullanarak yapan..

nerede çalışırsa çalışsın, başkalarının doğrularını sorgusuz sualsiz, ölçüp tartmadan kendi doğrunuz haline getirmeyin..
Hocam beni yanlış anladınız. Ben o öyle yapıyo diye doğru demedim. Sadece bunalmış hocanın sorduğuna örnek vermek istedim.Zaten bana C kullanıyoruz dediğinde şaşırmıştım.Yani C kullanılması gerektiğini savunmuyorum.

Tagli

Bana sanki malloc yazamayınca işin tüm tadı kaçıyor gibi geliyor. Gerçi bu işletim sistemi olmayışından kaynaklanıyor, yani C'de de böyle.

C++ bildiğim söylenemez ama onda da new ifadesi var sanırım. Çalışma anında dinamik olarak nesne oluşturamayacaksam C++'ın ne zevki kalır ki? Veya C'den ne farkı kalır?

Ne zaman ki işin içine bir işletim sistemi girer (tercihen Linux), o zaman C++ anlam kazanır bence.
Gökçe Tağlıoğlu

FullMetal

Merhaba,

Alıntı yapılan: mufitsozen - 07 Ocak 2012, 16:28:45
QP Framework'e bir bakin. Isletim sistemi ile yada isletim sistemsiz kullanilabilir.

Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems kitabinda detayli bahsediliyor.

benim bildigim kadari ile cortex m3lerde uyarlandi.

Herşeyden önce bu kitabı herkes övmüş (amazonda kitap yorumlarına baktım). Peki okuyan, konuyu bilen arkadaşlar kitap ve kitabın konusu ne için bu kadar önemli?

Kitabın 2. bölüme kadar olan kısmını pdf formatta vermişler. Açtım göz attım. Second edition de kitapda, birçok gömülü sistem geliştiricisi donanım üzerine yetişmiş EE (Electrical Enginneer?) olduğu için C++ ile göz korkutmaya gerek yok bu yüzden ilk baskıdaki C++ programları yerine C programlama dilini kullandım gibi bazı şeyler yazmış. Şimdi C++ kullanacak kişi sizce first edition mı second edition mı okumalı?

Alıntı yapılan: Tagli - 08 Ocak 2012, 23:28:50
Bana sanki malloc yazamayınca işin tüm tadı kaçıyor gibi geliyor. Gerçi bu işletim sistemi olmayışından kaynaklanıyor, yani C'de de böyle.

C++ bildiğim söylenemez ama onda da new ifadesi var sanırım. Çalışma anında dinamik olarak nesne oluşturamayacaksam C++'ın ne zevki kalır ki? Veya C'den ne farkı kalır?

Ne zaman ki işin içine bir işletim sistemi girer (tercihen Linux), o zaman C++ anlam kazanır bence.
Çalışma anında dinamik nesne oluşturmakdan kasıt ne oluyor?   new ile istendiği zaman dinamik olarak nesne oluşturma talebinde bulunabilinir. Sanırım aynı şeylerden bahsetmiyoruz?

Tagli

Doğru ama işletim sistemi yoksa new komutu nasıl çalışabilir ki? Yeni bir nesne oluşturabilmek için öncelikle sistemden bir alan istenmesi gerekir. İşletim sistemi yoksa yeni alan da alınamaz. Tüm alanlar derleme sırasında statik olarak tanımlanmalıdır.
Gökçe Tağlıoğlu

Klein

Gömülü sistemlerde C++ kullanmak meselesini sadece ihtiyaç meselesine de indirgememek gerek. Belki C++ kullanmaya hiç ihtiyacımız olmayabilir. Ama onun getirdiği yenilikler, programlaya katacağı hoşluklar program yazmayı belki daha eğlenceli hale getirecek.

İnternet explorer kullanırken bir bağlantıyı yeni sekmede açmak için farenin orta tuşunu kullanıyorum. Sağ tuşa basıp yeni sekmede aç da diyebilirim. Orta tuşa ihtiyacım var mı? Yok! Ama böyle kullanmayı seviyorum.

C++ daki fonksiyon aşırı yükleme bile C++ kullanmayı isteğimiartırıyor. Şart mı değil. C ile, farklı şekillerde  halledebilirim. Ama bu özelliği kullanmak bana keyif veriyor.

Embedded programcılar için gerçek hayatta her zaman karşılaşmasak da karşılaşabileceğimiz bir örnek:

Bir I2C aygıtımız var. I2C kontrolünü software ile yapmak zorundayız. Bir sorun yok hemen bir program yazar hallederiz.
Peki bu aygıttan 2 tane lazım olursa ve biz bu aygıtı başka porta bağlamak zorunda kalırsak?
Sorun yok oturur 2. I2C rutinleri yazarız. Ya da rutinimizi parametrik hale getirir 2. I2C kontrolünü de yaparız.
Peki 3. 4. 5. 6. I2C ihtiyacı duyduğumuzda ne yapacağız?

Aynı şeyi C++ ile yapsaydık.
Bir tane I2C sınıfı tanımlardık.  O kadar.
Sonra bu sınıftan bir nesne oluşturup port ayarlarımızı yapardık iş bitti.
2. lazım olduğunda? bir nesne daha tanımla port ayarlarını yap kullan.
3. 4. 5. 6. 7. kaynakların yettiği sürece devam.

Bu işi C ile yapabiliyoruz. O zaman C++ gerekli mi? Değil. Ama kullanmak ister miyim? Evet.