Inicie comandos relacionados ao kernel por meio do pmon
Carregando rede:
carregar tftp: // ip do servidor / vmlinux
initrd tftp: //server‐ip/initrd.gz
g console = tty console = ttyS0,115200
Inicialize do disco u:
carregar (usb0,0) / vmlinux
initrd (usb0,0) /initrd.gz
g console = tty console = ttyS0,115200
Explicação do comando:
Comando: carregar
Formato: carregar <elf-file>
Explicação: O comando load é um comando muito importante no PMON. A função é carregar um arquivo elf na memória (aqui ele é apenas armazenado na memória, mas não gravado na memória flash). O processo de carregamento é um processo geral de processamento automático de redirecionamento de arquivo elf e outras operações baseadas nas informações de o arquivo elf, portanto, não há necessidade de especificar o endereço de memória a ser carregado, o comando de carregamento será concluído automaticamente.
如: load tftp: // ip do servidor / vmlinux
O comando acima é para carregar o kernel do servidor tftp de rede na memória.
Como: load / dev / mtd0b
O comando acima é para carregar um arquivo elf do início da primeira partição do nandflash na memória, onde o kernel é geralmente armazenado, que é outra maneira de carregar o kernel.
Nota: O vmlinux aqui é um arquivo elf. Se o arquivo carregado especificado não for um arquivo elf, um erro será solicitado.
Comando: initrd
Formato: initrd <arquivo img>
Explicação: carregar imagem initrd
Comando: g
Formato: g [‐s] [- b bpaddr] [- e addr] [‐ args]
Explicação: O comando g é um comando muito importante no PMON, que executa diretamente o programa a partir do endereço de memória especificado
Como: g -e addr
Como no comando acima, o programa é executado diretamente do endereço de memória addr. A premissa da operação normal é que um programa executável foi armazenado na memória no início de addr. Addr é o endereço de entrada deste programa. Por exemplo , sabemos que o endereço de memória 0x80010000 é o código pmon. Armazene o endereço inicial do segmento, execute g -e 0x80010000 executará novamente o código pmon, que é equivalente a reiniciar o PMON (o pmon não será copiado do piscar neste momento)
carregar tftp: // ip do servidor / vmlinux
g console = ttyS0,115200 rdinit = / sbin / init
O comando acima é usado em conjunto com o comando load. Após a conclusão do carregamento, use o comando g para executar automaticamente o kernel a partir do endereço de entrada do kernel carregado. Este é o parâmetro "console = ttyS0,115200 rdinit = / sbin / init "são os parâmetros de inicialização do kernel.
Variáveis de ambiente relacionadas à inicialização
As variáveis de ambiente relacionadas à inicialização são al1, rd, append, que correspondem ao kernel, caminho initrd e parâmetros de inicialização, por exemplo
Pode ser definido para:
definir al1 / dev / mtd0
set rd /dev/fs/yaffs2@mtd1/initrd.gz
definir append console = tty console = ttyS0,115200
Explicação do comando:
Comando: set
Formato: definir [nome] [valor]
Explicação: Verifique as variáveis de ambiente em pmon e defina o nome da variável de ambiente como valor
Tais como: set (ver e exibir todas as variáveis de ambiente em pmon);
definir wk kkk (adicionar ou modificar o valor do ambiente wk para kkk)
kernel flash pmon e sistema de arquivos para método nand
Precisa ser apagado antes da programação, o comando é o seguinte:
mtd_erase / dev / mtd0r // 0 significa partição, o sufixo r significa apagar sem pular rapidamente
mtd_erase / dev / mtd1r
devcp tftp: // ip do servidor / vmlinux / dev / mtd0
devcp tftp: //server‐ip/roofs‐yaffs2.img / dev / mtd1y
definir al1 / dev / mtd0
set append console = ttyS0,115200 rdinit = / sbin / init root = / dev / mtdblock1 rw
rootfs = yaffs2
Explicação do comando:
Comando: devcp
格式: devcp <src‐device> <desc‐device>
Explicação: O comando devcp deve ser um comando importante no PMON.
A implementação é: abra os dois dispositivos src-device e desc-device, leia uma certa quantidade de dados de byte do src-device, grave-os no dispositivo desc-device e feche esses dois dispositivos após a conclusão.
如: devcp tftp: // ip do servidor / vmlinux / dev / mtd0
O comando acima é para receber e ler o kernel vmlinux do servidor tftp e gravá-lo na primeira partição do nandflash.Este é um comando comumente usado para programar o kernel para flash.
如: devcp tftp: //server‐ip/roofs‐yaffs2.img / dev / mtd1y
O comando acima é para receber e ler o arquivo de imagem yaffs2 rootfs-yaffs2.img do sistema de arquivos root do servidor tftp
Flash para a segunda partição do nandflash. Este é um comando comumente usado para atualizar o sistema de arquivos yaffs2 para o nandflash.
Comando: mtdparts
Formato: mtdparts
Explicação: Exibe as informações da partição atual de nandflash.
Comando: mtd_erase
Formato: mtd_erase <mtd-device>
Explicação: Limpe uma partição de nandflash
(Apague a primeira partição do nandflash, pule os lugares que já são blocos defeituosos e não tentará apagar os lugares que já são blocos defeituosos);
mtd_erase / dev / mtd0r
(Apague a primeira partição do nandflash. Neste momento, ele tentará apagar todos os blocos, mesmo se for um bloco defeituoso, tentará apagá-lo.
Exceto operação).
Ver e modificar dtb em pmon
A linha de comando do Pmon oferece suporte, visualização, exclusão e re-gravar dtb.
Visualize o comando dtb em Pmon:
Print_dtb / Imprime todo o conteúdo do dtb
Print_dtb / soc / dc @ 0x400c0000 imprime todo o conteúdo de dc
Excluir dtb em Pmon
rm_dtb_node / deletar todo o dtb
rm_dtb_node / soc / hda @ 0x400d00000 excluir o conteúdo
Reprogramar dtb sob pmon
O dtb passará as informações sobre o tamanho da memória para o kernel. Se esta parte do conteúdo for passada incorretamente, isso causará erros imprevisíveis. Se você reescrever o conteúdo interno, precisará ler o conteúdo da memória por meio do comando print_dtb e atualizá-lo para o novo arquivo dts (o terceiro processador não transmite informações de memória).
Executar make dtb no diretório de compilação pmon irá gerar o arquivo Bonito3a3000_7a.dtb. Este arquivo pode ser gravado separadamente.
Comandos de programação e programação consistente
Introdução a outros comandos
Comando: d1
Formato: d1 <addr> <num>
Explicação: abreviação para display
Pressione unsigned char para acessar e exibir os valores de conteúdo num começando do endereço addr.
Por exemplo: d1 0x85000000 0x10
Exibir 0x10 bytes (8 bits) do endereço de memória 0x85000000, 0x85000000-0x8500000f
Comando: d2
Formato: d2 <addr> <num>
Explicação: abreviação para display
Pressione (abreviatura sem sinal) para acessar e exibir os valores do conteúdo num começando no endereço addr.
Por exemplo: d2 0x85000000 0x10
Exibir valores de tipo curto sem sinal 0x10 (16 bits) do endereço de memória 0x85000000, 0x85000000-0x8500001e
Comando: d4
Formato: d4 <addr> <num>
Explicação: abreviação para display
Pressione (longo sem sinal) para acessar e exibir os valores do conteúdo num começando do endereço addr.
Por exemplo: d4 0x85000000 0x10
Exibir 0x10 valores longos sem sinal (32 bits) do endereço de memória 0x85000000, 0x85000000-0x8500003c
Comando: d8
Formato: d8 <addr> <num>
Explicação: abreviação para display
Pressione (longo sem sinal) para acessar e exibir os valores de conteúdo num começando do endereço addr.
Como: d8 0x85000000 0x10
Exibir 0x10 valores longos não assinados (64 bits) do endereço de memória 0x85000000, 0x85000000-0x85000078
Comando: m1
格式: m1 <addr> <value>
Explicação: modificar taquigrafia
Pressione unsigned char para acessar e modificar o valor do conteúdo do endereço addr.
Por exemplo: m1 0x85000000 0x10
Modificar um valor de unsigned char no endereço de memória 0x85000000 é equivalente a: * (unsigned char *) addr = value;
Comando: m2
Formato: m2 <addr> <value>
Explicação: modificar taquigrafia
Pressione unsigned short para acessar e modificar o valor do conteúdo do endereço addr.
Por exemplo: m2 0x85000000 0x10
Modificar um valor curto sem sinal no endereço de memória 0x85000000 é equivalente a: * (curto sem sinal *) addr = valor;
Comando: m4
Formato: m4 <addr> <value>
Explicação: modificar taquigrafia
Pressione unsigned long para acessar e modificar o valor do conteúdo do endereço addr.
Por exemplo: m4 0x85000000 0x10
Modificar um valor longo sem sinal no endereço de memória 0x85000000 é equivalente a: * (longo sem sinal *) addr = valor;
Comando: m8
格式: m8 <addr> <value>
Explicação: modificar taquigrafia
Acesse e modifique o valor do conteúdo do endereço addr de acordo com unsigned long long.
Por exemplo: m8 0x85000000 0x10
Modificar um valor longo sem sinal no endereço de memória 0x85000000 é equivalente a: * (longo sem sinal *) addr = valor;
Comando: devls
Formato: devls
Explicação: Verifique alguns dispositivos do pmon, os dispositivos exibidos aqui não são todos dispositivos.
Geralmente, existem placas de rede, USB, cartões CF, cartões SD, discos rígidos, etc., que são usados principalmente para visualizar o nome do dispositivo para outras operações.
Comando: ifaddr
格式: ifaddr <interface> <ipaddr>
Explicação: Defina o endereço IP da placa de rede, como: ifaddr syn0 192.168.0.1 (syn0 é o nome da placa de rede, você pode usar o comando devls para visualizá-lo, não há necessidade de definir a máscara de sub-rede aqui, pmon irá definir automaticamente a máscara de sub-rede para 255.255.255.0)
Comando: ping
Formato: ping <ipaddr>
Explicação: Detecção simples, como: ifconfig syn0 (syn0 é o nome da placa de rede, você pode usar o comando devls para visualizá-la)
Comando: não definido
Formato: não definido <nome>
Explicação: Remova a variável de ambiente denominada nome. Para a explicação das variáveis de ambiente, consulte o apêndice PMON variáveis de ambiente