Hardware para el desarrollo del sistema operativo [cerrado]

4

Estoy muy interesado en la teoría y el diseño del sistema operativo y decidí que me gustaría jugar con el desarrollo de un sistema operativo. Tengo antecedentes en el ensamblaje de x86 y también he buscado en ARM. Me gustaría una junta de desarrollo para desarrollar el sistema operativo para. ¿Alguien ha tenido experiencia con el desarrollo de SO y / o puede sugerir algún hardware para usar?

Una tabla que estoy considerando es la LPC1769 LPCXpresso board .

Soy consciente de que podría usar una máquina virtual, pero me gustaría usar el hardware real.

    
pregunta Luke

2 respuestas

7

Usa una PC normal. Estos vienen con procesadores x86 y todo el otro hardware y son exactamente el tipo de plataformas que se benefician de los sistemas operativos. Incluso una vieja PC junker estaría bien para esto. Se desarrolla en una PC normal que ejecuta un sistema operativo real y se prueba en el klunker. La otra ventaja de esto es que es gratis. Seguramente tienes una PC o una placa base viejas en algún rincón polvoriento, o conoces a alguien que hace eso y aún no ha podido tirar.

    
respondido por el Olin Lathrop
2

¿Qué estás buscando? ¿Un sistema operativo completo para PC o, más bien, un RTOS (sistema operativo en tiempo real)? Si va a escribir su propio sistema operativo para PC, sugeriría una vieja PC como dijo Olin.

Coincidentemente, actualmente estoy tratando (solo por diversión) de escribir mi propio RTOS en un PIC24FJ32GA002 pequeño (lo tenía por ahí, fácil de trabajar y de probar). Este es un simple controlador de 16 pines de 16 bits y 16 bits, pero funciona en mi caso. Actualmente tengo un núcleo de tareas que funciona, por lo que puedo cambiar de tareas, usar retrasos manejados por el RTOS, etc. Ahora pasar a funciones más abstractas con memoria y comunicación periférica (manejada por el RTOS).

No creo que necesites un microcontrolador monstruo para ejecutar ningún RTOS. El kernal de tareas solo consume 500 ~ 600 instrucciones y alrededor de 300 ~ 400 bytes de RAM para 2 (+ 1idle) tareas. Incluso este dispositivo de memoria baja tiene 10.5k instrucciones y 8KB de RAM, por lo que ahora solo uso alrededor del 5%.

Para un RTOS es muy importante que la CPU admita algún tipo de cambio de pila fácil, para que pueda cambiar el contexto de la aplicación rápidamente. Por ejemplo, sé que algunos de los PIC más antiguos (como un PIC16 o un dispositivo PIC18) tienen pilas basadas en hardware. En el PIC24 estoy almacenando el contexto (empujando los registros de la CPU en la pila), cambiando el puntero de la pila (a la pila de otra tarea) y reanudando el contexto (sacando registros de la CPU de la pila).

Los chips ARM no tienen una pila basada en hardware, por lo que están listos para funcionar. Tenga en cuenta que la placa LPCXpresso viene con su propio compilador y entorno de desarrollo. Esto significa que debe utilizar el compilador y el entorno code_red para el depurador integrado. El depurador no funciona con otro entorno, porque el software para el depurador es cargado por su propio IDE. La versión gratuita del compilador también tiene una restricción de código de 128KB. Esta es una cantidad de código que se puede depurar, creo. 128KB es suficiente para comenzar con un pequeño RTOS.

Siempre puede obtener su propio programador JLINK o JTAG, pero tendría que conectar el puerto SW o JTAG a la placa LPC1769. Aparte de eso, el LPC1769 tiene muchos recursos y periféricos para comenzar a funcionar. No sé por mi experiencia lo buenas que son las herramientas de depuración en el LPCxpresso cuando está depurando cosas realmente de baja calidad (como el cambio de tareas). En el PIC24 tuve que adivinar lo que está pasando, el MPLAB no capturó correctamente los complejos ... Sin embargo, todavía es posible. Para ARM también hay un montón de RTOS y recursos para echar un vistazo.

    
respondido por el Hans

Lea otras preguntas en las etiquetas