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的烧写

1. 生成镜像

我们这里先直接拿编译好的uboot镜像来进行封装,使其可以烧写到SD卡中。

  • 下载解压相应文件

我在windows下将文件下载下来后存放到共享目录中并解压,此时我们可以得到如下两个文件:

image-20220814211150915

下边u-boot-fs4412.bin就是未经封装的bin文件,interface.bin是一个led灯闪烁的测试文件。解压完毕后,我们将文件放入Ubuntu中,在终端执行以下命令:

1
2
3
mkdir -p ~/3tftp/fs4412           # 创建一个存放相关文件的目录
cd ~/3tftp/fs4412 # 进入fs4412文件夹
cp /mnt/hgfs/Sharedfiles/test/uboot/uboot_bin/* . # 拷贝相关文件
  • 制作一个512 字节的空镜像

我们在终端执行以下命令,制作一个512Bytes的空镜像:

1
sudo dd if=/dev/zero of=zero.bin count=1

执行后我们会得到如下提示:

1
2
3
记录了1+0 的读入
记录了1+0 的写出
512字节已复制,0.000298393 s,1.7 MB/s

然后在当前目录下会生成一个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.binbin文件,这个文件将会被烧写到SD卡中。

  • 制作一个1M的空镜像

我们再制作一个1M字节的空镜像用于擦除SD卡中原有的数据:

1
sudo dd if=/dev/zero of=clear.bin count=2048

然后我们在当前目录下会得到一个1M字节的名为clear.binbin文件。

2. 制作SD卡启动盘

其实这一步就是将我们上边生成的win-u-boot-fs4412.bin文件烧写到SD卡中去。

  • 下载win32_disk_imager.rar文件并解压

解压后我们会得到一个程序烧写的软件,这个软件是免安装的,可以直接运行。

image-20220814212448313

软件打开后如下图所示:

image-20220814212636263
  • 清除SD卡原有数据

其实就是将clear.bin文件烧进SD卡:

image-20220814213111036

然后会有以下提醒,我们选择Yes即可。

image-20220814213135098

烧写成功会有成功的提醒:

image-20220814213208205

因为clear.bin 为空镜像,所以写入后SD卡中的前2048个扇区中的数据被擦除。

  • 烧写uboot镜像文件

首先选择win-u-boot-fs4412.bin文件,然后点击写入:

image-20220814213342953

后边弹窗也选择Yes,看到如下提醒,便是写入成功了:

image-20220814213445809

3. 启动uboot

烧写完成后,我们将SD卡插入开发板卡槽,然后将开发板的拨码开关卡槽调整到TF/SD卡启动的方式,在SecureCRT终端中若打印以下信息,且LED2被点亮,那么就说明我们已经烧写成功了:

image-20220814213811541

二、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
2
3
4
5
6
7
8
9
10
11
12
dm9000 i/o: 0x5000000, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 11:22:33:44:55:66
operating at 100M full duplex mode
Using dm9000 device
TFTP from server 192.168.10.101; our IP address is 192.168.10.102
Filename '/fs4412/u-boot-fs4412.bin'.
Load address: 0x41000000
Loading: T ####################################
92.8 KiB/s
done
Bytes transferred = 527104 (80b00 hex)
  • u-boot-fs4412.bin安装到eMMC中指定的扇区

首先打开eMMC设备:

1
fs4412 # emmc open 0

然后将数据写入到eMMC

1
2
3
4
5
fs4412 # mmc write 0 0x41000000 0x0 0x800

# 写入成功会有以下提醒:
MMC write: dev # 0, block # 0, count 2048. 2048 blocks write finish
2048 blocks written: OK

最后关闭eMMC设备:

1
2
3
fs4412 # emmc close 0
# 关闭成功会有以下提醒:
eMMC CLOSE Success.!!

3. 调整开发板启动方式

这一步就是看开发板上的丝印,看一下拨码开关是怎样的状态对应eMMC启动即可。

4. 重启开发板

拨码开关拨到相应位置的时候,拔掉SD卡,然后重启开发板,观察是否可以成功启动即可。若有以下信息打印,则证明启动成功:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
U-Boot 2013.01 (Apr 11 2020 - 04:15:49) for fs4412

CPU: Exynos4412@1000MHz

Board: ORIGEN
DRAM: 1 GiB
WARNING: Caches not enabled
PMIC: S5M8767(VER5.0)
MMC: MMC0: 7456 MB
In: serial
Out: serial
Err: serial

MMC read: dev # 0, block # 48, count 16 ...16 blocks read: OK
eMMC CLOSE Success.!!


Checking Boot Mode ... EMMC4.41
Net: dm9000
Hit any key to stop autoboot: 3