PIC'leri kodlamak için C ++ kullanmak hiç mümkün olacak mı?
Evet, şimdi mümkün. DsPIC için, IAR Systems C ++ Derleyici vardır (çok eski ve desteklenmemesine rağmen).
Başka bir seçenek de C ++ 'dan C'ye dönüştürücü kullanmaktır. Bir ön derleme adımı kullanarak, C ++ 'yi C'ye dönüştürün, sonra (kötü görünümlü) C'yi normal C derleyicinize verin. Her ikisini de yapan LLVM veya Comeau'nun C ++ derleyicisine bir göz atın . Comeau's sadece 50 $ 'dır, ancak tüm araç zincirinin ve kütüphanelerin düzgün çalışması için biraz çaba harcayacaktır.
C ++ kullanmamızı engelleyen herhangi bir donanım sınırlaması var mı?
Kısa cevap, hayır, donanım sınırlaması yoktur. Uzun cevap, C ++ kesinlikle sınırlı RAM'e sahip daha küçük MCU'ların mücadele edeceği bir yığın ve / veya yığın kullanımını teşvik eder.
Neden bir yığın / yığınla mücadele ediyorlar? İki nedenden dolayı: A) birçok MCU'nun sınırlı bir RAM'i vardır, kesinlikle bir yığın için yeterli değildir ve bir yığın için zar zor yeterlidir. B) birçok MCU, işaretçileri iyi işlemez, bu nedenle yığıntaki değişkenlerin kullanımı gerçekten performansı öldürür.
İnsanlar bir MCU üzerinde C ++ kullanma hakkında sorduklarında, C ++ ile C'yi karşılaştırmak için yapıcı buluyorum. İnsanlar bu fikre karşı koyarlardı. 256 bayt RAM MCU üzerinde üst düzey bir dil ?? İmkansız. Ama şimdi hepimiz mümkün olduğunu biliyoruz. PIC12 için C yazdım. Sorun değil. A) yazılım geliştiricileri biraz dikkatli olmaları gerektiğini biliyorlar: malloc () vb. Kullanmayın ve B) derleyici özellikle MCU için yazılmıştır. Derleyici ayrıca bellek ayırma konusunda da çok dikkatli olacaktır, bir yığın oluşturmaya çalışmaz ve bir yığın oluşturmayabilir. Bazı C derleyicileri, kesinlikle bir yığın gerektiren yeniden giriş (özyinelemeli) kod yazmanıza izin vermez.
Bir MCU için C yazmanın mümkün olduğunu bilerek, aynı cevaplar bir MCU'ya C ++ yazma sorusu için de geçerlidir. Derleyici hedef cihazın sınırlamalarını ve kullanıcı dili de anladığı sürece, gerçekten sorun yoktur. C ++ ile yalnızca kullandığınız kadar ödersiniz. C'yi kullanırsanız sahip olacağınız asm çıkışını üreten C ++ (nesneler ve her şeyle) yazmak mükemmel bir şekilde mümkündür.
Şimdi, PIC32'ler kesinlikle C ++ ile başa çıkabilir. 64kB'a kadar RAM'e sahiptirler ve düzgün bir şekilde büyütülmüş 32 bit işlemci olan MIPS çekirdeğine dayanırlar. İşaretçiler, bir yığın ve bir PC ile başa çıkabilir. Gerçekten de, MIPS (veya en azından eskiden) tabanlı PC'ler var.
Ne yazık ki, C ++ ile ilgili çok fazla yanlış anlama var. Çok deneyimli kodlayıcıların bile dilin nasıl çalıştığı hakkında hiçbir fikri yoktur. C ++ 'ın gömülü CPU'lara neden uygun olduğuna dair cevabımı görün .
C yerine C ++ kullandığımızda, oluşturulan .hex dosyasının boyutu ve programın çalışma süresi ne kadar artar?
Dediğim gibi, bir fark olmayabilir. Bjarne Stroustrup, bir dizi işlem için zaman ve alan performansını karşılaştırmak için bir grup C / C ++ derleyicisini karşılaştırdı. Sonuçlar büyük farklılıklar gösterdi. Bazı durumlarda, C ++ daha yavaş ve daha büyük, bazı durumlarda daha yavaş ve daha küçük veya daha hızlı ve daha büyük ve daha hızlı ve daha küçük çıktı! Bu nedenle, sorunuzun cevabı, derleyiciye büyük ölçüde bağlı olduğu, ancak genel olarak, hiçbir fark yaratmaya ihtiyaç duymamasıdır. Daha fazla ayrıntı için, C ++ Performansıyla İlgili Teknik Rapor'a bakın
Bu konuda gelecek planları veya sürekli bir gelişme var mı?
Bilmiyorum. Microchip C32 derleyicisinin açık kaynaklı olduğunu biliyorum ve kaynağı indirebilirsiniz. Ayrıca çalıştığım birisinin aslında bazı talimatları çevrimiçi bulduğunu ve derleyiciyi C ++ kodunu derlemesini sağladığını biliyorum. Ama beni uygun bir alet zinciri ile kurmadan önce şirketten ayrıldı.
GÜNCELLEME
Microchip artık PIC32 gömülü MCU'ları için bir C ++ derleyicisine sahiptir .