Para un desnudo de metal MCU, en Comparación con el casero código de fondo con el bucle plus temporizador de interrupción de la arquitectura, ¿cuáles son los beneficios de un non-preemptive OS? Lo que entre estos beneficios son suficientemente atractivos para que un proyecto para adoptar un non-preemptive OS, en lugar de para uso casero código de fondo con el lazo de la arquitectura?
.
Explicación a la Pregunta:
Realmente agradezco a todos aquellos que han respondido a mi pregunta. Siento que la respuesta ha sido casi allí. Añado esta explicación a mi pregunta aquí donde se muestra mi propia consideración y puede ayudar a limitar la cuestión o hacer que sea más precisa.
Lo que estoy tratando de hacer es entender cómo elegir el más adecuado RTOS para un proyecto en general.
Para lograr esto, una mejor comprensión de los conceptos básicos y el más atractivo de los beneficios de los diferentes tipos de RTO y el precio correspondiente será de ayuda, ya que no hay mejor RTOS para todas las aplicaciones.
He leído libros sobre OS hace un par de años pero no los tengo conmigo. He buscado en internet antes he publicado mi pregunta aquí y encontré esta información ha sido muy útil: http://www.ustudy.in/node/5456.
Hay un montón de otra información útil, como el de las presentaciones en la página web de diferentes RTOS, artículos comparando preferente en la programación y no preferente, programación, etc.
Pero no encontré ningún tema mencionado al elegir un non-preemptive RTOS y cuando es mejor escribir su propio código utilizando el temporizador de interrupción y de fondo en bucle.
Tengo ciertas mis propias respuestas, pero no estoy bastante satisfecho con ellos.
Realmente me gustaría saber la respuesta o la vista de más expeirenced personas, especialmente en las prácticas de la industria.
A mi entender hasta ahora es:
no importa el uso o no uso de un sistema operativo, cierto tipo de programación de los códigos son siempre necesarias, incluso en la 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 non-preemptive OS designa el modo o estilo de programación para la programación de código, de modo que los ingenieros pueden compartir el mismo punto de vista, aunque no lo fueran en el mismo proyecto antes. A continuación, con el mismo punto de vista acerca del concepto de tarea, los ingenieros pueden trabajar en diferentes tareas y ponerlas a prueba, el perfil de ellos de forma independiente tanto como sea posible.
Pero, ¿cuánto somos realmente capaces de obtener de esto? Si los ingenieros están trabajando en el mismo proyecto, se puede encontrar la manera de compartir el mismo punto de vista bien sin el uso de un non-preemptive OS.
Si un ingeniero es de otro proyecto o de la empresa, él se beneficiará si él sabía que el OS antes. Pero si él no lo hizo, de nuevo, parece que no hacen gran diferencia para él para aprender un nuevo sistema operativo o una nueva pieza de código.
Beneficio 2:
Si el sistema operativo de código ha sido bien probado, con lo que se ahorra el tiempo de depuración. Este es realmente un buen beneficio.
Pero si la aplicación sólo tiene unos 5 tareas, creo que no es muy complicado escribir su propio código utilizando el temporizador de interrupción y de fondo en bucle.
Un non-preemptive OS aquí se refiere a un comercial / gratis / OS con un programador no preferente.
Cuando he publicado esta pregunta, yo principalmente pensar en algunos sistemas operativos, como:
(1) un BESO Kernel (Una Pequeña NonPreemptive RTOS - reclamada por su página web)
http://www.frontiernet.net/~rhode/kisskern.html
(2) uSmartX (ligero, RTO - reclamada por su página web)
(3) FreeRTOS (Es un preventivo, RTO, pero como yo lo entiendo, puede ser configurado como un non-preemptive RTOS)
(4) de uC/OS (similares como FreeRTOS)
(5) el legado de OS / programador de código en algunas empresas (generalmente hecha y mantenida por la empresa internamente)
(No se puede agregar más enlaces debido a la limitación de nuevo StackOverflow cuenta)
Como yo lo entiendo, un non-preemptive OS es una colección de estos códigos:
(1) un programador con non-preemptive de estrategia.
(2) instalaciones para la tarea de la comunicación, exclusión mutua, la sincronización y el control del tiempo.
(3) la gestión de la memoria.
(4) otros útiles instalaciones / bibliotecas como Sistema de Archivos, pila de red, interfaz gráfica de usuario y etc. (FreeRTOS y admisión a la uC/OS ofrece estos, pero no estoy seguro de si todavía funciona cuando el programador está configurado como no preferente)
Algunos de ellos no están siempre allí. Pero el programador es una necesidad.