linux(第十四期)--Uboot移植(1)-- Ubuntu20.04

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言

[一、NXP 官方开发板uboot编译测试](#一、NXP 官方开发板uboot编译测试)

[1、编译 NXP 官方开发板对应的 uboot](#1、编译 NXP 官方开发板对应的 uboot)

2、烧写验证测试

总结


前言

之前我们详细的分析了 uboot 的启动流程,对 uboot 有了一个初步的了解。前两章我们都是使用的正点原子提供的 uboot,本章我们就来学习如何将NXP官方的 uboot 移植到正点原子的 I.MX6ULL 开发板上,学习如何在uboot中添加我们自己的板子。

uboot 移植并非从零开始,通常流程是:

  1. 半导体厂商(如 NXP)会将uboot移植到自家原厂开发板,测试后发布为原厂BSP包。
  2. 做产品时参考原厂开发板做硬件,基于原厂 BSP 包修改,将 uboot 移植到目标硬件。

我们使用的是正点原子的I.MX6ULL 开发板,此开发板参考的是 NXP 官方的 I.MX6ULL EVK 开发板做的硬件,因 此我们在移植 uboot 的时候就可以以 NXP 官方的 I.MX6ULL EVK 开发板为蓝本。

一、NXP 官方开发板uboot编译测试

移植前先编译 NXP 官方 I.MX6ULL EVK 对应的 uboot,需先在 configs 目录选择对应配置。

如下图所示:

uboot 的 configs 目录中,mx6ul 开头对应 I.MX6UL 芯片,mx6ull 开头对应 I.MX6ULL 开发板;I.MX6UL/6ULL 分 9x9mm、14x14mm 尺寸,对应 mx6ull_9x9、mx6ull_14x14 开头的配置文件。

我们用的 I.MX6ULL 开发板为 14x14mm 芯片,且分 EMMC、NAND 版本,只需关注 mx6ull_14x14_evk_emmc_defconfig 和 mx6ull_14x14_evk_nand_defconfig;本次讲解 EMMC 版本移植,选 mx6ull_14x14_evk_emmc_defconfig 作为默认配置文件。

1、编译 NXP 官方开发板对应的 uboot

找到 NXP 官方 I.MX6ULL EVK 开发板对应的默认配置文件以后就可以编译一下,使用如下
命令编译 uboot:

复制代码
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_evk_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16

编译完成结果如下图:


从上图 可以看出,编译成功。我们在编译的时候需要输入 ARCH 和 CORSS_COMPILE
这两个变量的值,这样太麻烦了。我们可以直接在顶层 Makefile 中直接给 ARCH 和
CORSS_COMPILE 赋值,修改如下 所示:

上图 3 中的 250 、 251 行就是直接给 ARCH 和 CROSS_COMPILE 赋值,这样我们就可
以使用如下简短的命令来编译 uboot 了:

复制代码
make mx6ull_14x14_evk_emmc_defconfig
make V=1 -j16

编译成功如下:

如果不想修改makfie以及不想输入那么多命令,则可以使用shell 脚本,
shell 脚本名为 mx6ull_14x14_emmc.sh ,然后在 shell 脚本里面输入如下
内容:

复制代码
#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_evk_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16

记得给 mx6ull_14x14_emmc.sh 这个文件可执行权限,使用 mx6ull_14x14_emmc.sh 脚本编
译 uboot 的时候每次都会清理一下工程,然后全部重新编译,编译的时候直接执行这个脚本就
行了,命令如下:

复制代码
bash mx6ull_14x14_emmc.sh

2、烧写验证测试

将 imxdownload 软件拷贝到 uboot 源码根目录下,然后使用 imxdownload 软件将 u-boot.bin
烧写到 SD 卡中,烧写命令如下:

复制代码
chmod 777 imxdownload  //给予imxdownload可执行权限
./imxdownload u-boot.bin /dev/sdb  //烧写到SD卡中,不能烧写到/dev/sda或sda1里面

烧写完成以后将 SD 卡插入 I.MX6U-ALPHA 开发板的 TF 卡槽中,最后设置开发板从 SD
卡启动。打开 SecureCRT ,设置好开发板所使用的串口并打开,复位开发板, SecureCRT 接收到
如下图 所示信息:

可以看出,uboot 启动正常,虽然我们用的是 NXP 官方 I.MX6ULL 开发板的 uboot,但是在正点原子的 I.MX6ULL 开发板上是可以正常启动的。而且 DRAM 识别正确,为512MB,如果用的 NAND 版本的核心版的话 uboot 启动会失败!因为 NAND 核心版用的 256MB的 DRAM。


总结

Uboot移植(1),验证了NXP 官方开发板uboot

相关推荐
pirateeee14 分钟前
Yocto 构建基于官方 imx6ull-14x14-evk 的 ubuntu 镜像
linux·嵌入式硬件
梦想的初衷~19 分钟前
CESM2 完整实操学习大纲:环境搭建、案例运行、耦合模拟与代码开发
linux·地球系统模式·cesm2·气候模式模拟·clm 陆面模型·cam 大气模式·模式移植编译
叼烟扛炮30 分钟前
Linux 学习笔记(三):文件管理与文本查看
linux·笔记·学习
Iruoyaoxh34 分钟前
linux-进程概念
linux
AbandonForce34 分钟前
Linux 网络:HTTP(一)基础与报文结构
linux·网络·http
yunwei371 小时前
eBPF 实例教程:跟踪 Intel NPU 内核驱动操作
linux·后端·性能优化
邪修king4 小时前
Re:Linux 系统篇(三十五):进程间通信Chapter2:从匿名管道到进程池:Linux 进程间通信实战(深度理解「先描述,再组织」)
java·linux·运维
2301_777998344 小时前
ARP协议进阶:ARP缓存、RARP与ARP欺骗原理解析
linux·服务器·网络·网络协议·缓存
Zenova EdgeOS11 小时前
Linux 内核日志 dmesg 进阶实战:从现场过滤到持久化闭环
linux·运维·服务器
郝亚军12 小时前
ec_private.pem的生成方法
linux·运维·服务器