Interesante, también estoy tratando de lograr el mismo objetivo. Por lo que yo entiendo, tienes que usar la compilación condicional. Puede lograr esto usando una combinación de tres elementos básicos:
- Un diseño de software inteligente donde las partes independientes de la arquitectura están aisladas de las partes específicas de la arquitectura.
- Compilación condicional usando #define #if #else
- Compilación condicional usando selección de archivos en Makefiles
Para decirlo en términos simples, no hay nada teórico complicado en hacer esto, se trata de trabajar mucho para identificar lo que puede hacer en ambas arquitecturas y cómo abstraer sus especificidades. El diseño es la parte importante. Pregúntese:
- ¿Cuáles son las abstracciones que proporciona el sistema operativo?
- ¿Qué abstracciones estoy usando para implementar el sistema operativo?
- ¿Cómo puedo implementarlos para las arquitecturas A, B, …?
- ¿Qué tienen en común?
Puede intentar construir un diseño genérico / perfecto desde el principio. O puede intentar comenzar con un diseño simple que considere lo suficientemente genérico. Luego intente adaptarlo a una nueva arquitectura, mejorar el diseño, etc. Este es un tipo de proceso iterativo.
- ¿Qué es el embalaje en un microcontrolador?
- ¿Cuáles son algunos de los mini proyectos interesantes basados en sistemas integrados para estudiantes de ECE?
- ¿Cómo funciona un cristal piezoeléctrico en el microcontrolador 8051?
- ¿Cuáles son las mejores instituciones de formación de sistemas integrados en Banglore? ¿Y por qué?
- ¿Qué controlador se usa actualmente en las industrias, PIC o ARM7?
Tenga en cuenta que estoy usando ideas de ingeniería de software aquí. Desarrollo ágil contra no ágil. tú decides.
Finalmente, puede echar un vistazo a los sistemas operativos relativamente pequeños que ya lograron ese hito: el sistema operativo de código abierto para Internet de las cosas, el sistema operativo amigable para Internet de las cosas. O, si se siente valiente, puede echar un vistazo a Linux, FreeBSD, Plan9 y el gran NetBSD (su objetivo es exactamente eso, poder ejecutar en la mayor cantidad de plataformas posible)
¡¡¡Buena suerte!!! Siempre es agradable encontrar a otras personas tratando de construir su propio sistema operativo