Métodos para solidificar y actualizar uboot, zImage y dtb en el sistema Linux (clásico)

Hola a todos, hoy les presentaré un resumen de los métodos para solidificar y actualizar uboot, zImage y dtb con imx6ull , espero que este artículo les sea útil.

El requisito previo para la solidificación y actualización es que uboot.imx , zImage , imx6ull.dtb y rootfs se hayan compilado y se puedan iniciar y montar correctamente.

Antes de explicar los métodos de solidificación de imx6ull y actualizar uboot, zImage y dtb, primero permítame explicarle algunas de las condiciones de partición de imx6ull y sus respectivas funciones.

Partición imx6ull eMMC, como se muestra a continuación:

imagen

EMMC tiene tres particiones:

  • Partición 0 (/dev/mmcblk1boot0): Los dos primeros bloques (sectores) de la partición 0 de EMMC contienen la tabla de particiones y uboot se almacena a partir del tercer bloque;

  • Partición 1 (/dev/mmcblk1p1): almacena el kernel de Linux y el árbol de dispositivos dtb;

  • Partición 2 (/dev/mmcblk1p2): almacena el sistema de archivos raíz rootfs.

1. Sistema de curado

1. Utilice el sistema de curado por computadora host mfgtool

 Copie el archivo mfgtool de la herramienta de grabación de firmware de fábrica MFG_TOOL a la PC.

El interruptor DIP para el modo de inicio imx6ull, la relación correspondiente es la siguiente:

Modo de inicio Dip switch
Programación USB OTG 0100 0000
Arranque de tarjeta SD 1000 0010
Inicio EMMC 1010 0110
Inicio de FLASH NAND 1000 1001
  • Nota:  APAGADO es 0, ENCENDIDO es 1; [D0-D1-D2-D3-D4-D5-D6-D7-D8]

 El interruptor DIP de la placa base (BOOT_CFG) está configurado de la siguiente manera, consulte BOOT_CFG, configurado en modo de conexión USB, el código "1" significa ENCENDIDO, "0" significa "APAGADO". Gire el dial número 2 a ON y los demás a OFF. Como se muestra abajo:

imagen

Utilice un cable USB para conectar la interfaz USB_OTG en el backplane a la PC (computadora).

imagen

Ingrese a la carpeta mfgtool y vea la información del script vbs, como se muestra a continuación:

imagen

La razón por la que existen tantos scripts vbs diferentes es que proporcionan diferentes métodos de curado según las necesidades de curado. Podemos elegir diferentes sistemas de solidificación de scripts vbs de acuerdo con nuestros tipos de placas centrales individuales. (¡Tenga en cuenta que es mejor no ejecutar mfgtool en una ruta china!).

Aquí hay una breve introducción a las funciones de estos archivos de script vbs. La explicación del nombre de los scripts vbs es la siguiente:

imagen

1.1 sistema de curado mfgtool a tarjeta SD

Prepare una tarjeta SD (aquí se usa una tarjeta TF) (tenga en cuenta que la tarjeta SD se formateará, así que asegúrese de hacer una copia de seguridad de los datos importantes). De acuerdo con la explicación anterior sobre el nombre del script vbs, por ejemplo, debemos arrancar desde la tarjeta SD y confirmar que el medio de almacenamiento de la placa central es eMMC y que la capacidad DDR es de 512 MB.

Luego elegimos hacer doble clic en Mfgtool2-eMMC-ddr512-SDCard.vbs para programar, la interfaz es la siguiente:

imagen

Después de seguir las instrucciones de preparación antes de usar mfgtool anteriores, encienda el interruptor de alimentación de la placa base. Si es la primera vez que utiliza la placa de desarrollo OTG para conectarse a una PC (computadora), debe esperar a que la PC instale automáticamente el controlador. (Haga clic en el pequeño ícono en la esquina inferior derecha donde se está instalando el controlador, no permita que Windows vaya a buscar el controlador desde la actualización de Windows, haga clic en omitir, el controlador se instalará naturalmente. De lo contrario, si usa el controlador en la actualización de Windows , puede quedar atascado durante el proceso de programación Mantenga presionado, no lo agote.) Una vez completada la instalación del controlador, la interfaz superior de la computadora mfgtool le indicará que se ha conectado al dispositivo compatible con HID (tenga en cuenta que no lo haga). No abra la máquina virtual, si la máquina virtual se está iniciando, otg se conectará a la máquina virtual. Al programar, si encuentra un error antivirus, se recomienda apagar el software antivirus.) Como se muestra a continuación:

imagen

En este momento, inserte la tarjeta SD en la ranura para tarjetas (si su tarjeta SD ya tiene un sistema, primero debe encender la placa de desarrollo y luego insertar la tarjeta SD en la ranura para tarjetas; de lo contrario, su sistema se iniciará desde la tarjeta SD). tarjeta al encender, por lo que mfgtool no podrá conectarse al dispositivo de la placa de desarrollo), conecte la tarjeta SD como se muestra a continuación:

imagen

Haga clic directamente en el botón Inicio de mfgtool para solidificar el sistema en la tarjeta SD. La siguiente imagen es una captura de pantalla después de hacer clic en el botón Inicio. Tomará unos minutos endurecer el sistema en la tarjeta SD; tenga paciencia.

imagen

El proceso de curado es el siguiente, escribiendo en el sistema de archivos:

imagen

Cuando se complete el curado, como se muestra a continuación, haga clic en Detener y luego en Salir para salir del software de la computadora host mfgtool.

imagen

Pruebe para iniciar el sistema desde la tarjeta SD, gire el interruptor DIP al modo de inicio de la tarjeta SD 10000010 e inicie el sistema.

1.2 mfgtool solidifica el sistema a eMMC

Haga doble clic en el archivo de script vbs Mfgtool2-eMMC-ddr512-eMMC.vbs para solidificar. Para conocer los pasos, consulte 1.1 Sistema de curado mfgtool en tarjeta SD. Una vez completado el curado, configure el interruptor DIP en el modo de inicio eMMC 10100110 e inicie el sistema.

Requisitos previos para su uso: tipo de placa central de usuario con medios de almacenamiento eMMC. Confirme que su tamaño DDR es 512 MB o 256 MB. Actualmente, mi placa de desarrollo es una placa central eMMC y el tamaño DDR es 512 MB.

1.3 Sistema de solidificación mfgtool a NAND FLASH

Haga doble clic en el archivo de script vbs Mfgtool2-NAND-ddr256-NAND.vbs para solidificar. Consulte los pasos de 1.1mfgtool para solidificar el sistema en la tarjeta SD. Una vez completada la solidificación, configure el interruptor DIP en el modo de inicio NANDFLASH. 10001001 e inicie el sistema.

Requisitos previos para su uso: tipo de placa central de usuario con medio de almacenamiento NAND FLASH. Confirme que el tamaño de su ddr es 512 MB o 256 MB.

2. Utilice scripts para solidificar el sistema.

Los sistemas de curado Script generalmente se pueden utilizar para curado por lotes y actualizaciones del sistema. A diferencia de la computadora host mfgtool, que requiere una PC y un cable de datos USB, los usuarios pueden modificar los scripts del sistema de curado por sí mismos y realizar pruebas de curado automatizadas, de modo que el sistema pueda curarse en lotes sin la participación de profesionales.

2.1 Script para solidificar el sistema en la tarjeta SD

Mueva toda la carpeta de archivos de la herramienta de grabación MFG_TOOL mfgtool a la máquina virtual de Ubuntu, como se muestra a continuación:

imagen

Utilice el comando chmod para modificar los permisos del script del sistema de la tarjeta SD solidificada imx6mksdboot.sh

chmod +x imx6mksdboot.sh

Inserte la tarjeta SD en la máquina virtual de Ubuntu con un lector de tarjetas y espere a que el host de Ubuntu la reconozca, como se muestra en la siguiente figura. (Debido a que el autor creó una tarjeta SD, el host de Ubuntu reconocerá dos particiones. Si su tarjeta SD está en blanco y solo se reconoce una partición, verá solo un ícono USB (el patrón puede ser diferente). Lo mismo)).

imagen

Ingrese el siguiente comando para ver el nodo de montaje de la tarjeta SD, como se muestra en la siguiente figura. La capacidad de la tarjeta SD del autor es de 8 GB (7984 MB ≈ 8 GB), y puede ver que el nodo montado es /dev/sdb.

sudo fdisk -l

imagen

Ejecute directamente ./imx6mksdboot.sh --help para ver cómo usar el script

imagen

Instrucciones de uso:

用法: imx6mksdboot.sh [选项] <(必选)-device> <(可选)-flash> <(可选)-ddrsize>
  • -device: especifica el nodo del dispositivo (el nodo montado en la tarjeta SD como /dev/sdx). Este parámetro debe agregarse al ejecutar el script.

  • -flash: especifica el medio de almacenamiento en la placa central, opcional (emmc|nand)

  • -ddrsize: indica el tamaño de la capacidad ddr en la placa central, que puede ser (512|256) MB

El tamaño de capacidad ddr actual es de 512 MB y el medio de almacenamiento multimedia es eMMC. El nodo de montaje de la tarjeta SD es /dev/sdb. Luego, las instrucciones para solidificar la tarjeta SD son las siguientes. Después de ejecutar las instrucciones, el script tendrá caracteres chinos y preguntará nuevamente si el nodo montado en la tarjeta SD corresponde a él. Se borrarán todos los datos de la tarjeta SD. Por favor, tenga en cuenta tenga cuidado de hacer una copia de seguridad de los datos importantes. Presione la tecla Enter para confirmar y continuar. Tomará unos minutos solidificar la tarjeta SD. Dependiendo de la computadora personal y la tarjeta SD utilizada, el tiempo que toma puede variar mucho.

sudo ./imx6mksdboot.sh -device /dev/sdb -flash emmc -ddrsize 512

imagen

Durante el curado, hay una combinación de chino e inglés para indicar el proceso de curado. El proceso de curado se completa como se muestra a continuación:

imagen

Una vez completado el curado, desmonte la tarjeta SD y luego sáquela, haga clic en el ícono USB, haga clic en el pequeño triángulo en "2" para desinstalar y salir, y luego extraiga el lector de tarjetas directamente.

imagen

Pruebe para iniciar el sistema desde la tarjeta SD, gire el interruptor DIP al modo de inicio de la tarjeta SD 10000010 e inicie el sistema.

2.2 Script para solidificar el sistema en eMMC

El script utilizado aquí para solidificar el sistema en eMMC requiere la tarjeta de arranque del sistema SD creada en 2.1. Copie toda la carpeta de archivos de la herramienta de programación MFG_TOOL mfgtool al directorio /home/root en la tarjeta de inicio del sistema SD preparada (este artículo se copia al directorio /home/root, los lectores pueden elegir cualquier directorio). Como se muestra abajo:

imagen

Modificar los permisos del script de solidificación eMMC

chmod +x im6mkemmcboot.sh

Ejecute ./imx6mkemmcboot.sh --help para ver las instrucciones de uso del script

imagen

Utilice el comando fdisk para ver el nodo de montaje del eMMC. Generalmente, el nodo de montaje es /dev/mmcblk1. El eMMC probado en este artículo tiene una capacidad de almacenamiento de 8 GB. Como puede ver en la imagen a continuación, /dev/mmcblk1 es el nodo de montaje de eMMC.

fdisk -l

imagen

Instrucciones de uso:

用法: imx6mkemmcboot.sh [选项] <(必选)-device> <(可选)-ddrsize>
  • -device: indica el nodo del dispositivo (el nodo montado por eMMC como /dev/mmcblk1), este parámetro debe agregarse al ejecutar el script

  • -ddrsize: indica el tamaño de la capacidad ddr en la placa central, que puede ser (512|256) MB

La capacidad actual de DDR es de 512 MB y el nodo de montaje de eMMC es /dev/mmcblk1. Luego, las instrucciones solidificadas son las siguientes. Después de ejecutar las instrucciones, el script tendrá caracteres chinos y preguntará nuevamente si el nodo montado en el eMMC corresponde a él. Todos los datos en el eMMC se borrarán. Tenga cuidado de hacer una copia de seguridad de los datos importantes. . Presione la tecla Enter para confirmar y continuar. Tomará unos minutos solidificar el sistema en eMMC.

./imx6mkemmcboot.sh -device /dev/mmcblk1 -ddrsize 512

imagen

El sistema de curado se completa como se muestra a continuación:

imagen

Una vez completado el curado, gire el interruptor DIP al modo de inicio eMMC 10100110 para iniciar el sistema.

2.3 Sistema de solidificación de scripts a NAND FLASH

El script utilizado aquí para solidificar el sistema en eMMC requiere la tarjeta de arranque del sistema SD creada en 2.1. Copie toda la carpeta de archivos de la herramienta de programación MFG_TOOL mfgtool al directorio /home/root en la tarjeta de inicio del sistema SD preparada (este artículo se copia al directorio /home/root, los lectores pueden elegir cualquier directorio). Como se muestra abajo:

imagen

Utilice el comando cat para ver la tabla de particiones MTD y el resultado impreso se muestra en la figura siguiente, lo que indica que hay Nand Flash.

imagen

Modificar los permisos del script de solidificación NandFlash

chmod +x imx6mknandboot.sh

Ejecute ./imx6mknandboot.sh --help para ver las instrucciones del script

imagen

Instrucciones de uso:

Uso: imx6mknandboot.sh [opciones] <(opcional)-ddrsize>

  • -ddrsize: especifica la capacidad ddr en la placa central, opcionalmente (512|256) MB.

La capacidad ddr actual es de 256 MB, luego las instrucciones de solidificación son las siguientes. Esto borrará todos los datos del NandFlash. Asegúrese de hacer una copia de seguridad de los datos importantes. Presione la tecla Enter para confirmar y continuar. Tomará unos minutos solidificar el sistema en NandFlash.

./imx6mknandboot.sh -ddrsize 256

imagen

El sistema de curado se completa como se muestra a continuación:

imagen

Una vez completado el curado, gire el interruptor DIP al modo de inicio Nand Flash 10001001 e inicie el sistema.

2. Sistema de actualización

Cuando estamos en el proceso de desarrollo, es posible que tengamos más necesidades o modificaciones funcionales para compilar u-boot y el kernel de Linux o el sistema de archivos raíz en cualquier momento. En este momento, es imposible utilizar el método de solidificación anterior después de cada modificación, lo que Consume demasiado tiempo. Debe utilizar un método simple y conveniente para reemplazar la imagen anterior con la nueva. Aquí presentaremos algunos métodos de actualización comunes.

1. Actualizar bajo u-boot

1.1 Actualizar la imagen de u-boot en u-boot

Para actualizar la imagen de u-boot en eMMC y la tarjeta SD en u-boot, debe usar el comando tftp+mmc. Los detalles son los siguientes: Configure un servidor tftp: PC: servidor tftpd32; u-boot tiene el suyo propio función tftp.

  1. Actualizar u-boot en eMMC:

1.tftp 0x80800000 u-boot.imx   ------通过tftp将u-boot.imx下载到内存中
2.mmc dev 1 0                  ------切换操作emmc的分区0
3.mmc write 80800000 2 33e     ------将内存中u-boot.imx烧写到emmc的分区0的第3个存储块(424960/512(块大小) = 0x33E)
4.mmc partconf 1 1 0 0         ------分区配置,EMMC 需要这一步!
5.reset                        ------复位,启动更新后的uboot

Nota: Los dos primeros bloques de la partición 1 de eMMC almacenan el MBR (tabla de particiones). No escriba datos en estos dos bloques. Si lo escribe accidentalmente, puede usar la herramienta mfgtool para descargar los datos a emmc usando USB nuevamente para restaurarlos.

  1. Actualizar u-boot en la tarjeta SD:

1.tftp 0x80800000 u-boot.imx    ------通过tftp将u-boot.imx下载到内存中
2.mmc dev 0 0                   ------切换操作SD的分区0
3.mmc write 80800000 2 33e      ------将内存中u-boot.imx烧写到SD的分区1的第3个存储块(424960/512(块大小) = 0x33E)
4.reset                         ------复位,启动更新后的uboot

1.2 Actualizar kernel y dtb en uboot

  1. Actualizar kernel y dtb en eMMC:

tftp 0x80800000 zImage;           ------通过TFTP从网络下载zImage文件到内存地址0x80800000
fatwrite mmc 1:1 80800000 zImage 0x552f30(实际文件大小)

tftp 0x83000000 imx6ull-toto.dtb  ------通过TFTP从网络下载imx6ull-toto.dtb文件到内存地址0x83000000
fatwrite mmc 1:1 83000000 imx6ull-toto.dtb 0x8d6a(实际文件大小)

Los parámetros del comando fatwrite se explican a continuación:

  • fatwrite: este es el comando U-Boot que se utiliza para escribir archivos en una partición del sistema de archivos FAT.

  • mmc 0:1: especifique el dispositivo de almacenamiento y la partición que se escribirán. mmc significa usar un dispositivo de almacenamiento MMC (como una tarjeta SD o eMMC).

  • 1:1 significa usar la primera partición con el dispositivo número 1.

  • 83000000: especifique la dirección del archivo de datos en la memoria. 0x83000000 significa que los datos comenzarán desde la dirección de memoria 0x83000000.

  • imx6ull-toto.dtb: este es el nombre del archivo que se escribirá.

  • 0x8d6a: este es el tamaño del archivo que se escribirá (en bytes). 0x8d6a significa que el tamaño del archivo es 0x8d6a bytes.

    2. Actualice el kernel y dtb en la tarjeta SD:

tftp 0x80800000 zImage;
fatwrite mmc 0:1 80800000 zImage 0x552f30(实际文件大小)

tftp 0x83000000 imx6ull-toto.dtb
fatwrite mmc 0:1 83000000 imx6ull-toto.dtb 0x8d6a(实际文件大小)

1.3 u-boot inicia el método del kernel de Linux

Las diferentes formas de iniciar el kernel de Linux y los métodos de montaje de rotofs en u-boot requieren la configuración de las dos variables de entorno bootcmd y bootargs.

  1. Arranque el sistema Linux desde la red y monte rootfs NFS

setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-toto.dtb; bootz 80800000 - 83000000'
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw 
nfsroot=192.168.0.105:/home/ubuntu/My_WorkSpace/Linux/nfs/rootfs 
ip=192.168.0.123:192.168.0.105:192.168.0.1:255.255.255.0::eth0:off'
saveenv
  1. Arranque el sistema Linux desde sd y monte rootfs

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait rw'
setenv bootcmd 'mmc dev 0; fatload mmc 0:1 80800000 zImage; fatload mmc 0:1 83000000 imx6ull-toto.dtb; bootz 80800000 - 83000000;'
saveenv
  1. Inicie el sistema Linux desde EMMC y monte rootfs

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
setenv bootcmd 'mmc dev 1; fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull-toto.dtb; bootz 80800000 - 83000000;'
saveenv

2. Actualización en el sistema Linux

2.1 Actualizar u-boot en el sistema Linux

  1. Actualizar u-boot en la tarjeta SD:

dd if=u-boot.imx of=/dev/mmcblk0 bs=1024 seek=1 conv=fsync
  1. Actualizar u-boot en eMMC:

echo 0 > /sys/block/mmcblk1boot0/force_ro                        ------Enable writes to /dev/mmcblk1boot0
dd if=/dev/zero of=/dev/mmcblk1boot0                             ------Precaution: Erase entire eMMC boot region.
dd if=u-boot.imx of=/dev/mmcblk1boot0 bs=1024 seek=1 conv=fsync  ------Copy U-Boot to eMMC boot region.
echo 1 >/sys/block/mmcblk1boot0/force_ro                         ------Disable writes to /dev/mmcblk1boot0

2.2 Actualizar kernel y dtb en sistema Linux

  1. Actualizar kernel y dtb en tarjeta SD:

/ # mount /dev/mmcblk0p1 /mnt/boot/
/ # ls /mnt/boot/
imx6ull-toto.dtb  zImage

用最新的zImage和imx6ull-toto.dtb替换到/mnt/boot/文件中的zImage和imx6ull-toto.dtb即可。
  1. Actualizar kernel y dtb en eMMC:

/ # mount /dev/mmcblk1p1 /mnt/boot/
/ # ls /mnt/boot/
imx6ull-toto.dtb  zImage

用最新的zImage和imx6ull-toto.dtb替换到/mnt/boot/文件中的zImage和imx6ull-toto.dtb即可。

Con esto concluye el contenido de hoy, gracias a todos por mirar .

Supongo que te gusta

Origin blog.csdn.net/weixin_41114301/article/details/132775472
Recomendado
Clasificación