Inicie los comandos relacionados con el kernel a través de pmon
Carga de red:
cargar tftp: // servidor-ip / vmlinux
initrd tftp: //server‐ip/initrd.gz
g consola = tty consola = ttyS0,115200
Arranque desde u disco:
cargar (usb0,0) / vmlinux
initrd (usb0,0) /initrd.gz
g consola = tty consola = ttyS0,115200
Explicación del comando:
Comando: cargar
Formato: cargar <autoarchivo>
Explicación: El comando de carga es un comando muy importante en PMON. La función es cargar un archivo elf en la memoria (aquí solo se almacena en la memoria, pero no se graba en la memoria flash). El proceso de carga es un proceso general de procesamiento automático de la redirección de archivos elf y otras operaciones basadas en la información de el archivo elf, por lo que no es necesario especificar la dirección de memoria para cargar, el comando de carga se completará automáticamente.
如: cargar tftp: // servidor ‐ ip / vmlinux
El comando anterior es cargar el kernel desde el servidor tftp de red en la memoria.
Tales como: load / dev / mtd0b
El comando anterior es cargar un archivo elf desde el principio de la primera partición de nandflash en la memoria, donde generalmente se almacena el kernel, que es otra forma de cargar el kernel.
Nota: El vmlinux aquí es un archivo elf. Si el archivo cargado especificado no es un archivo elf, se mostrará un error.
Comando: initrd
Formato: initrd <archivo img>
Explicación: cargar imagen initrd
Comando: g
Formato: g [‐s] [- b bpaddr] [- e dirección] [‐‐ args]
Explicación: El comando g es un comando muy importante en PMON, que ejecuta directamente el programa desde la dirección de memoria especificada
Tales como: g -e addr
Como en el comando anterior, el programa se ejecuta directamente desde la dirección de memoria addr. La premisa del funcionamiento normal es que un programa ejecutable se haya almacenado en la memoria al comienzo de addr. Addr es la dirección de entrada de este programa. Por ejemplo , sabemos que la dirección de memoria 0x80010000 es el código pmon. Almacene la dirección de inicio del segmento, ejecute g -e 0x80010000 volverá a ejecutar el código pmon, que es equivalente a reiniciar el PMON (el pmon no se copiará del parpadea en este momento)
cargar tftp: // servidor-ip / vmlinux
g consola = ttyS0,115200 rdinit = / sbin / init
El comando anterior se usa junto con el comando de carga. Una vez completada la carga, use el comando g para ejecutar automáticamente el kernel desde la dirección de entrada del kernel cargada. Este es el parámetro "console = ttyS0,115200 rdinit = / sbin / init "son los parámetros de inicio del kernel.
Variables de entorno relacionadas con el inicio
Las variables de entorno relacionadas con el inicio son al1, rd, append, que corresponden al kernel, la ruta initrd y los parámetros de inicio, por ejemplo
Puede configurarse para:
establecer al1 / dev / mtd0
establecer rd /dev/fs/yaffs2@mtd1/initrd.gz
establecer adjuntar consola = tty consola = ttyS0,115200
Explicación del comando:
Comando: establecer
Formato: establecer [nombre] [valor]
Explicación: Verifique las variables de entorno en pmon y establezca el nombre de la variable de entorno en valor
Tales como: set (ver y mostrar todas las variables de entorno en pmon);
establecer wk kkk (agregar o modificar el valor del entorno wk a kkk)
pmon flash kernel y sistema de archivos al método nand
Debe borrarse antes de programar, el comando es el siguiente:
mtd_erase / dev / mtd0r // 0 significa partición, el sufijo r significa borrar sin saltarse mal rápidamente
mtd_erase / dev / mtd1r
devcp tftp: // servidor ‐ ip / vmlinux / dev / mtd0
devcp tftp: //server‐ip/roofs‐yaffs2.img / dev / mtd1y
establecer al1 / dev / mtd0
establecer agregar consola = ttyS0,115200 rdinit = / sbin / init root = / dev / mtdblock1 rw
rootfs = yaffs2
Explicación del comando:
Comando: devcp
格式: devcp <src‐dispositivo> <desc‐dispositivo>
Explicación: El comando devcp debería ser un comando importante en PMON.
La implementación es: abra los dos dispositivos src-device y desc-device, lea una cierta cantidad de datos de bytes de src-device, escríbalos en el dispositivo desc-device y cierre estos dos dispositivos después de la finalización.
如: devcp tftp: // servidor ‐ ip / vmlinux / dev / mtd0
El comando anterior es para recibir y leer el kernel vmlinux desde el servidor tftp y escribirlo en la primera partición de nandflash Este es un comando comúnmente usado para programar el kernel para flash.
如: devcp tftp: //server‐ip/roofs‐yaffs2.img / dev / mtd1y
El comando anterior es para recibir y leer el archivo de imagen yaffs2 rootfs-yaffs2.img del sistema de archivos raíz desde el servidor tftp
Flash a la segunda partición de nandflash. Este es un comando de uso común para actualizar el sistema de archivos yaffs2 a nandflash.
Comando: mtdparts
Formato: mtdparts
Explicación: muestra la información de la partición actual de nandflash.
Comando: mtd_erase
Formato: mtd_erase <mtd-device>
Explicación: Limpiar una partición de nandflash
(Borre la primera partición de nandflash, omita los lugares que ya son bloques defectuosos y no intentará borrar los lugares que ya son bloques defectuosos);
borrado_mtd / dev / mtd0r
(Borre la primera partición de nandflash. En este momento, intentará borrar todos los bloques, incluso si es un bloque malo, intentará borrarlo.
Excepto operación).
Ver y modificar dtb bajo pmon
La línea de comandos de Pmon admite, visualiza, elimina y vuelve a grabar dtb.
Vea el comando dtb en Pmon:
Print_dtb / Imprime todo el contenido de dtb
Print_dtb / soc / dc @ 0x400c0000 imprime todo el contenido de dc
Eliminar dtb en Pmon
rm_dtb_node / eliminar todo el dtb
rm_dtb_node / soc / hda @ 0x400d00000 eliminar tenía contenido
Reprogramar dtb bajo pmon
dtb pasará la información del tamaño de la memoria al kernel. Si esta parte del contenido se pasa incorrectamente, causará errores impredecibles. Si vuelve a escribir el contenido interno, debe leer el contenido de la memoria a través del comando print_dtb y actualizarlo al nuevo archivo dts (el tercer procesador no transmite información de la memoria).
La ejecución de make dtb en el directorio de compilación de pmon generará el archivo Bonito3a3000_7a.dtb. Este archivo se puede grabar por separado.
Programación de comandos y programación consistente con pmon
Introducción a otros comandos
Comando: d1
Formato: d1 <addr> <num>
Explicación: abreviatura de visualización
Presione unsigned char para acceder y mostrar los valores numéricos de contenido comenzando por la dirección addr.
Tales como: d1 0x85000000 0x10
Muestra 0x10 bytes (8 bits) desde la dirección de memoria 0x85000000, 0x85000000-0x8500000f
Comando: d2
Formato: d2 <addr> <num>
Explicación: abreviatura de visualización
Presione (unsigned short) para acceder y mostrar los valores de contenido numérico comenzando por la dirección addr.
Tales como: d2 0x85000000 0x10
Muestra 0x10 valores de tipo corto sin firmar (16 bits) de la dirección de memoria 0x85000000, 0x85000000-0x8500001e
Comando: d4
Formato: d4 <addr> <num>
Explicación: abreviatura de visualización
Presione (unsigned long) para acceder y mostrar los valores numéricos de contenido comenzando por la dirección addr.
Tales como: d4 0x85000000 0x10
Muestra 0x10 valores largos sin firmar (32 bits) de la dirección de memoria 0x85000000, 0x85000000-0x8500003c
Comando: d8
Formato: d8 <addr> <num>
Explicación: abreviatura de visualización
Presione (unsigned long long) para acceder y mostrar los valores de contenido numérico comenzando por la dirección addr.
Tales como: d8 0x85000000 0x10
Muestra 0x10 valores largos sin firmar (64 bits) de la dirección de memoria 0x85000000, 0x85000000-0x85000078
Comando: m1
格式: m1 <addr> <valor>
Explicación: modificar taquigrafía
Presione carácter sin firmar para acceder y modificar el valor del contenido de la dirección addr.
Tales como: m1 0x85000000 0x10
La modificación de un valor de carácter sin firmar en la dirección de memoria 0x85000000 es equivalente a: * (carácter sin signo *) addr = value;
Comando: m2
Formato: m2 <addr> <valor>
Explicación: modificar taquigrafía
Presione unsigned short para acceder y modificar el valor del contenido de la dirección addr.
Tales como: m2 0x85000000 0x10
La modificación de un valor corto sin signo en la dirección de memoria 0x85000000 es equivalente a: * (corto sin signo *) addr = valor;
Comando: m4
Formato: m4 <addr> <valor>
Explicación: modificar taquigrafía
Presione unsigned long para acceder y modificar el valor de contenido de address addr.
Tales como: m4 0x85000000 0x10
La modificación de un valor largo sin signo en la dirección de memoria 0x85000000 es equivalente a: * (largo sin signo *) addr = valor;
Comando: m8
格式: m8 <addr> <valor>
Explicación: modificar taquigrafía
Acceda y modifique el valor del contenido de la dirección addr de acuerdo con unsigned long long.
Tales como: m8 0x85000000 0x10
Modificar un valor largo sin signo en la dirección de memoria 0x85000000 es equivalente a: * (largo largo sin signo *) addr = valor;
Comando: devls
Formato: devls
Explicación: Verifique algunos dispositivos de pmon, los dispositivos que se muestran aquí no son todos los dispositivos.
Generalmente, existen tarjetas de red, USB, tarjetas CF, tarjetas sd, discos duros, etc., que se utilizan principalmente para ver el nombre del dispositivo para otras operaciones.
Comando: ifaddr
格式: ifaddr <interfaz> <ipaddr>
Explicación: Configure la dirección IP de la tarjeta de red, como: ifaddr syn0 192.168.0.1 (syn0 es el nombre de la tarjeta de red, puede usar el comando devls para verla, no es necesario configurar la máscara de subred aquí, pmon establecerá automáticamente la máscara de subred en 255.255.255.0)
Comando: ping
Formato: ping <ipaddr>
Explicación: Detección simple, como: ifconfig syn0 (syn0 es el nombre de la tarjeta de red, puede usar el comando devls para verla)
Comando: desarmado
Formato: desarmado <nombre>
Explicación: Elimine la variable de entorno denominada nombre. Para obtener una explicación de las variables de entorno, consulte el apéndice de las variables de entorno de PMON