Czy kiedykolwiek będzie można używać C ++ do kodowania PIC?
Tak, teraz jest to możliwe. W przypadku dsPIC istnieje kompilator IAR Systems C ++ (chociaż jest bardzo stary i nie jest obsługiwany).
Inną opcją jest użycie konwertera C ++ na C. Korzystając z kroku przed kompilacją, przekonwertuj C ++ na C, a następnie (nieprzyjemnie wyglądający) C na normalny kompilator C. Spójrz na LLVM lub kompilator C ++ Comeau, które to robią. Comeau's kosztuje tylko 50 USD, ale prawdopodobnie zajmie trochę wysiłku, aby cały łańcuch narzędzi i biblioteki działały poprawnie.
Czy są jakieś ograniczenia sprzętowe, które uniemożliwiają nam używanie C ++?
Krótka odpowiedź, nie, nie ma ograniczeń sprzętowych. Długa odpowiedź, C ++ z pewnością zachęca do korzystania ze sterty i / lub stosu, z którymi zmagają się mniejsze MCU z ograniczoną pamięcią RAM.
Dlaczego walczą ze stosem / stosem? Z dwóch powodów: A) wiele MCU ma ograniczoną pamięć RAM, niewystarczająco na stertę i ledwo na stos. B) wiele MCU nie radzi sobie dobrze ze wskaźnikami, więc użycie zmiennych na stosie naprawdę zabija wydajność.
Kiedy ludzie pytają o użycie C ++ na MCU, uważam, że konstruktywne jest porównywanie C ++ z C. Dokładnie te same pytania były (i nadal są) zadawane o C na MCU. Ludzie zwykli niepokoić się tym pomysłem. Język wysokiego poziomu, na 256 bajtowej pamięci MCU RAM? Niemożliwy. Ale teraz wszyscy wiemy, że to możliwe. Napisałem C dla PIC12. Nie ma problemu. Jest to możliwe, ponieważ A) twórcy oprogramowania wiedzą, że muszą być trochę ostrożni: nie używaj malloc () itp. I B) kompilator został napisany specjalnie dla MCU. Kompilator będzie również bardzo ostrożny przy alokacji pamięci, nie będzie próbował utworzyć sterty i może nie utworzyć stosu. Niektóre kompilatory C po prostu nie pozwalają pisać kodu rekurencyjnego (rekurencyjnego), który absolutnie wymaga stosu.
Wiedząc, że można napisać C dla MCU, te same odpowiedzi dotyczą pytania o pisanie C ++ na MCU. Tak długo, jak kompilator rozumie ograniczenia urządzenia docelowego, a użytkownik rozumie również język, tak naprawdę nie ma problemu. W C ++ płacisz tylko za to, czego używasz. Jest całkowicie możliwe, aby napisać C ++ (z obiektami i wszystkim), który generuje dokładne wyjście asm, które uzyskałbyś, gdybyś użył C.
Teraz PIC32 z pewnością poradzi sobie z C ++. Mają do 64 kB pamięci RAM i są oparte na rdzeniu MIPS, który jest odpowiednio dorosłym 32-bitowym procesorem. Może poradzić sobie ze wskaźnikami i stosem, a także z komputerem PC. Rzeczywiście istnieją komputery oparte na MIPS (a przynajmniej takie były).
Niestety, wokół C ++ jest tyle nieporozumień. Wydaje się, że nawet bardzo doświadczeni koderzy nie mają pojęcia, jak działa ten język. Zobacz moją odpowiedź na temat tego, dlaczego C ++ jest odpowiedni dla wbudowanych procesorów.
O ile większy jest rozmiar generowanego pliku .hex i czas działania programu, gdy używamy C ++ zamiast C?
Jak powiedziałem, może nie być różnicy. Bjarne Stroustrup dokonał porównania wielu kompilatorów C / C ++ w celu porównania wydajności czasowej i przestrzennej dla wielu operacji. Wyniki były bardzo zróżnicowane. W niektórych przypadkach C ++ pojawiał się wolniej i większy, w niektórych przypadkach wolniejszy i mniejszy lub szybszy i większy, a nawet coraz szybszy i mniejszy! Tak więc odpowiedź na twoje pytanie jest taka, że zależy to w dużej mierze od kompilatora, ale generalnie nie musi w ogóle mieć znaczenia. Aby uzyskać więcej informacji, zobacz Raport techniczny dotyczący wydajności C ++
Czy są jakieś plany na przyszłość lub dalszy rozwój?
Tego nie wiem. Wiem, że kompilator Microchip C32 jest oprogramowaniem typu open source i można pobrać źródło. Wiem też, że ktoś, z kim pracowałem, znalazł instrukcje online i udało się uzyskać kompilator do kompilacji kodu C ++. Ale opuścił firmę, zanim zdążył skonfigurować właściwy łańcuch narzędzi.
AKTUALIZACJA
Microchip ma teraz kompilator C ++ dla swoich wbudowanych mikrokontrolerów PIC32.