Cómo portar el sistema de archivos en magicarm2410
La placa que tengo es el MagicARM2410 de Zhou Ligong de la escuela. Originalmente tenía el gestor de arranque de Zhou Ligong (también debería ser U-boot), pero solo tiene un archivo bin y no se proporciona ningún código fuente (lo cual). es muy vergonzoso).
El entorno de desarrollo es mi máquina virtual Vmware Workstation ACE versión Fedora12 esroot.
Lectura relacionada: Dirección de descarga del código fuente de U-Boot/Linux/2011-07/38897.htm
Recomiendo encarecidamente la versión ACE de Vmware Workstation, el rendimiento es realmente potente, solía hacerlo tengo fedora8 La imagen de la máquina virtual no se puede abrir con otras versiones de Vmware Workstation, o no se puede ingresar a la interfaz gráfica. La versión ACE se puede abrir directamente.
Después de usar Fedora12 durante los últimos días, todavía me siento muy bien. Hay que decir que es la mejor versión de Fedora actualmente. No ha habido problemas con la compilación cruzada y otras operaciones, y la función de red también es muy buena.
Al configurar la máquina virtual, elija utilizar un puente de red para que Fedora12 pueda acceder fácilmente a la carpeta que se encuentra debajo. la ventana (la carpeta debe estar configurada para disfrutar) y también puede acceder fácilmente a Internet. Las personas que trabajan con Linux integrado
deben saber lo importantes que son los dos puntos anteriores.
¡esroot es mi arma secreta! Es un entorno de desarrollo de Linux integrado creado con chroot o un IDE imitador, que puede mejorar significativamente la eficiencia del desarrollo y administrar de manera efectiva los archivos relacionados con el desarrollo. Lo escribiré cuando tenga tiempo.
Ya hay mucha información en Internet sobre cómo trasplantar U-boot a 2410 (referencia/Linux/2011-02/32772.htm),
Básicamente son basado en smdk2410 (soporte de arranque U) y luego realice algunas modificaciones en su propia placa. Podemos considerar los dispositivos de la placa que se utilizarán durante la etapa del gestor de arranque. Si
su U-boot solo se usa para descargar el kernel (y el disco ram, etc.) e iniciar el sistema, entonces cpu, sdram, ni flash, nand
flash, serial y NIC son básicamente Es suficiente. smdk2410 usa la NIC cs8900, mientras que MagicARM2410 usa la DM9000. smdk2410 no tiene inicialización flash nand
, por lo que también debe modificarse.
El problema que tengo es: DM9000 no funciona.
Primero, hablemos de lo que hice al principio:
Para usar DM9000, necesitas modificar my2410.h (copiado de smdk2410.h), eliminar el contenido original de cs8900. y reemplácelo con contenido DM9000.
Como se muestra a continuación:
#define CONFIG_DRIVER_DM9000 1
#define CONFIG_DM9000_BASE 0x18000300
#define DM9000_IO 0x18000300
#define DM9000_DATA 0x18000304 p> p>
#define CONFIG_NET_MULTI
#defineCONFIG_DM9000_USE_16BIT 1
#define CONFIG_DM9000_NO_SROM 1
//#define CONFIG_DM9000_DEBUG 0x01
La dirección base de DM9000 es 0x18000300. Determinado por la arquitectura de hardware de MagicARM2410. Utiliza nGCS3 para la selección de chip del DM9000, por lo que la dirección base es
0x18000300. CONFIG_DM9000_NO_SROM define no leer la dirección MAC de la EEPROM en el chip del DM9000, este valor debe establecerse porque
Los pines de la EEPROM en el chip del DM9000 en MagicARM2410 no están conectados en absoluto, cómo leer la MAC cuando ¿Todas son direcciones vacías?
Si la opción CONFIG_DM9000_DEBUG está configurada en "true", el puerto serie dm9000x.c (controlador DM9000) se habilitará para generar más información de depuración.
Luego hice algunas modificaciones a dm9000x.c y agregué dm9000_init(dev, bis) al final de la función dm9000_initialize(bd_t
*bis). De esta manera, U-boot inicializará el DM9000 una vez después del arranque; de lo contrario, solo lo inicializará cuando use la tarjeta
(por ejemplo, usando PING, comandos tftp, etc.).
Esto parece no ser un problema. Después de encender el puerto serie, puede compilar y descargar en la placa:
U-Boot 2009.11 (30 de diciembre de 2009 - 00:04:33)
DRAM: 64 MB
Flash: 2 MB
** Advertencia: CRC incorrecto, uso del entorno predeterminado
Entrada: serial
Salida: serial
p>
Err: serial
Net: dm9000
SMDK2410 #
dm9000_init
Restablecer DM9000
Restablecer DM9000, 1er reinicio
Restablecer DM9000, 2do reinicio
ERROR: reiniciando DM9000 -gt no responde<
dm9000 no se encontró en 0x18000300 id: 0x00000000
La luz indicadora de la tarjeta de red no se enciende y la PC muestra que la conexión local se ha desconectado.
Surge un problema.
Luego
haz{
google, baidu...
Modificar
Compilar
Descargar
p>Enciende la computadora
Prueba
}mientras (la tarjeta de red está normal)
Pero no salí de esta Círculo vicioso durante 5 días. Poco a poco perdí el gusto por la comida y el sueño. Inquieto...
Sin embargo, durante el proceso de depuración, también aprendí más y más sobre U-boot. Al mirar dm9000x.c, veo que el primer paso de inicialización, dm9000_reset, no ha pasado. En este paso,
el programa detectará si el ID de DM9000 es 0x90000a46. De lo contrario, imprimirá "restableciendo DM9000 -gt; no
respondiendo"
. Sigo deprimido...
Hasta hoy, después de que decidí mirar detenidamente los datos del chip DM9000, finalmente tuve un destello de inspiración y descubrí un pin RST. Este es un pin de reinicio de hardware, reinicio alto. ¡En el osciloscopio! El resultado... ¡siempre es alto! Reiniciar siempre, ¿cómo funciona el chip?
Tierra directa, reinicio, ¡la NIC se enciende! Segundo reinicio
DM9000 i/o: 0x18000300, id: 0x90000a46
DM9000: ejecutándose en modo de 16 bits
MAC: 00:14:97: 0f :00:00
Entonces la descarga de ping y tftp es normal. Lo encontré. Estoy de buen humor :)
MAC: 00:00:97:0f:00:00:00