¿Es necesario comprar una placa de desarrollo para aprender integrado? ¿Existe algún software de simulación?
2. Arm9 tiene MMU, pero arm7 no. sugerencias sobre este tema. Busque en línea o libros específicos.
3. Te sugiero que consultes el sitio web de Zhou Ligong. Es demasiado barato, inestable, difícil de usar y te hace perder el tiempo.
La siguiente es una breve introducción a Tianyancha:
1. El origen y desarrollo de Tianyan
En noviembre de 2002, por casualidad, un grupo de sistemas operativos. entusiastas Charlando en línea, creamos un grupo de interés de TM-Linux, con la esperanza de hacer algo interesante. Chen Yu, entonces becario postdoctoral en el Departamento de Ciencias de la Computación de la Universidad de Tsinghua, propuso construir un simulador de hardware de placa de desarrollo integrado implementado por software que pudiera ejecutar varios sistemas operativos en el simulador, de modo que pudiera aprender e investigar directamente sistemas operativos sin una placa de desarrollo. Al principio, Chen Yu lo hizo solo. Primero, conoció algunos proyectos similares en el mundo y descubrió que la famosa organización μClinux había implementado un software simulador de armulator (que se ejecuta en un sistema Linux) que podía simular Ateml AT91 (basado en la CPU ARM7TDMI). ) placa de desarrollo, μClinux puede ejecutarse en armulator (su dirección web es http://www.uclinux.org/pub/uCLinux/utilities/armulator/). Entonces, basándose en esto, Chen Yu propuso el proyecto SkyEye basándose en el método de implementación del armulador. El objetivo es permitir que SkyEye simule varias placas de desarrollo integradas y periféricos convencionales, e implementar un marco de simulación de hardware escalable para permitir que se puedan ejecutar más sistemas operativos integrados. Ojo del cielo. El proyecto SkyEye se lanzó oficialmente el 1 de diciembre de 2002. El primer trabajo completado por Chen Yu fue trasplantar el armulador al entorno cygwin/windows, y los resultados fueron aceptados por la organización μClinux. Inmediatamente después, Li Ming, estudiante de maestría en el Departamento de Ciencias de la Computación de la Universidad de Tsinghua, se unió al desarrollo de SkyEye. Ocho días después, se lanzó la primera versión de SkyEye y cuatro días después, se lanzó μC/OS-II de SkyEye. Durante este período, también se creó el sitio web de Tianyan. Inmediatamente después, estudiantes de escuela como Yang Ye, Wang Liming y Yin Shouyi también se unieron al desarrollo de Tianyan, aportando nueva vitalidad a Tianyan, y Tianyan entró en una nueva etapa de desarrollo. Actualmente, visitando el sitio web de SkyEye (http://www.skyeye.org/) y el foro de SkyEye en Linux Commune (http://www.linuxfans.org), puede conocer los últimos desarrollos de SkyEye e intercambiar información sobre sistemas integrados Para cuestiones de desarrollo, también puede descargar el software y los documentos más recientes relacionados con SkyEye en http://gro.clinux.org/projects/skyeye/.
2. Antecedentes de SkyEye
Si has visto la película "The Matrix" (también conocida como "The Matrix"), creo que el mundo ilusorio descrito en la película desaparecerá. Te atrae profundamente, al menos es una de las películas de ciencia ficción más imaginativas que jamás hayamos visto. Quizás podamos pensar en Sky Eye como una "matriz", y los diversos programas que se ejecutan en Sky Eye son las personas en esta "matriz". Creamos Tianyan y escribimos programas que se ejecutan en Tianyan para comprender profundamente los misterios de las computadoras y saborear el sentimiento del "Creador". Cuando vemos varios software Linux, μClinux, μC/OS-II... y vemos varios software Linux, μClinux, μC/OS-II... ejecutándose "felizmente" en SkyEye, este tipo de sensación es maravillosa.
Para aquellos que quieran desarrollar y aprender software de sistemas integrados, o quieran estudiar la investigación y el desarrollo de sistemas operativos como Linux integrado y algún software de sistema subyacente (como TCP/IP, etc.), puede ser Hay varios problemas en los siguientes aspectos: (1) A menudo, debido a la falta de fondos, suficientes placas de desarrollo de hardware y un entorno de desarrollo de software completo, el análisis del software más reciente en libros relacionados no es lo suficientemente completo.
El análisis del software más reciente no es lo suficientemente completo como para permitir una investigación y un desarrollo en profundidad de software integrado. (2) El diseño y desarrollo de software de alto nivel generalmente no necesita considerar los detalles de implementación del hardware subyacente. Si se lleva a cabo directamente en un entorno de hardware específico, es posible que se quede atrapado en los detalles específicos del hardware durante el desarrollo. investigación, y no podrá dedicar su energía a ello. Invierta en diseño y desarrollo de software de alto nivel. (3) Si el entorno de desarrollo del hardware no es estable (esto sucede con frecuencia) y no sabe mucho sobre el hardware específico, es posible que dedique mucho tiempo innecesario a solucionar problemas. (4) Si desea intentar diseñar su propio sistema operativo, desarrollar primero en un simulador de software que proporcione depuración a nivel de código fuente puede mejorar en gran medida su progreso de desarrollo.
Para aquellos que quieran comprender y aprender los principios de implementación de los sistemas operativos generales, los sistemas operativos Linux/μCLinux o la implementación de software a nivel de sistema como TCP/IP, el método general actual es leer Libros y código fuente, este es un método de aprendizaje estático que es menos eficiente, aburrido y carece de la sensación de práctica personal. Para analizar y desarrollar software en profundidad, es necesario programar manualmente. No puede simplemente leer libros y códigos. Solo mediante la práctica se puede dominar el contenido central del diseño de software. Los problemas y necesidades anteriores llevaron al nacimiento del proyecto SkyEye.
3. El objetivo y la importancia de SkyEye
SkyEye es un proyecto de software OpenSource con el nombre chino "Tianmu". El objetivo de SkyEye es implementar un entorno de desarrollo integrado de software puro en plataformas comunes de Linux y Windows, simulando sistemas informáticos integrados comunes (asumidos aquí). El objetivo de SkyEye es implementar un entorno de desarrollo integrado de software puro en plataformas comunes de Linux y Windows para simular sistemas informáticos integrados comunes (se supone que "simulación" y "emulación" tienen básicamente el mismo significado: pueden ejecutar varias operaciones integradas); sistemas, como μCLinux y μC/OS-II, así como varios software de sistema (como TCP/IP, subsistema de gráficos, subsistema de archivos, etc.), y se pueden realizar análisis y pruebas a nivel de código fuente en SkyEye.
Existen muchos tipos de emuladores de software puro, como emuladores que simulan la lógica de sincronización del chip, emuladores que solo simulan instrucciones de la CPU, emuladores que simulan toda la placa de desarrollo de hardware y emuladores que simulan PDA. También hay algunos emuladores o simuladores de software puro, como el emulador SimOS de la Universidad de Stanford, que puede simular CPU de la serie MIPS y periféricos relacionados, y puede ejecutar el sistema operativo y el software Irix de SGI en este momento básicamente se ha detenido. un emulador que simula el conjunto de instrucciones de PowerPC y actualmente solo admite aplicaciones de línea de comandos simples; xcopilot es un emulador de PDA escrito por Greg Hewgill por preferencia personal. Simula la CPU M68K y proporciona simulación para desarrolladores de software basados en PalmOS. es un proyecto de código abierto que simula una CPU x86. Actualmente es compatible con CPU AMD64 y puede ejecutar Linux en él. Puede ejecutar el sistema operativo Linux. Mientras que otros software de emulación comerciales, como vmware y virtualPC, pueden emular una computadora x86 real, el emulador Virtutech Simics puede emular una variedad de CPU y hardware y es lo suficientemente potente para revisar tanto el hardware como el software del sistema.
SkyEye es un simulador de nivel de instrucción que puede simular varias placas de desarrollo integradas y admite varios conjuntos de instrucciones de CPU. El sistema operativo que se ejecuta en SkyEye no sabe que se está ejecutando en un entorno virtual y los desarrolladores pueden depurar el sistema operativo y el software del sistema a través de SkyEye. Dado que el objetivo de SkyEye no es verificar la lógica del hardware, sino ayudar en el desarrollo, la depuración y el aprendizaje del software del sistema, existen ciertas diferencias en la implementación entre SkyEye y el entorno de hardware real. SkyEye no garantiza que la sincronización del reloj sea completamente consistente con el hardware, y la transparencia del software simplifica la simulación del hardware hasta cierto punto. El beneficio de esto es que SkyEye funciona de manera más eficiente.
El lanzamiento de SkyEye tiene los siguientes tres significados:
SkyEye puede ingresar fácilmente al vasto mundo del aprendizaje y desarrollo de software de sistemas integrados a través de un entorno de simulación integrado. Especialmente para los usuarios que carecen de un entorno de desarrollo de hardware y de software integrado, esta será una herramienta de aprendizaje y un método de desarrollo muy eficaz, porque todo el sistema de software de SkyEye es de código abierto y se basa en el acuerdo GPL (excepto μCOS-II). Por lo tanto, si desea aprender el sistema operativo Linux o desarrollar sistemas integrados pero no tiene soporte de hardware, ¡el software del entorno de simulación SkyEye es una buena opción!
Si desea aprender software de sistema que sea independiente de hardware específico (como pila TCP/IP, etc.), usar SkyEye puede mejorar efectivamente la eficiencia de su trabajo porque puede desarrollar directamente en μCOS-II de SkyEye. y μCLinux y depuración, ya existen varios controladores para manejar hardware específico, y también hay un entorno de depuración a nivel de código fuente, solo debe preocuparse por el diseño y la implementación de la lógica de alto nivel.
SkyEye en sí es un sistema de proyectos abierto y se puede dividir en múltiples sistemas de subproyectos independientes. Al participar en varios subproyectos de SkyEye y comunicarse y colaborar con todos, podrá aprender, analizar y dominar aún más el kernel de Linux y dominar la programación de CPU integrada ARM.
En el campo de las CPU integradas de 32 bits, las CPU de la serie ARM representan una gran proporción y ARM7TDMI es actualmente uno de los núcleos de CPU ARM más utilizados, por lo que SkyEye primero eligió ARM7TDMI como CPU de destino para Kernel de simulación, por supuesto, SkyEye admitirá más tipos de CPU en el futuro. Actualmente, puede ejecutar los siguientes programas en SkyEye. Actualmente, SkyEye puede ejecutar y depurar los sistemas operativos ARM Linux, μClinux, μC/OS-II y LwIP (la famosa implementación TCP/IP integrada), MiniGUI (el famoso TCP/IP integrado). implementación) a nivel de código fuente, sistema GUI integrado) y otro software del sistema, puede utilizar SkyEye para aprender, analizar y desarrollar la implementación de este software del sistema y comprender la programación de CPU integrada ARM. Todo esto se puede hacer en un entorno de software puro. Al analizar la propia implementación de SkyEye, los desarrolladores de software de sistemas obtendrán una comprensión más profunda de hardware como ARM y los chips Ethernet 8019as (compatibles con NE2000).
SkyEye no puede sustituir las funciones de hardware como las placas de desarrollo, pero facilita la entrada al vasto mundo del software integrado. Dado que SkyEye se basa en GDB, los usuarios pueden utilizar fácilmente varios métodos de depuración proporcionados por GDB para depurar el software en el sistema de simulación SkyEye a nivel de código fuente. También pueden realizar varios análisis, como análisis de puntos críticos de ejecución, análisis de cobertura de ejecución de programas, etc. etc. . Dado que SkyEye proporciona código fuente y documentación relacionada, los usuarios experimentados pueden modificarlo y ampliarlo.