Si por sistemas integrados, quiere decir:
- Dispositivo con recursos limitados, con 4 MB o menos de almacenamiento (generalmente en chip flash) y en chip RAM (generalmente 1 MB o menos), que ni siquiera puede poner Linux en él
- Controlar periféricos específicos (ADC, DAC, PWM)
- Periféricos de comunicación integrados típicos (UART, IIC, SPI, CAN)
entonces deberías considerar estas cosas:
- A diferencia de las computadoras de uso general (computadora de escritorio, portátil o móvil), el mercado de plataformas integradas está muy fragmentado. En el mundo de propósito general, solo conocemos grandes jugadores como ARM (móvil) y x86 (computadora de escritorio o portátil) y rara vez nos preocupamos por otras plataformas más pequeñas. En el mundo integrado, no existe un proveedor de plataforma tan dominante. Son aproximadamente del mismo tamaño (Atmel, ST, Microchip, TI, etc.).
- Con la limitación de recursos y la estrecha integración al hardware, cualquier proyecto solo puede crecer como máximo en un proyecto de tamaño mediano. FreeRTOS es un proyecto muy popular, pero no puedo considerarlo como un gran proyecto.
Con estas cosas en mente, ahora puedo explicar algunos pros y contras usando C ++ sobre C para sistemas embebidos.
- ¿Cuál es la diferencia entre el mecanismo de comunicación de I2C y USB?
- ¿Cómo comenzar con 8051 para hacer mi primer proyecto? Cómo hacer un diagrama de circuito EXTERNO que se requiere para el funcionamiento del microcontrolador
- Cómo es aptron solutions pvt. limitado. de noida para la formación de sistemas integrados?
- ¿Cuáles son algunos ejemplos de sistemas integrados en la aviación?
- ¿Cuáles son los beneficios de usar microcontroladores?
Pros
- La programación orientada a objetos hace que la modularidad del código sea más sencilla. Podemos emular objetos orientados en C puro, pero es incómodo. Si eres un practicante de OOP y un evangelista, entonces C ++ es tu única opción para sistemas integrados.
Contras
- Debido a las plataformas muy fragmentadas y la complejidad del lenguaje C ++, no puede confiar plenamente en su compilador. De hecho, tiendo a desconfiar de cualquier compilador de C ++ si no es Clang, GCC o MSVC.
- C ++ es un lenguaje difícil, que a menudo te distrae por la peculiaridad del lenguaje C ++ en lugar de resolver el problema real que tienes.
- Las bibliotecas estándar a veces tienen un costo enorme. Una vez, utilicé std :: priority_queue para mi proyecto, pero obtuve más dependencias estándar de 10 KB. Terminé de implementarlo yo mismo.
Entonces, si se limita a una pequeña dosis de C ++ (sin RTTI, sin excepción, un uso de montón muy limitado y controlado, sin metaprogramación de plantillas sofisticadas), creo que aún puede beneficiarse de C ++. Si quieres hacer más que eso, solo estás buscando problemas por ti mismo.
Entonces, aunque creo que algunas características nuevas de C ++ moderno (C ++ 11 a C ++ 17) podrían hacer de C ++ una gran opción para sistemas integrados, debe mantenerse alejado de él por ahora, a menos que sepa lo que está haciendo. La única plataforma integrada importante que admite C ++ 14 es ARM, y está basada en GCC. Otro proveedor de plataformas no parece interesado en adoptar estas excelentes características.