4. Uboot的烧录

4.1. 将Uboot烧录到内部存储

使用NXP的Mfgtool工具可以烧写Uboot到内部存储EMMC、NAND、SD。

4.1.1. 工具下载

首先下载mfgtool工具,访问资料网盘/4-其他Linux镜像/buildroot镜像/xxx日期/usb烧录文件/mfgtools-release_xxx.zip

然后解压mfgtools-release_xxx.zip得到mfgtools-release。

4.1.2. 替换uboot文件

将编译出来的uboot-dtb.imx更名:

  • eMMC/SD 版本的重命名为 u-boot-mmc.imx

  • nand 版本的重命名为 u-boot-nand.imx

然后进入到mfgtools-release目录中的 mfgtools-release\Profiles\Linux\OS Firmware\release 目录将对应名字的文件替换即可。

未找到图片ubootf

4.1.3. 烧录

4.1.3.1. 烧录配置

  • 如果是eMMC版本,双击打开mfgtools-release目录中的 Mfgtool2-imx6ull-eMMC.vbs

  • 如果是nand版本,双击打开mfgtools-release目录中的 Mfgtool2-imx6ull-nand.vbs

  • 如果是SD版本,双击打开mfgtools-release目录中的 Mfgtool2-imx6ull-SDCard.vbs

未找到图片cfg

4.1.3.2. 设置为USB烧录模式

将USB OTG与电脑连接

OTG与电脑连接
OTG与电脑连接

使用USB更新时不能插入SD卡,将拨码开关设置为USB启动。 配置拨码开关:

eMMC版本:将1/4/5/7打到ON档,其他拨码开关打到OFF档。

nand版本:将1/3/6打到ON档,其他拨码开关打到OFF档。

SD版本:先不要插入SD卡,将1/5/8打到ON档,其他拨码开关打到OFF档,识别设备后再插入SD卡。

提示

也可以选择通过按键方式进入烧录模式,按键法可以不用拨码,拨码状态在之前的 EMMC 或者 NAND 或者 SD 都可以。

  1. 上电

  2. 按下MODE按键

  3. 按下复位(RESET)按键

  4. 松开复位(RESET)按键

  5. 松开MODE按键

此时软件就可以识别到USB了,然后点击Start开始烧录,烧录完成后重启即可。

工具识别

4.2. 将Uboot烧写到SD卡

4.2.1. 使用dd命令将uboot烧写到SD中(常用于做uboot测试)

将u-boot-dtb.imx拷贝到虚拟机内。

编译emmc版本和nand版本默认输出都是u-boot-dtb.imx,无需更改。

重要

需要确定挂载到虚拟机的的SD卡在/dev/sd中的哪个,一般为sdb,如果烧错设备可能导致虚拟机损坏,无法启动。

将以上的编译得到的mmc版本uboot烧录到SD卡中。uboot烧录sd卡会破坏原有数据,请做好sd卡数据备份后再执行以下步骤。

  1. 将sd卡通过读卡器连接到虚拟机前,使用lsblk命令查看当前磁盘设备。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    embedfire@embedfire-VirtualBox:~$ lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    loop0    7:0    0    91M  1 loop /snap/core/6350
    loop1    7:1    0   2.3M  1 loop /snap/gnome-calculator/260
    loop2    7:2    0    13M  1 loop /snap/gnome-characters/139
    loop3    7:3    0 140.7M  1 loop /snap/gnome-3-26-1604/74
    loop4    7:4    0   3.7M  1 loop /snap/gnome-system-monitor/57
    loop5    7:5    0  34.6M  1 loop /snap/gtk-common-themes/818
    loop6    7:6    0  14.5M  1 loop /snap/gnome-logs/45
    sda      8:0    0   100G  0 disk
    └─sda1   8:1    0   100G  0 part /
    sr0     11:0    1  58.3M  0 rom  /media/embedfire/VBox_GAs_6.1.18
    
  2. 将sd卡通过读卡器连接到电脑上,并选择连接到虚拟机上。

    未找到图片02|
  3. 再次使用lsblk命令插件磁盘设备,如下所示

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    embedfire@embedfire-VirtualBox:~$ lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    loop0    7:0    0    91M  1 loop /snap/core/6350
    loop1    7:1    0   2.3M  1 loop /snap/gnome-calculator/260
    loop2    7:2    0    13M  1 loop /snap/gnome-characters/139
    loop3    7:3    0 140.7M  1 loop /snap/gnome-3-26-1604/74
    loop4    7:4    0   3.7M  1 loop /snap/gnome-system-monitor/57
    loop5    7:5    0  34.6M  1 loop /snap/gtk-common-themes/818
    loop6    7:6    0  14.5M  1 loop /snap/gnome-logs/45
    sda      8:0    0   100G  0 disk
    └─sda1   8:1    0   100G  0 part /
    sdb      8:16   1  14.9G  0 disk
    sr0     11:0    1  58.3M  0 rom  /media/embedfire/VBox_GAs_6.1.18
    

    可看到新增加了sdb设备,此处请务必检查好sd卡所对应的磁盘设备,以免破坏其他磁盘的数据!

  4. 执行以下烧录命令,将u-boot-dtb.imx烧写到/dev/sdb中

    示例命令
    1
    sudo dd iflag=dsync oflag=dsync if=u-boot-dtb.imx of=/dev/sdb seek=2
    

    烧录成功提示如下信息。

    1
    2
    3
    4
    5
    6
    embedfire@embedfire-VirtualBox:~$ sudo dd iflag=dsync oflag=dsync if=u-boot-dtb.imx of=/dev/sdb seek=2
    [sudo] embedfire 的密码:
    记录了782+0 的读入
    记录了782+0 的写出
    400384 bytes (400 kB, 391 KiB) copied, 15.0757 s, 26.6 kB/s
    embedfire@embedfire-VirtualBox:~$
    
  5. 将sd卡插到开发板上将拨码开关设置sd卡启动打开电源即可启动uboot。