Hardware para el desarrollo de sistemas operativos [cerrado]

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

Una placa que estoy considerando es la placa LPC1769 LPCXpresso .

Soy consciente de que podría usar una VM, pero me gustaría usar hardware real.

Algunas preguntas: ¿Qué tan bajo nivel quieres empezar? ¿Planea escribir su BIOS? ¿Ya estudiaste Minix?
Siguiente pregunta: ¿Qué nivel de gama alta desea obtener? ¿Cree su propia pila USB, TCP/IP, sistemas de archivos, GUI, etc.?
El desarrollo de BIOS no está en el futuro inmediato, pero si la opción estuviera allí, sería genial. En cuanto al otro extremo, intentaré escribir pilas USB y TCP/IP, GUI, etc.
Esta pregunta está buscando cualquier sistema que pueda ser bueno para un sistema operativo, cualquier sistema podría usarse para hacer un sistema operativo casi y sería una buena opción.

Respuestas (2)

Usa una PC normal. Estos vienen con procesadores x86 y todo el resto del hardware y son exactamente el tipo de plataformas que se benefician de los sistemas operativos. Incluso una vieja PC chatarra estaría bien para esto. Desarrolla en una PC normal con un sistema operativo real y prueba en el klunker. La otra ventaja de esto es que es gratis. Seguramente tienes alguna PC o placa base vieja sentada en algún rincón polvoriento, o conoces a alguien que lo hace y ya lo ha tirado.

Su idea inicial de optar por un ARM es sensata. Si quisiera escribir un sistema operativo experimental, no tocaría x86 ni con un poste. x86 no es un buen entorno para comenzar la programación de bajo nivel. Querría algo sin segmentación que tenga un buen soporte de compilador cruzado.
@posipiet, dijo que tenía experiencia en x86.
Una PC normal también fue mi idea original, pensé que primero vería si alguien tenía alguna otra sugerencia.

¿Que eres después? ¿Un sistema operativo de PC completo, o más bien un RTOS (sistema operativo en tiempo real)? Si va a escribir su propio sistema operativo de PC, sugeriría una PC antigua como dijo Olin.

Coincidentemente, actualmente estoy intentando (solo por diversión) escribir mi propio RTOS en un pequeño PIC24FJ32GA002 (lo tenía por ahí, fácil de trabajar y probar). Este es un controlador simple de 16 bits y 16 MIPS de 28 pines, pero hace el trabajo en mi caso. Actualmente tengo un kernel de tareas funcionando para poder cambiar de tareas, usar retrasos manejados por el RTOS, etc. Ahora paso a características más abstractas con memoria y comunicación periférica (manejada por el RTOS).

No creo que necesites un microcontrolador monstruoso para ejecutar cualquier RTOS. El núcleo de la tarea solo consume 500~600 instrucciones y alrededor de 300~400 bytes de RAM para 2 (+1 inactivas) tareas. Incluso este dispositivo con poca memoria tiene 10,5 k de instrucciones y 8 KB 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 dispositivo PIC16 o PIC18) tienen pilas basadas en hardware. En el PIC24 estoy almacenando el contexto (empujando los registros de la CPU a la pila), cambiando el puntero de la pila (a la pila de otra tarea) y reanudando el contexto (extrayendo los 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 usar el compilador y el entorno code_red para el depurador integrado. El depurador no funciona con otro entorno, porque el software del depurador lo carga su propio IDE. La versión gratuita del compilador también tiene una restricción de código de 128 KB. Esta es la cantidad de código que se puede depurar, creo. 128 KB es suficiente para empezar con un RTOS pequeño.

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. No sé por mi experiencia qué tan buenas son las herramientas de depuración en el LPCxpresso cuando estás depurando cosas realmente de gama baja (como el cambio de tareas). En el PIC24 tuve que adivinar lo que estaba pasando, MPLAB no capturó correctamente los bloqueos. Sin embargo, todavía es posible. Para ARM también hay muchos RTOS y recursos disponibles para echar un vistazo.