LV09-02-uboot-01-烧写与加载
本文主要是uboot——烧写与加载的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
| Windows | windows11 |
| Ubuntu | Ubuntu16.04的64位版本 |
| VMware® Workstation 16 Pro | 16.2.3 build-19376536 |
| SecureCRT | Version 8.7.2 (x64 build 2214) - 正式版-2020年5月14日 |
| Linux开发板 | 华清远见 底板: FS4412_DEV_V5 核心板: FS4412 V2 |
| u-boot | 2013.01 |
点击查看本文参考资料
| 参考方向 | 参考原文 |
| --- | --- |
点击查看相关文件下载
| 文件 | 下载链接 |
| uboot_bin.rar | uboot原始镜像(不可以直接烧写)和LED灯闪烁测试程序 |
| WIn32_disk_imager.rar | windows下向SD卡烧写uboot镜像的软件 |
| example_uboot.rar | 可以直接烧写到SD卡的uboot镜像文件 |
一、uboot的烧写
1. 生成镜像
我们这里先直接拿编译好的uboot镜像来进行封装,使其可以烧写到SD卡中。
- 下载解压相应文件
我在windows下将文件下载下来后存放到共享目录中并解压,此时我们可以得到如下两个文件:
下边u-boot-fs4412.bin就是未经封装的bin文件,interface.bin是一个led灯闪烁的测试文件。解压完毕后,我们将文件放入Ubuntu中,在终端执行以下命令:
1 | mkdir -p ~/3tftp/fs4412 # 创建一个存放相关文件的目录 |
- 制作一个
512字节的空镜像
我们在终端执行以下命令,制作一个512Bytes的空镜像:
1 | sudo dd if=/dev/zero of=zero.bin count=1 |
执行后我们会得到如下提示:
1 | 记录了1+0 的读入 |
然后在当前目录下会生成一个512字节的zero.bin文件。
- 将
uboot追加到zero.bin之后生成win-u-boot-fs4412.bin
我们在终端执行以下命令:
1 | cat zero.bin u-boot-fs4412.bin > win-u-boot-fs4412.bin |
然后我们便会得到一个名为win-u-boot-fs4412.bin的bin文件,这个文件将会被烧写到SD卡中。
- 制作一个
1M的空镜像
我们再制作一个1M字节的空镜像用于擦除SD卡中原有的数据:
1 | sudo dd if=/dev/zero of=clear.bin count=2048 |
然后我们在当前目录下会得到一个1M字节的名为clear.bin的bin文件。
2. 制作SD卡启动盘
其实这一步就是将我们上边生成的win-u-boot-fs4412.bin文件烧写到SD卡中去。
- 下载
win32_disk_imager.rar文件并解压
解压后我们会得到一个程序烧写的软件,这个软件是免安装的,可以直接运行。
软件打开后如下图所示:
- 清除
SD卡原有数据
其实就是将clear.bin文件烧进SD卡:
然后会有以下提醒,我们选择Yes即可。
烧写成功会有成功的提醒:
因为clear.bin 为空镜像,所以写入后SD卡中的前2048个扇区中的数据被擦除。
- 烧写
uboot镜像文件
首先选择win-u-boot-fs4412.bin文件,然后点击写入:
后边弹窗也选择Yes,看到如下提醒,便是写入成功了:
3. 启动uboot
烧写完成后,我们将SD卡插入开发板卡槽,然后将开发板的拨码开关卡槽调整到TF/SD卡启动的方式,在SecureCRT终端中若打印以下信息,且LED2被点亮,那么就说明我们已经烧写成功了:
二、eMMC加载uboot
对于uboot我们使用的是从SD卡启动,我们也可以将uboot安装到eMMC 中然后从eMMC启动uboot,这样就可以不使用SD卡了。
1. 文件准备
我们前边将u-boot-fs4412.bin已经存放到ubuntu的/home/hk/3tftp/fs4412目录下了,所以这里就暂时不需要其他文件了。
2. 镜像写入eMMC
- 通过
tftp下载u-boot-fs4412.bin
我们在SecureCRT中输入以下命令:
1 | tftp 0x41000000 /fs4412/u-boot-fs4412.bin |
下载成功后会有以下提示信息:
1 | dm9000 i/o: 0x5000000, id: 0x90000a46 |
- 将
u-boot-fs4412.bin安装到eMMC中指定的扇区
首先打开eMMC设备:
1 | fs4412 # emmc open 0 |
然后将数据写入到eMMC:
1 | fs4412 # mmc write 0 0x41000000 0x0 0x800 |
最后关闭eMMC设备:
1 | fs4412 # emmc close 0 |
3. 调整开发板启动方式
这一步就是看开发板上的丝印,看一下拨码开关是怎样的状态对应eMMC启动即可。
4. 重启开发板
拨码开关拨到相应位置的时候,拔掉SD卡,然后重启开发板,观察是否可以成功启动即可。若有以下信息打印,则证明启动成功:
1 | U-Boot 2013.01 (Apr 11 2020 - 04:15:49) for fs4412 |