栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

linux系统移植篇(二)—— Uboot使用介绍

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

linux系统移植篇(二)—— Uboot使用介绍

linux系列目录:
linux基础篇(一)——GCC和Makefile编译过程
linux基础篇(二)——静态和动态链接
ARM裸机篇(一)——i.MX6ULL介绍
ARM裸机篇(二)——i.MX6ULL启动过程
ARM裸机篇(三)——i.MX6ULL第一个裸机程序
ARM裸机篇(四)——重定位和地址无关码
ARM裸机篇(五)——异常和中断
linux系统移植篇(一)—— linux系统组成
linux系统移植篇(二)—— Uboot使用介绍

文章目录
  • 一、Uboot介绍
  • 二、uboot烧录与启动
    • 1. 获取uboot
    • 2. uboot目录结构
    • 3. 编译uboot
    • 4. 烧写uboot到 SD 卡
  • 三、uboot常用命令使用
    • 1. 帮助命令
    • 2. 信息查询命令
    • 3. 内存操作命令
    • 4. 网络操作命令
    • 5. EMMC 和 SD 卡操作命令
    • 6. 文件系统操作命令
    • 7. BOOT 操作命令
    • 8. 其他常用命令


一、Uboot介绍

Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段 bootloader 程序。这段 bootloader 程序会先初始化 DDR 等外设,然后将 Linux 内核从 flash(NAND, NOR FLASH,SD, MMC 等) 拷贝到 DDR 中,最后启动 Linux 内核。当然了, bootloader 的实际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核, bootloader 和 Linux 内核的关系就跟 PC 上的 BIOS 和Windows 的关系一样, bootloader 就相当于 BIOS。所以我们要先搞定 bootloader,不过,有很多现成的 bootloader 软件可以使用,比如 U-Boot、 vivi、 RedBoot 等等,其中以 U-Boot 使用最为广泛。

uboot 的全称是 Universal Boot Loader, uboot 是一个遵循 GPL 协议的开源软件, uboot 是一个裸机代码,可以看作是一个裸机综合例程。现在的 uboot 已经支持液晶屏、网络、 USB 等高级功能。 uboot 官网为 http://www.denx.de/wiki/U-Boot/

我们一般不会直接用 uboot 官方的 U-Boot 源码的。 uboot 官方的 uboot 源码是给半导体厂商准备的,半导体厂商会下载 uboot 官方的 uboot 源码,然后将自家相应的芯片移植进去。也就是说半导体厂商会自己维护一个版本的 uboot,这个版本的 uboot 相当于是他们定制的。

NXP 就 维 护 的 2016.03 这 个 版 本 的 uboot , 下 载 地 址 为 :
https://source.codeaurora.org/external/imx/uboot-imx/

如果是我们自己做的板子就需要修改 NXP 官方的 uboot,使其支持我们自己做的板子,这三种 uboot的区别如表所示:

二、uboot烧录与启动 1. 获取uboot

野火提供的 uboot 下载链接:
https://gitee.com/Embedfire/ebf_linux_uboot

git clone https://gitee.com/Embedfire/ebf_linux_uboot.git
//切换 ebf_v2020_10_imx 分支
git checkout ebf_v2020_10_imx
2. uboot目录结构


其中与移植官方uboot需要修改的文件夹有以下几个:

  1. board
    不同开发板的代码,移植uboot的时候新建开发板bsp也是在这里对应的芯片厂商下面新建。其中的mx6ullfire就是野火开发板的文件

    2.configs
    存放不同开发板的uboot配置文件,命名规则统一为xxx_defconfig,xxx表示为开发板名称。其中mx6ull_fire_mmc_defconfig就是野火开发板的配置文件。
3. 编译uboot
  1. 安装编译工具和依赖:
sudo apt install make git gcc-arm-none-eabi gcc bison flex libssl-dev dpkg-dev lzop libncurses5-dev
  1. 编译
//清除上次生成的编译环境,避免之前的环境干扰影响编译结果
sudo make distclean
//加载板级配置文件,具体的板级配置文件在 uboot 根目录下的 configs 目录下
sudo make ARCH=arm CROSS_COMPILE=arm-none-eabi- mx6ull_fire_mmc_defconfig
//设置编译架构为 arm 编译工具链为arm-none-eabi- 然后开始编译
sudo make ARCH=arm CROSS_COMPILE=arm-none-eabi-

编译出的文件:

  • u-boot:编译出的ELF格式的uboot镜像文件
  • u-boot.bin:编译出来的二进制格式的uboot可执行镜像文件
  • u-boot.cfg:uboot的另一种配置文件
  • u-boot.imx:u-boot.bin添加头部信息以后的文件,NXP的CPU专用文件
  • u-boot.lds:链接脚本
  • u-boot.map:uboot映射文件
  • u-boot.srec:S-Record格式的镜像文件
  • u-boot.sym:uboot符号文件
  • u-boot-nodtb.bin:和u-boot.bin一样,u-boot-nodtb.bin的复制文件
4. 烧写uboot到 SD 卡

插上读卡器,使用 lsblk 命令查看磁盘设备,如下所示

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

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

烧录成功提示:

三、uboot常用命令使用

将SD卡插入板子,选择从SD卡启动,查看串口日志:

可以看出 uboot 打印出了板子的一些基本信息,包括 CPU、内存等信息。

uboot 支持很多的命令,功能十分强大,与 linux 类似,在执行某条 uboot 命令时,可使用tab 自动补全命令,在没有命令名冲突的情况下可以使用命令的前几个字母作为命令的输入,例如想要执行 reset 命令,输入 res 或 re 即可。

1. 帮助命令

当不清楚 uboot 支持什么命令时,可输入 help 或 ? 可查看 uboot 支持的命令列表,如下所示:

当需要具体使用哪个命令时,可使用 “help 命令” 或 “? 命令” 的方式查看具体命令的使用说明。

2. 信息查询命令 3. 内存操作命令 4. 网络操作命令 5. EMMC 和 SD 卡操作命令

mmc 命令能够对如 sd 卡以及 emmc 类的存储介质进行操作,以下进行简单说明,对于 mmc 命令不熟悉可使用 help mmc 查看相关命令的帮助,常用功能如下所示:

6. 文件系统操作命令 7. BOOT 操作命令 8. 其他常用命令
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/837499.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号