Opciones de C ++ RTOS [cerrado]

0

¿Cuáles son algunas de las opciones populares de código abierto para un RTOS compatible con C ++ (además de mbed)? He oído que FreeRTOS no proporciona soporte oficial para la compilación de C ++ y es una pesadilla entrar en el trabajo.

    
pregunta 19172281

1 respuesta

3

La respuesta corta a tu pregunta es:

"Real" RTOS y "real" C ++ se excluyen mutuamente. Entonces, no puedes.

Historia larga:

La sintaxis de C ++ permite la asignación de recursos y la desasignación durante el tiempo de ejecución. De hecho, la mayoría de los desarrolladores de C ++ (y a juzgar por su pregunta, usted pertenece a estos) ni siquiera se darán cuenta cuando suceda eso. De hecho, es probable que desee C ++ exactamente porque puede hacerlo (y no tiene que hacer su propia gestión de memoria y / o preasignar todo). Es una característica del lenguaje que C ++ tiene, pero C no.

Esa es una idea incompatible con un RTOS, porque no es determinista en complejidad (depende de la fragmentación instantánea de la memoria, que depende de lo que su sistema haya estado haciendo antes).

Puede usar C ++ de una manera que no haga ninguna asignación en tiempo de ejecución. Eso requiere un alto grado de disciplina durante el desarrollo; y no puedes usar ninguna de las cosas de la biblioteca estándar (especialmente sin std::string , std::vector ...) y ABSOLUTAMENTE sin excepciones (incluso puedes deshabilitar el manejo de excepciones en el compilador).

Las personas que desarrollan RTOS para aplicaciones automotrices permiten C ++ en algunos kernels, pero reemplazan todos los asignadores de la biblioteca estándar por uno que permite la creación de objetos durante el "arranque", pero luego se apaga un interruptor y, en tiempo de ejecución, dejan de hacer nada. pero solo señala un fallo al sistema operativo cuando se usan, lo que luego deja de funcionar.

Como puedes imaginar, es una pesadilla escribir un código para. El software ya no se parece mucho al código C ++.

Seré franco: C ++ no es el lenguaje que desea usar aquí, ya que FreeRTOS a menudo se ejecuta en sistemas donde ni siquiera querría la sobrecarga de memoria de tiempo de ejecución de C ++ en primer lugar ... Así que hágalo usted mismo favor, aprenda C99 y un poco de C11, y haga cosas en C.

    
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas