IMX6ULL学习笔记(7)——通过SD卡启动U-Boot

一、简介

在 Ubuntu 下可以更精细地操作 SD/TF 卡:可以把 sdcoard.img 整个烧写到卡上,也可以单独烧写 U-Boot 到卡上,甚至挂接卡上的文件系统后单独更新里面的文件。

常用于做 U-Boot 测试。

1.1 dd命令

主用功能是用于拷贝文件,也就是用指定大小的块去拷贝一个文件,并在拷贝的同时进行指定的转换(默认从标准输入拷贝到标准输出,这意味dd可以在管道中使用)。这个拷贝过程简单理解就是读取,转换并输出数据。

用法:
dd [bs=<字节数>][cbs=<字节数>][conv=<关键字>][count=<区块数>][ibs=<字节数>][if=<文件>][obs=<字节数>][of=<文件>][seek=<区块数>][skip=<区块数>][--help][--version]

二、识别SD卡

首先 SD 卡插入读卡器,再把读卡器插入电脑。

  • VMWare 有时候会自动弹出对话框,选择 连接到虚拟机 即可。

  • 如果没有对话框,可以通过菜单 可移动设备 找到 SD 卡,点击 连接

使用 lsblk 命令查看当前磁盘设备。

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

三、使用dd命令将uboot烧写到SD中

注意,这里的uboot要编译emmc版本的,并且确定你挂载上去烧写好的SD卡在/dev/sd中的哪个

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

sudo dd iflag=dsync oflag=dsync if=u-boot-dtb.imx of=/dev/sdb seek=2

  • iflag:输入(读取数据)特征
  • oflag:输出(写入数据)特征
  • if:输入源,即要写入的文件
  • of:输出源,即要写入的设备名称
  • seek=2:跳过2个扇区,从第三个扇区开始复制。详细解释查看下面 六、附录:U-boot.imx的SD卡烧录

烧录成功提示如下信息:

四、设置为SD卡启动模式

开发板插入烧录好U-Boot的SD卡。

根据以下BOOT拨码开关启动配置表,调整拨码开关为SD卡启动方式,即2-5-8位拨到on,其他位拨到0

编号 名称 NAND FLASH eMMC SD USB
1 MODE0 0 0 0 1
2 MODE1 1 1 1 0
3 CFG1-4 1 0 0 X
4 CFG1-5 0 1 0 X
5 CFG1-6 0 1 1 X
6 CFG1-7 1 0 0 X
7 CFG2-3 0 1 0 X
8 CFG2-5 0 0 1 X

然后注意使用SD卡时开发板右下角的J2竖排针不要盖有跳帽需断开(此为WIFI模块供电,核心板只引出一路SDIO,SD卡和WIFI不能同时用)

五、U-Boot启动

重新上电,在出现 Hit any key to stop autoboot: 倒计时的时候按下键盘上的回车键,就会进入 uboot 的命令行模式。

当进入到 uboot 的命令行模式以后,左侧会出现一个 “=>” 标志。
uboot 启动的时候会输出一些信息:

  • 第1行:uboot 版本号和编译时间,可以看出当前的 uboot 版本号是 2020.10,编译时间是 2022 年 9 月 4 日晚上 19 点 02 分。
  • 第3、4行:CPU 信息,可以看出当前使用的 CPU 是飞思卡尔的 I.MX6ULL(I.MX 以前属于飞思卡尔,然而飞思卡尔被 NXP 收购了),频率为 792MHz,但是此时运行在 396MHz。这颗芯片是工业级的,结温为-40°C~105°C。
  • 第5行:复位原因,当前的复位原因是 POR。I.MX6ULL 芯片上有个 POR_B 引脚,将这个引脚拉低即可复位 I.MX6ULL。
  • 第6行:板子名字,当前的板子名字为 “MX6ULL 14x14 EVK”。
  • 第8行:提示当前板子的 DRAM(内存)为 512MB。
  • 第9行:提示当前板子有两个 MMC/SD 卡控制器:FSL_SDHC(0) 和 FSL_SDHC(1)。
  • 第10行:提示当前板子通过 MMC 方式启动。
  • 第11~13行:标准输入、标准输出和标准错误所使用的终端,这里都使用串口(serial)作为终端。
  • 第14行:网口信息

5.1 查看帮助

输入 help

5.2 查看U-Boot版本

输入 version

六、附录:U-boot.imx的SD卡烧录

u-boot.imx = IVT + Boot Data + DCD + u-boot.bin

IVT数据格式:IVT 包含了镜像程序的入口点、指向 DCD 的指针和一些用作其它用途的指针。

查看数据手册,找到IVT的偏移量和加载数据长度大小表:

SD加载程序大小是4K,IVT 偏移为 1Kbyte,IVT+Boot data+DCD 的总大小为 4KByte - 1KByte=3KByte。

u-boot.imx要有一个 1Kbyte 的偏移,而 SD 卡每个扇区为 512 字节,那么 load.imx 要跳过2个扇区,从第三个扇区烧写


• 由 Leung 写于 2022 年 9 月 4 日

• 参考:4. Uboot的烧录
    IMX6的U-boot.imx分析及sd卡烧录详解(dd命令写入)

猜你喜欢

转载自blog.csdn.net/qq_36347513/article/details/126694551
今日推荐