Construção de ambiente Linux embutido

Resumido de "Embedded Linux Application Development Complete Manual_Wei Dongshan Complete Series of Video Documents V2.4"

1. O BIOS do computador inicia a virtualização

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

2. Visualização da placa de rede Linux e configurações de IP

Ver todas as placas de rede

ifconfig -a

Defina o IP da rede

$ sudo ifconfig ens160 192.168.1.16

Se o comando a seguir não for bem-sucedido, significa que o roteamento não está configurado:

$ ping 8.8.8.8
connect: Network is unreachable

Se "ping 8.8.8.8" for bem-sucedido, mas "ping www.baidu.com" não, o DNS não está configurado corretamente:

$ ping www.baidu.com
ping: unknown host www.baidu.com

As configurações de DNS são relativamente simples. 8.8.8.8 é um servidor DNS fácil de lembrar. Modifique o arquivo /etc/resolv.conf no Ubuntu para ler o seguinte:

nameserver 8.8.8.8

3. Configuração de rede virtual Windows NAT

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

4. Modifique a porta mountd do Ubuntu

Na rede NAT, se você deseja que a placa de desenvolvimento monte o Ubuntu via NFS, você precisa modificar a porta mountd para 9999.
Se você não sabe como usar o comando vi, você pode iniciar o terminal na área de trabalho do Ubuntu, execute o seguinte comando e modifique-o com a ferramenta GUI:

sudo gedit /etc/services

Explicação do comando: modificar / etc / services:
adicionar 2 linhas:

mountd 9999 / tcp
mountd 9999 / udp

5. Configurações do MobaXterm

Instale e execute o MobaXterm e configure a Sessão da seguinte forma:
Insira a descrição da imagem aqui
Nota: Para Ubuntu usando NAT, o IP inserido na etapa 2 na figura acima é 127.0.0.1; se você não estiver usando NAT, será necessário inserir o IP do Ubuntu.

6. Configurações do FileZilla

Insira a descrição da imagem aqui
Nota: Para Ubuntu usando NAT, o IP inserido na etapa 2 na figura acima é 127.0.0.1; se você não estiver usando NAT, será necessário inserir o IP do Ubuntu.

6, configuração e inspeção da cadeia de compilação cruzada do Ubuntu

Efetivo permanente
1. Execute: gedit ~/.bashrcou vi ~/.bashrc
2. Adicione ou modifique no final da linha e adicione as seguintes linhas (a terceira linha é muito longa e uma fonte pequena é usada aqui para que todos possam copiar):

export ARCH = arm
export CROSS_COMPILE = arm-buildroot-linux-gnueabihf-
export PATH = $ PATH: / home / book / 100ask_stm32mp157_pro-sdk / ToolChain / arm-buildroot-linux-gnueabihf_sdk-buildroot / bin

3. Para executar source ~/.bashrco comando para ter efeito, este comando deve carregar as variáveis ​​de ambiente para essas configurações.

7, ubuntu compilar o kernel

O processo de compilação do kernel da placa de desenvolvimento STM32MP157 é o seguinte (você precisa configurar algumas variáveis ​​de ambiente, como a cadeia de ferramentas antes de compilar o kernel):

book@100ask:~/100ask_stm32mp157_pro-sdk$ cd Linux-5.4
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ make 100ask_stm32mp157_pro_defconfig
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ make uImage LOADADDR=0xC2000040 -j4
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ make dtbs
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ cp arch/arm/boot/uImage ~/nfs_rootfs
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ cp arch/arm/boot/dts/100ask-stm32m1p157c-pro.dtb ~/nfs_rootfs

8, o ubuntu compila o módulo do kernel

Depois que a placa de desenvolvimento STM32MP157 entrar no diretório de origem do kernel, você pode compilar o módulo do kernel:

book@100ask:~$ cd 100ask_stm32mp157_pro-sdk/Linux-5.4
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ make modules -j4
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ sudo make INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_install

O último comando é instalar o módulo no diretório / home / book / nfs_rootfs para backup e você obterá o diretório
/ home / book / nfs_rootfs / lib / modules.

9. Instale o kernel e os módulos na placa de desenvolvimento

Premissas: executar o comando, no livro Ubuntu / home no diretório / / nfs_rootfs já zImage ou uImage , arquivo DTB ,
e ali o subdiretório lib / modules (que contém vários módulos).
Em seguida, copie esses arquivos para a placa de desenvolvimento.
1. Se você estiver usando VMware NAT, supondo que o IP do Windows seja 192.168.1.100, depois que a placa de desenvolvimento for inicializada no Linux, insira
root para fazer login e execute os seguintes comandos (Nota: Você deve especificar a porta como 2049 e mountport como 9999):

mount -t nfs -o nolock,vers=3,port=2049,mountport=9999 192.168.1.100:/home/book/nfs_rootfs /mnt
cp /mnt/zImage /boot 或 cp /mnt/uImage /boot 
cp /mnt/*.dtb /boot
cp /mnt/lib/modules /lib -rfd
sync
reboot

2. Se você estiver usando o método de ponte VMware, supondo que o IP do Ubuntu seja 192.168.1.100, execute o seguinte comando na placa de desenvolvimento:

mount -t nfs -o nolock,vers=3 192.168.1.100:/home/book/nfs_rootfs /mnt
cp /mnt/zImage /boot 或 cp /mnt/uImage /boot 
cp /mnt/*.dtb /boot
cp /mnt/lib/modules /lib -rfd
sync
reboot

Finalmente reinicie a placa de desenvolvimento, ela usará o novo módulo zImage ou uImage, dtb.

10. ubuntu modifica o Makefile para especificar o diretório do kernel

Após fazer o upload do primeiro driver 01_hello_drv para o Ubuntu, modifique seu Makefile e defina a variável KERN_DIR nele para o diretório de origem do kernel. Tome IMX6ULL como exemplo, da seguinte maneira:

KERN_DIR = /home/book/100ask_imx6ull-sdk/Linux-4.9.88

11. Compile o primeiro driver

1. Depois de definir a cadeia de ferramentas, configurar e compilar o kernel, execute o comando make no diretório 01_hello_drv para compilar o driver e o programa de teste, como segue:

Insira a descrição da imagem aqui

2. Depois de copiar para a placa de desenvolvimento, instale o driver e verifique se foi bem-sucedido:

[root@board:~]# insmod hello_drv.ko

Execute "lsmod" para ver o driver hello_drv, da seguinte maneira:
Insira a descrição da imagem aqui

3. Execute "cat / proc / devices": veja o nome do dispositivo e o número do dispositivo

Insira a descrição da imagem aqui
Execute "ls -l / dev / hello", você pode encontrar este nó de dispositivo, e seu número de dispositivo principal é o mesmo da figura acima:
Insira a descrição da imagem aqui

12. Atualização do programa

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/LIU944602965/article/details/115379243
Recomendado
Clasificación