Para un MCU de metal descubierto, en comparación con el código casero con el bucle de fondo más la arquitectura de interrupción del temporizador, ¿cuáles son los beneficios de un sistema operativo no preventivo? ¿Cuáles de estos beneficios son lo suficientemente atractivos para que un proyecto adopte un sistema operativo no preventivo, en lugar de utilizar código casero con arquitectura de bucle de fondo?
.
Explicación a la pregunta:
Realmente aprecio que todos hayan respondido mi pregunta. Siento que la respuesta casi ha llegado. Agrego esta explicación a mi pregunta aquí, que muestra mi propia consideración y puede ayudar a reducir la pregunta o hacerla más precisa.
Lo que intento hacer es comprender cómo elegir el RTOS más apropiado para un proyecto en general.
Para lograr esto, ayudará una mejor comprensión de los conceptos básicos y los beneficios más atractivos de diferentes tipos de RTOS y el precio correspondiente, ya que no existe el mejor RTOS para todas las aplicaciones.
Hace unos años leí libros sobre el sistema operativo, pero ya no los tengo conmigo. Busqué en Internet antes de publicar mi pregunta aquí y encontré que esta información fue de gran ayuda: http://www.ustudy.in/node/5456 .
Hay mucha otra información útil, como las introducciones en el sitio web de diferentes RTOS, artículos que comparan la programación preventiva y la programación no preventiva, etc.
Pero no encontré ningún tema mencionado cuando elegir un RTOS no preventivo y cuando es mejor, simplemente escriba su propio código usando la interrupción del temporizador y el bucle de fondo.
Tengo ciertas respuestas, pero no estoy suficientemente satisfecho con ellas.
Realmente me gustaría saber la respuesta o la opinión de personas con más experiencia, especialmente en la práctica de la industria.
Lo que entiendo hasta ahora es:
no importa usar o no usar un sistema operativo, siempre es necesario cierto tipo de códigos de programación, incluso en forma de código como:
in the timer interrupt which occurs every 10ms
if(it's 10ms)
{
call function A / execute task A;
}
if(it's 50ms)
{
call function B / execute task B;
}
Beneficio 1:
un sistema operativo no preventivo designa la forma / estilo de programación para el código de programación, de modo que los ingenieros puedan compartir la misma vista incluso si no estaban en el mismo proyecto antes. Luego, con la misma visión sobre la tarea conceptual, los ingenieros pueden trabajar en diferentes tareas y probarlas, perfilarlas de forma independiente tanto como sea posible.
Pero, ¿cuánto podemos realmente ganar con esto? Si los ingenieros están trabajando en el mismo proyecto, pueden encontrar la manera de compartir bien la misma vista sin usar un sistema operativo no preventivo.
Si un ingeniero es de otro proyecto o empresa, obtendrá el beneficio si conocía el sistema operativo antes. Pero si no lo hizo, de nuevo, parece que no hace una gran diferencia para él aprender un nuevo sistema operativo o una nueva pieza de código.
Ventaja 2:
si el código del sistema operativo se ha probado correctamente, ahorra tiempo de depuración. Esto es realmente un buen beneficio.
Pero si la aplicación solo tiene alrededor de 5 tareas, creo que no es realmente complicado escribir su propio código usando la interrupción del temporizador y el bucle de fondo.
Un sistema operativo no preventivo aquí se refiere a un sistema operativo comercial / libre / heredado con un programador no preventivo.
Cuando publiqué esta pregunta, pienso principalmente en ciertos sistemas operativos como:
(1) KISS Kernel (Un pequeño RTOS no preventivo - reclamado por su sitio web)
http://www.frontiernet.net/~rhode/kisskern.html
(2) uSmartX (RTOS ligero - reclamado por su sitio web)
(3) FreeRTOS (es un RTOS preventivo, pero según tengo entendido, también se puede configurar como un RTOS no preventivo)
(4) uC / OS (similar a FreeRTOS)
(5 ) código de sistema operativo / planificador heredado en algunas compañías (generalmente hecho y mantenido internamente por la compañía)
(No se pueden agregar más enlaces debido a la limitación de la nueva cuenta StackOverflow)
Según tengo entendido, un sistema operativo no preventivo es una colección de estos códigos:
(1) un planificador que utiliza una estrategia no preventiva.
(2) facilidades para comunicación entre tareas, mutex, sincronización y control de tiempo.
(3) gestión de memoria.
(4) otras instalaciones votos / bibliotecas como sistema de archivos, pila de red, y la interfaz gráfica de usuario, etc. (FreeRTOS y uC / OS proporciona estos, pero no estoy seguro de si todavía funcionan cuando el programador está configurado como no preferente)
Algunos de ellos no siempre están ahí. Pero el planificador es imprescindible.