C ++ en Embedded Electronics - Literature [cerrado]

5

Recientemente, hemos estado discutiendo el uso de C ++ en sistemas (pequeños) embebidos. Como todos los ejemplos de proveedores de controladores que he visto en el pasado están adaptados al uso de C, esto es básicamente lo que hemos estado usando.

Me gustaría saber si hay alguna literatura que me permita comenzar en esta área. Básicamente, conozco C en microcontroladores y C ++ en entornos de PC "normales". Sin embargo, me gustaría saber más cómo mapeo correctamente los registros a mis clases (o al revés), cómo lidiar con las interrupciones (o si hay algo especial que necesito saber), qué partes de C ++ puedo usar ( Probablemente querré intentar alejarme de la administración dinámica de memoria, plantillas o excepciones, etc. NO estoy buscando un inicio general de C ++.

    
pregunta Tom L.

3 respuestas

5

Consulte C ++ efectivo en un entorno integrado por C ++ Guru Scott Meyers. No es un libro, sino un conjunto de diapositivas de presentación anotadas que muestran muchos patrones específicos de C ++ para el uso de C ++ en sistemas integrados y algo de sabiduría sobre lo que no se debe hacer.

También me encanta el artículo redux de acceso al registro de hardware de C ++ por Ken Smith . Muestra cómo se puede usar la metaprogramación de la plantilla de C ++ para proporcionar la ejecución en tiempo de compilación de ciertas políticas de acceso de registro, como solo lectura / lectura-escritura / escritura.

También hubo un gran artículo en embedded.com que discute el manejo de interrupciones en C ++, pero parece que embedded.com no es más. Compruebe la wayback máquina para una posible copia en caché.

El Arduino también es una API de C ++, por lo que es un buen ejemplo práctico de uso de C ++ para sistemas integrados.

Otro gran recurso es STM32PLUS - Una biblioteca de C ++ para el desarrollo de STM32 por Andy Browne. Código abierto y mucha información en su blog.

    
respondido por el Verax
4

Tal vez intente esto: Christopher Kormanyos, "C ++ en tiempo real: eficiente programación de microcontroladores orientada a objetos y plantilla", Springer Verlag, 2013. Lo terminé hace unas semanas. (en su mayoría, a la hora de ir a la cama), y el material fue lo suficientemente interesante como para hacer una segunda pasada. Quiero ver cuál de las técnicas que describe funcionan en mi entorno, así que probablemente intentaré convertir algunas de las mis proyectos AVR C más pequeños a C ++ a medida que avanzo.

Si esto le interesó: la página del libro en Springer.com tiene archivos PDF descargables para la tabla de contenido, el prefacio y un capítulo de muestra completa (Capítulo 7, "Acceso a los registros de microcontroladores" , aunque ese no es mi capítulo favorito), y el autor mantiene un < a href="https://github.com/ckormanyos/real-time-cpp"> Github Repository con ejemplos / proyectos de referencia.

    
respondido por el Marcus Müller
2

Ooof. Tendría que escuchar una buena razón práctica detrás de por qué las características de C ++ tienen sentido para los proyectos a nivel de microcontrolador, para justificar el costo del lenguaje. Sin embargo, creo que lo mejor para usted es comenzar revisando el paquete de soporte de la placa de cualquier proveedor de chips . Por ejemplo, eche un vistazo a las bibliotecas gcc proporcionadas por TI / Atmel / Microchip para sus dispositivos. En esas bibliotecas, el proveedor asignará direcciones de registro a nombres amigos (como PORTB o SREG, etc.). Esto le dará una idea de cómo crearlo o modificarlo (si lo necesita) en cualquier otro idioma. Sin embargo, es probable que no necesite modificar mucho estos elementos y simplemente podría incluir el uso de extern "C" {} .

En segundo lugar, es posible que desee leer el compilador del proveedor de chips o la extensión de gcc para tener una idea de cómo asignan los ISR (interrupciones) a las llamadas de función. A menudo, esto también se hace en el BSP, o de lo contrario usarán una sintaxis no estándar que solo su compilador puede analizar.

Finalmente, si está convencido de que C ++ es el camino a seguir, eche un vistazo a algunos materiales de patrones de diseño como una forma de establecer reglas para usted y su equipo. Esto le ayudará a construir mejor su software en la jungla peligrosa que es C ++, y tal vez maximizar su valor. Un recurso que me funcionó bien es Head First Design Patterns .

    
respondido por el NateFisher

Lea otras preguntas en las etiquetas