¿Alguna vez será posible usar C ++ para codificar PIC?
Sí, es posible ahora. Para dsPIC, hay el IAR Systems C ++ Compiler (aunque es muy antiguo y no es compatible).
Otra opción es usar un convertidor de C ++ a C. Usando un paso previo a la compilación, convierta C ++ a C, luego asigne C (de aspecto desagradable) a su compilador de C normal. Eche un vistazo a LLVM o Comeau's Compilador de C ++ que ambos hacen eso. Comeau solo cuesta $ 50, pero es probable que requiera cierto esfuerzo para que toda la cadena de herramientas y las bibliotecas funcionen correctamente.
¿Existe alguna limitación de hardware que nos impida utilizar C ++?
Respuesta corta, no, no hay limitaciones de hardware. Respuesta larga, C ++ ciertamente recomienda el uso de un montón y / o pila, con los que las MCU más pequeñas con RAM limitada tendrán dificultades.
¿Por qué luchan con un montón / pila? Por dos razones: A) muchas MCU tienen RAM limitada, no lo suficiente como para un montón, y apenas lo suficiente para una pila. B) muchas MCU no manejan bien los punteros, por lo que el uso de variables en la pila realmente mata el rendimiento.
Cuando las personas preguntan sobre el uso de C ++ en una MCU, me parece constructivo comparar C ++ con C. Las mismas preguntas se hicieron (y aún se hacen) acerca de C en una MCU. La gente solía rechazar la idea. Un lenguaje de alto nivel, en 256 bytes RAM MCU? Imposible. Pero ahora todos sabemos que es posible. He escrito C para un PIC12. No hay problema. Es posible porque A) los desarrolladores de software saben que tienen que tener un poco de cuidado: no use malloc (), etc. y B) el compilador se ha escrito especialmente para la MCU. El compilador también tendrá mucho cuidado con la asignación de memoria, no intentará crear un montón y puede que no cree una pila. Algunos compiladores de C simplemente no le permiten escribir código de reingreso (recursivo) que absolutamente requiere una pila.
Sabiendo que es posible escribir C para una MCU, las mismas respuestas se aplican a la pregunta de escribir C ++ en una MCU. Mientras el compilador entienda las limitaciones del dispositivo de destino y el usuario también entienda el idioma, realmente no hay problema. En C ++, solo pagas por lo que usas. Es perfectamente posible escribir C ++ (con objetos y todo) que produce la salida exacta de asm que obtendrías si hubieses usado C.
Ahora, PIC32s ciertamente puede hacer frente a C ++. Tienen hasta 64kB de RAM y están basados en el núcleo MIPS, que es un procesador de 32 bits que ha crecido correctamente. Puede tratar con punteros y una pila, así como una PC. De hecho, hay PC basadas en los MIPS (o al menos, solía haber).
Lamentablemente, hay muchos malentendidos en torno a C ++. Incluso los programadores muy experimentados parecen no tener idea de cómo funciona el lenguaje. Consulte mi respuesta sobre por qué C ++ es adecuado para incrustados CPUs.
¿Cuánto aumentan el tamaño del archivo .hex generado y el tiempo de ejecución del programa cuando usamos C ++ en lugar de C?
Como dije, puede que no haya diferencia. Bjarne Stroustrup hizo una comparación de un grupo de compiladores de C / C ++ para comparar el rendimiento de tiempo y espacio para varias operaciones. Los resultados variaron ampliamente. En algunos casos, el C ++ salió más lento y más grande, algunos casos más lento y más pequeño, o más rápido y más grande, e incluso más rápido y más pequeño! Entonces, la respuesta a tu pregunta es que depende en gran medida del compilador, pero en general, no necesita hacer ninguna diferencia. Para obtener más detalles, consulte el Informe técnico sobre el rendimiento de C ++
¿Hay algún plan futuro o desarrollo en curso en esto?
Eso no lo sé. Sé que el compilador Microchip C32 es de código abierto, y puede descargar la fuente. También sé que alguien con quien trabajé encontró algunas instrucciones en línea y logró que el compilador compilara el código C ++. Pero dejó la compañía antes de que pudiera establecerme con una cadena de herramientas adecuada.
UPDATE
Microchip ahora tiene un compilador de C ++ disponible para su gama PIC32 de MCU incrustadas.