Construcción de entorno Linux integrado

Resumido de "Manual completo de desarrollo de aplicaciones de Linux integrado_Wei Dongshan Serie completa de documentos de video V2.4"

1. El BIOS de la computadora inicia la virtualización.

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2. Vista de la tarjeta de red de Linux y configuración de IP

Ver todas las tarjetas de red

ifconfig -a

Establecer IP de red

$ sudo ifconfig ens160 192.168.1.16

Si el siguiente comando no tiene éxito, significa que el enrutamiento no está configurado:

$ ping 8.8.8.8
connect: Network is unreachable

Si "ping 8.8.8.8" es exitoso, pero "ping www.baidu.com" no es exitoso, el DNS no está configurado correctamente:

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

La configuración de DNS es relativamente simple. 8.8.8.8 es un servidor DNS fácil de recordar. Modifique el archivo /etc/resolv.conf en Ubuntu para que se lea de la siguiente manera:

servidor de nombres 8.8.8.8

3. Configuración de red virtual NAT de Windows

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

4. Modifica el puerto de montaje de Ubuntu.

En la red NAT, si desea que la placa de desarrollo monte Ubuntu a través de NFS, debe modificar el puerto mountd a 9999.
Si no sabe cómo usar el comando vi, puede iniciar el terminal en el escritorio de Ubuntu, ejecute el siguiente comando y modifíquelo con la herramienta GUI:

sudo gedit /etc/services

Explicación del comando: modificar / etc / services:
agregar 2 líneas:

mountd 9999 / tcp
mountd 9999 / udp

5. Configuración de MobaXterm

Instale y ejecute MobaXterm, y configure la sesión de la siguiente manera:
Inserte la descripción de la imagen aquí
Nota: Para Ubuntu usando NAT, la IP ingresada en el paso 2 en la figura anterior es 127.0.0.1; si no está usando NAT, debe ingresar la IP de Ubuntu.

6. Configuración de FileZilla

Inserte la descripción de la imagen aquí
Nota: Para Ubuntu que usa NAT, la IP ingresada en el paso 2 en la figura anterior es 127.0.0.1; si no está usando NAT, debe ingresar la IP de Ubuntu.

6, configuración e inspección de la cadena de compilación cruzada de ubuntu

Permanentemente efectivo
1. Ejecute: gedit ~/.bashrco vi ~/.bashrc
2. Agregue o modifique al final de la línea, y agregue las siguientes líneas (la tercera línea es muy larga y aquí se usa una fuente pequeña para que todos la copien):

exportar 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 ejecutar source ~/.bashrcel comando para que surta efecto, este comando es cargar las variables de entorno para esta configuración.

7, ubuntu compila el kernel

El proceso de compilación del kernel de la placa de desarrollo STM32MP157 es el siguiente (es necesario configurar algunas variables de entorno como la cadena de herramientas antes de compilar el 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, ubuntu compila el módulo del kernel

Una vez que la placa de desarrollo STM32MP157 ingresa al directorio de origen del kernel, puede compilar el módulo del 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

El último comando es instalar el módulo en el directorio / home / book / nfs_rootfs para realizar una copia de seguridad, y obtendrá el directorio
/ home / book / nfs_rootfs / lib / modules.

9. Instale el kernel y los módulos en la placa de desarrollo.

Supuestos: ejecutando el comando, en el directorio de Ubuntu / home bajo / / nfs_rootfs ya zImage o uImage , archivo DTB ,
y hay subdirectorio lib / modules (que contiene varios módulos).
A continuación, copie estos archivos en la placa de desarrollo.
1. Si está utilizando VMware NAT, asumiendo que la IP de Windows es 192.168.1.100, después de que la placa de desarrollo se
inicie en Linux, ingrese root para iniciar sesión y luego ejecute los siguientes comandos (Nota: debe especificar el puerto como 2049 y 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. Si está utilizando el método de puente de VMware, asumiendo que la IP de Ubuntu es 192.168.1.100, ejecute el siguiente comando en la placa de desarrollo:

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 la placa de desarrollo, usará el nuevo módulo zImage o uImage, dtb ,.

10. ubuntu modifica el Makefile para especificar el directorio del kernel

Después de cargar el primer controlador 01_hello_drv en Ubuntu, modifique su Makefile y establezca la variable KERN_DIR en el directorio fuente del kernel. Tome IMX6ULL como ejemplo, de la siguiente manera:

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

11. Compile el primer controlador

1. Después de configurar la cadena de herramientas, configurar y compilar el kernel, ejecute el comando make en el directorio 01_hello_drv para compilar el controlador y el programa de prueba, de la siguiente manera:

Inserte la descripción de la imagen aquí

2. Después de copiar a la placa de desarrollo, instale el controlador y verifique si es exitoso:

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

Ejecute "lsmod" para ver el controlador hello_drv, de la siguiente manera:
Inserte la descripción de la imagen aquí

3. Ejecute "cat / proc / devices": vea el nombre y el número del dispositivo

Inserte la descripción de la imagen aquí
Ejecute "ls -l / dev / hello", puede encontrar este nodo de dispositivo, y su número de dispositivo principal es el mismo que el de la figura anterior:
Inserte la descripción de la imagen aquí

12. Actualización del programa

Inserte la descripción de la imagen aquí

Supongo que te gusta

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