Sarà mai possibile usare C ++ per codificare PIC?
Sì, è possibile ora. Per dsPIC, c'è il compilatore C ++ IAR Systems (anche se è molto vecchio e non supportato).
Un'altra opzione è quella di utilizzare un convertitore da C ++ a C. Usando un passo pre-build, converti C ++ in C, quindi dai (cattiva) C al tuo normale compilatore C. Dai un'occhiata a LLVM o al compilatore C ++ di Comeau che lo fanno entrambi. Comeau's costa solo $ 50, ma probabilmente ci vorrà qualche sforzo per far funzionare correttamente l'intera toolchain e le librerie.
Esistono limiti hardware che ci impediscono di utilizzare C ++?
Risposta breve, no, non ci sono limiti hardware. Risposta lunga, C ++ sicuramente incoraggia l'uso di un heap e / o stack, con cui le MCU più piccole con RAM limitata avranno difficoltà.
Perché lottano con un heap / stack? Per due motivi: A) molte MCU hanno una RAM limitata, certamente non sufficiente per un heap e appena sufficiente per uno stack. B) molte MCU non gestiscono bene i puntatori, quindi l'uso delle variabili nello stack uccide davvero le prestazioni.
Quando le persone chiedono di usare C ++ su un MCU, trovo costruttivo confrontare C ++ con C. Le stesse stesse domande sono state (e ancora vengono) poste su C su un MCU. La gente era solita abbandonare l'idea. Un linguaggio di alto livello, su MCU RAM 256 byte ?? Impossibile. Ma ora sappiamo tutti che è possibile. Ho scritto C per un PIC12. Nessun problema. È possibile perché A) gli sviluppatori di software sanno che devono stare un po 'attenti: non usare malloc () ecc. E B) il compilatore è stato scritto appositamente per l'MCU. Il compilatore presterà inoltre particolare attenzione all'allocazione della memoria, non tenterà di creare un heap e potrebbe non creare uno stack. Alcuni compilatori C semplicemente non ti permetteranno di scrivere codice rientrante (ricorsivo) che richiede assolutamente uno stack.
Sapendo che è possibile scrivere C per un MCU, le stesse risposte si applicano alla domanda di scrivere C ++ su un MCU. Finché il compilatore comprende i limiti del dispositivo di destinazione e anche l'utente capisce la lingua, non c'è davvero alcun problema. In C ++, paghi solo ciò che usi. È perfettamente possibile scrivere C ++ (con oggetti e tutto) che produca l'output esatto che avresti ottenuto se avessi usato C.
Ora, i PIC32 possono certamente far fronte al C ++. Hanno fino a 64 KB di RAM e si basano sul core MIPS, che è un processore a 32 bit correttamente cresciuto. Può gestire puntatori, stack e PC. In effetti, ci sono PC basati sul MIPS (o almeno un tempo).
Purtroppo, ci sono così tanti malintesi riguardo al C ++. Persino programmatori di grande esperienza sembrano non avere idea di come funzioni la lingua. Vedi la mia risposta sul perché C ++ è adatto per le CPU integrate.
Quanto aumentano le dimensioni del file .hex generato e il tempo di esecuzione del programma quando utilizziamo C ++ anziché C?
Come ho detto, potrebbe non esserci alcuna differenza. Bjarne Stroustrup ha fatto un confronto tra un gruppo di compilatori C / C ++ per confrontare le prestazioni di tempo e spazio per una serie di operazioni. I risultati sono variati ampiamente. In alcuni casi, il C ++ è uscito più lento e più grande, in alcuni casi più lento e più piccolo, o più veloce e più grande, e ancora più veloce e più piccolo! Quindi, la risposta alla tua domanda è che dipende fortemente dal compilatore, ma in generale non deve fare alcuna differenza. Per maggiori dettagli, consultare il Rapporto tecnico sulle prestazioni C ++
Ci sono piani futuri o sviluppi in corso su questo?
Che non lo so. So che il compilatore Microchip C32 è open source e puoi scaricare il sorgente. So anche che qualcuno con cui ho lavorato ha effettivamente trovato alcune istruzioni online e sono riuscito a far compilare il codice C ++ al compilatore. Ma ha lasciato l'azienda prima che fosse in grado di installarmi con una catena di strumenti adeguata.
AGGIORNARE
Microchip ora ha un compilatore C ++ disponibile per la gamma PIC32 di MCU integrate.