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.
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.
¿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.
posipiet
Wouter van Ooijen
Lucas
Kortuk