嵌入式系统移植--uboot使用和sd卡制作

目录

uboot介绍

Bootloader介绍

uboot启动盘的制作

SD卡实验步骤

uboot使用

1.uboot模式

2.uboot帮助命令

3.uboot环境变量命令

4.uboot常用环境变量

5.u-boot访问存储器命令

6.u-boot自启动环境变量


uboot介绍

U-Boot(Universal Boot Loader)是一款开源的、通用的、广泛使用的引导(boot)加载器。它是一个通用的引导加载程序,可适用于多种处理器体系结构,例如ARM、MIPS、PowerPC等,并能够在各种嵌入式设备(例如路由器、嵌入式系统、IoT设备等)中使用。它的主要功能是从存储设备中加载操作系统内核,并在启动时设置硬件环境,以确保操作系统能够正确地运行。U-Boot不仅可以加载Linux内核,还支持加载其他操作系统内核,例如Android和FreeRTOS等。除此之外,U-Boot还支持调试、诊断、升级、启动、运行时环境更新等功能。它是嵌入式Linux系统中不可或缺的一个基本组件。本质是

Bootloader介绍

Bootloader(引导加载程序)是计算机系统中非常重要的一个组成部分,它的主要功能是在计算机系统启动时加载操作系统内核并进行初始化,以确保操作系统能够正确运行。具体来说,Bootloader的主要功能包括:

  1. 加载内核:在计算机启动时,Bootloader会从指定的位置读取操作系统内核,并将其加载到内存中。

  2. 设置硬件环境:在加载内核之前,Bootloader会初始化硬件设备,例如CPU、内存、IO设备等,以确保内核能够正确运行。

  3. 提供系统选择:Bootloader可以提供多个操作系统选择,例如多个Linux内核或Windows操作系统等。

  4. 系统配置:Bootloader还可以对系统进行配置,例如设置系统参数、修改Linux内核启动参数等。

  5. 恢复模式:在系统出现问题时,Bootloader可以进入恢复模式,以便用户修复系统。

  6. 加密和验证:Bootloader还可以对内核进行加密和验证,以确保系统的安全性。

嵌入式领域常用的bootloader就是uboot

uboot启动盘的制作

制作u-boot启动盘的步骤如下:

  1. 下载u-boot的源代码,可以从u-boot官网(https://www.denx.de/wiki/U-Boot)上下载最新版本的源代码

  2. 安装交叉编译工具链,根据目标设备的处理器架构选择对应的交叉编译工具链,例如arm-linux-gcc

  3. 编译u-boot源代码,根据目标设备的处理器架构和启动方式选择对应的编译选项,一般来说,我们需要指定交叉编译工具链、目标处理器架构、启动方式等参数

  4. 生成启动盘,将编译出来的u-boot二进制文件(u-boot.bin)烧录到启动盘中,可以使用dd命令或者其他烧录工具进行操作。

  5. 验证启动盘,将启动盘插入目标设备并启动,如果u-boot成功启动并加载内核,则表示启动盘制作成功。

SD卡实验步骤

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.binu-boot-fs4412.bin > win-u-boot-fs4412.bin

4.再执行如下命令,制作一个1M的空镜像(用于擦除SD卡中原有的数据)

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

4.把生成的win-u-boot-fs4412.bin和clear.bin拷贝到windows下

5.将SD卡插入到电脑上(卡槽/USB读卡器均可),使其在windows下识别(若不识别,可能是已经在ubuntu中识别了,在可移动设备中将其断开即可)

6.打开在弹出的界面中先选择要烧写的镜像文件(clear.bin),然后选择要烧写的设备(SD卡)最后单击“Write”进行烧写。

uboot使用

1.uboot模式

自启动模式
    uboot启动后若没有用户介入,倒计时结束后会自动执行自启动

    环境变量(bootcmd)中设置的命令(一般作加载和启动内核)

交互模式
    倒计时结束之前按下任意按键uboot会进入交互模式,交互模式下

    用户可输入uboot命令

2.uboot帮助命令

u-boot提供了丰富的帮助命令,以帮助用户了解和使用该系统。以下是一些常用的u-boot帮助命令:

  1. help:列出所有支持的命令列表。

  2. help command:获取特定命令的帮助信息,例如help bootm。

  3. ?:与help命令类似,可以获取所有支持的命令列表。

  4. printenv:打印当前环境变量的所有内容。

  5. setenv:设置环境变量的值。

  6. saveenv:保存修改后的环境变量。

  7. reset:重启系统。

  8. ping:测试网络连接是否成功。

  9. tftpboot:下载文件到指定地址,例如tftpboot 0x80000000 uImage。

  10. run:执行预定义的一组命令序列,例如run bootcmd。

上述命令仅是u-boot中的一小部分,每个命令都有不同的参数和用法,需要根据实际需求进行使用。可以通过help命令获取更多帮助信息。

3.uboot环境变量命令

  1. printenv:显示环境变量

  2. setenv:设置环境变量

  3. saveenv:保存环境变量到Flash中

  4. unsetenv:删除环境变量

  5. reset:重启系统

  6. bootm:从内存启动操作系统

  7. tftpboot:从网络下载文件到内存中

  8. erase:擦除Flash中的数据

  9. mw:写入数据到内存中

  10. md:从内存中读取数据

  11. version:显示U-Boot版本信息

  12. help:显示命令帮助信息

  13. loadb: 通过Kermit协议下载文件到指定的内存地址

4.uboot常用环境变量

以下是一些常用的U-Boot环境变量:

  1. bootargs:启动内核所需的命令行参数

  2. bootdelay:启动延迟时间(秒)

  3. bootcmd:启动命令

  4. bootcmd_mmc:使用MMC卡启动命令

  5. bootcmd_usb:使用USB启动命令

  6. bootcmd_net:使用网络启动命令

  7. ipaddr:本地IP地址

  8. serverip:TFTP服务器的IP地址

  9. ethaddr:本地网卡MAC地址

  10. stderr:标准错误输出设备

这些环境变量可以通过setenv命令进行设置和修改,也可以通过printenv命令进行查看。一般情况下,我们需要根据不同的硬件平台和启动方式来设置这些环境变量。

5.u-boot访问存储器命令

U-Boot中的mmc命令可以用于访问MMC/SD卡,包括读取、写入、格式化等操作。下面举例说明使用mmc命令访问存储器的常见操作:

  1. mmc dev - 选择MMC/SD卡设备

    在使用mmc命令之前,需要先选择MMC/SD卡设备,可以使用mmc dev命令来选择设备号,例如mmc dev 0表示选择第一个MMC/SD卡设备。

  2. mmc list - 显示可用的MMC/SD卡设备

    当系统中有多个MMC/SD卡设备时,可以使用mmc list命令来列出所有可用的设备。

  3. mmc read - 从MMC/SD卡中读取数据

    可以使用mmc read命令从MMC/SD卡中读取数据,并将数据存储到指定的内存地址。例如:mmc read 0x100000 0x0 0x100 表示从MMC/SD卡的起始扇区(0x0)开始读取0x100个扇区的数据,并将数据存储到地址0x100000处。

  4. mmc write - 将数据写入MMC/SD卡

    可以使用mmc write命令将数据写入MMC/SD卡,并将数据从指定的内存地址复制到MMC/SD卡的指定扇区。例如:mmc write 0x100000 0x0 0x100 表示从地址0x100000开始复制0x100个扇区的数据到MMC/SD卡的起始扇区(0x0)处。

  5. mmc erase - 擦除MMC/SD卡的数据

    可以使用mmc erase命令擦除MMC/SD卡中指定扇区的数据。例如:mmc erase 0x0 0x100 表示从MMC/SD卡的起始扇区(0x0)开始擦除0x100个扇区的数据。

需要注意的是,使用mmc命令访问MMC/SD卡时,需要确保卡片已经挂载并初始化完成,否则可能会导致命令执行失败。同时,操作的扇区数和扇区大小需要根据实际情况进行设置,否则可能会导致数据损坏。

6.u-boot自启动环境变量

U-Boot中的自启动环境变量包括bootcmd、bootdelay和autoload等,这些变量可以控制系统启动时的行为。具体说明如下:

  1. bootcmd

    bootcmd是U-Boot系统启动时执行的命令,通常用于启动操作系统或者其他系统初始化工作。该变量的值通常是一个Shell命令序列,例如:bootcmd=run bootcmd_mmc; run bootcmd_usb。

  2. bootdelay

    bootdelay是系统启动时的等待时间,单位为秒。如果该变量的值为0,则系统不会等待,直接执行bootcmd命令。如果该变量的值大于0,则系统会等待相应的时间,然后执行bootcmd命令。

这些自启动环境变量可以通过U-Boot命令行界面或者配置文件进行设置,例如可以通过setenv命令设置bootcmd和bootdelay变量的值,或者在U-Boot启动时通过环境变量文件导入默认配置。可以根据实际情况进行设置,以满足系统启动的需求。

  • 13
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值