提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
[一、NXP 官方开发板uboot编译测试](#一、NXP 官方开发板uboot编译测试)
[1、编译 NXP 官方开发板对应的 uboot](#1、编译 NXP 官方开发板对应的 uboot)
前言
之前我们详细的分析了 uboot 的启动流程,对 uboot 有了一个初步的了解。前两章我们都是使用的正点原子提供的 uboot,本章我们就来学习如何将NXP官方的 uboot 移植到正点原子的 I.MX6ULL 开发板上,学习如何在uboot中添加我们自己的板子。
uboot 移植并非从零开始,通常流程是:
- 半导体厂商(如 NXP)会将uboot移植到自家原厂开发板,测试后发布为原厂BSP包。
- 做产品时参考原厂开发板做硬件,基于原厂 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