LV.13 D5 uboot概述及SD卡启动盘制作 学习笔记

发布时间:2023年12月18日

一、uboot概述

1.1 开发板启动过程

????????开发板上电后首先运行SOC内部iROM中固化的代码(BL0),这段代码先对基本的软硬件环境(时钟等...)进行初始化,然后再检测拨码开关位置获取启动方式,然后再将对应存储器中的uboot搬移到内存,然后跳转到uboot运行。

????????uboot开始运行后首先对开发板上的软硬件环境做进一步初始化,然后将linux内核、设备树(dtb)、根文件系统(rootfs)从外部存储器(或网络)搬移到内存,然后跳转到linux运行。

????????linux开始运行后先对系统环境做初始化,当系统启动完成后,Linux再从内存中(或网络)挂载根文件系统 。?

所以首先需要在SD卡中刷一个uboot。

1.2 Bootloader

Bootloader ? ?

????????在操作系统运行之前运行的一小段代码,用于将软硬件环境初始化到 一个合适的状态,为操作系统的加载和运行做准备(其本身不是操作系统) ?

Bootloader基本功能 ? ?

????????-> 初始化软硬件环境 ? ?

????????-> 引导加载linux内核 ? ?

????????-> 给linux内核传参 ? ?

????????-> 执行用户命令

注:bootloader是启动引导程序的统称,嵌入式linux常用的bootloader是uboot

1.3 常用的Bootloader

二、SD卡启动盘制作

2.1?SD卡存储结构

????????SD卡的存储以扇区为单位,每个扇区的大小为512Byte, 其中零扇区存储分区表(即分区信息),后续的扇区可自行分区和格式化; ? ?

????????若选择SD卡启动,处理器上电后从第一个扇区开始将其中的内容搬移到内存,所以我们把uboot放到从第一个扇区开始之后的空间, 之后的空间根据个人需求可进行分区和格式化

2.2 实验步骤

1 、将资料中“ u-boot 镜像”中的 u-boot-fs4412.bin 拷贝到 ubuntu 的家目录下
2 、在终端输入如下命令,制作一个 512 字节的空镜像
$ sudo dd if=/dev/zero of=zero.bin count=1
显示如下信息,则表示制作成功
3 、 执行如下命令,将 uboot 追加到 zero.bin 之后生成 win-u-boot-fs4412.bin
$ cat zero.bin u-boot-fs4412.bin > win-u-boot-fs4412.bin
把zero.bin和u-boot-fs4412.bin输出重定向到win-u-boot-fs4412.bin中。我们希望把uboot烧到1扇区之后,所以前面需要加一个空的zero.bin。
4 、 再执行如下命令,制作一个 1M 的空镜像(用于擦除 SD 卡中原有的数据)
$ sudo dd if=/dev/zero of=clear.bin count=2048
5、 把生成的 win-u-boot-fs4412.bin clear.bin 拷贝到 windows
6 、 将 SD 卡插入到电脑上(卡槽 /USB 读卡器均可),使其在 windows 下识别(若不识别,
可能是已经在 ubuntu 中识别了,在可移动设备中将其断开即可)
7 、双击打开资料中“ ImageWriter ”下的“ Win32DiskImager
8 、 在弹出的界面中先选择要烧写的镜像文件( clear.bin ),然后选择要烧写的设备( SD 卡)
最后单击“ Write ”进行烧写
9 、 在弹出的对话框中单击“ Yes
10 、在弹出的对话框中单击“ OK ”完成烧写
因为 clear.bin 为空镜像,所以写入后 SD 卡中的前 2048 个扇区中的数据被擦除
11 、再选择 uboot 镜像完( win-u-boot-fs4412.bin ),然后单击“ Write ”进行烧写
12 、在弹出的对话框中单击“ Yes
13 、在弹出的对话框中单击“ OK ”完成烧写
14 、将 SD 卡插入开发板的卡槽,调整拨码开关为 SD 卡启动,查看 uboot 是否能正常启动
注: uboot 正常启动后 LED2 灯会点亮且终端上也会打印 uboot 相关的信息

?

文章来源:https://blog.csdn.net/djjyy/article/details/135035496
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。