Estoy usando ARM Cortex-R4 para mi sistema. Tiene una Unidad de Protección de Memoria en lugar de una Unidad de Administración de Memoria. Efectivamente, esto significa que hay hardware dedicado para la protección de la memoria, pero que hay una asignación de uno a uno entre las direcciones físicas y virtuales. Estoy un poco confundido acerca de a qué Linux debería ir: kernel estándar de Linux con MMU deshabilitado o uCLinux.Ejecutando MMU-less Linux en ARM Cortex-R4
En la placa de evaluación de ARM, he ejecutado el kernel estándar compilado con MMU deshabilitado. Usé el sistema de archivos cramfs que está disponible en el sitio web oficial de ARM. Después de que el kernel arranca, estoy en el caparazón, pero no pude hacer mucha experimentación ya que descubrí que, la mayoría de las veces, el shell deja de responder (particularmente cuando presiono "tab" para completar automáticamente).
Así que todavía no estoy seguro de si el kernel sin MMU debería ejecutarse sin problemas si uso el sistema de archivos correcto. Además, ¿qué distribución (buildroot?) Debería usar para Linux no VM?
Cualquier idea o sugerencia es bienvenida.
Parece que necesita averiguar qué es exactamente lo que está fallando y por qué, en lugar de especular que es el kernel o el sistema de archivos. Si puede obtener una segunda ruta en el tablero, digamos tanto uart y red, eso ayudaría, ya que puede ver si uno permanece vivo incluso cuando el otro se bloquea. También podría hacer algo como hacer que un daemon de espacio de usuario escriba en el terminal (o incluso un módulo kernel printk) periódicamente para decir "aún aquí", al menos eso lo ayudará a determinar si su caparazón se cuelga mientras el resto del sistema se ejecuta. o si el núcleo está colgando. O en respuesta a un botón de gpio ... –
La sugerencia de printk() es probablemente mejor que un proceso de espacio de usuario. Correr en Real = modo Virtual es desafiante, en el mejor de los casos. Mi voto es para uCLinux. –