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

相关推荐
疯狂吧小飞牛4 小时前
GPG基础指令
linux·服务器·网络
C++ 老炮儿的技术栈4 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
todoitbo6 小时前
用虚拟局域网打通 Win/Mac/Linux 三端:跨设备协作的实用方案
linux·运维·macos
源远流长jerry6 小时前
RDMA 基本操作类型详解:从双端通信到单端直访
linux·网络·tcp/ip·ip
Sylvia-girl7 小时前
Linux下的基本指令1
linux·运维·服务器
wyt5314297 小时前
Redis的安装教程(Windows+Linux)【超详细】
linux·数据库·redis
17(无规则自律)7 小时前
【Linux驱动实战】:字符设备之ioctl与mutex全解析
linux·c语言·驱动开发·嵌入式硬件
天赐学c语言8 小时前
Linux - 应用层自定义协议与序列/反序列化
linux·服务器·网络·c++
jarreyer8 小时前
CentOS 7 无法使用 yum 安装软件
linux·运维·centos
薛定谔的悦10 小时前
告别传统BMS!深度解读阳光电源 BM^2T 电池管理技术白皮书
linux·能源·储能·bms·ems