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

相关推荐
wuminyu6 小时前
C++协程实现接收端的零拷贝Buffer管理原理剖析
java·linux·c语言·jvm·c++
科力锐品牌君7 小时前
应用级灾备 | 海量非结构化数据如何实现高效数据保护
linux·运维·网络·安全·系统安全·数据安全·灾备
zhangrelay7 小时前
ROS项目设计案例智能大模型正经乱答案例
linux·笔记·学习·ubuntu·机器人
流浪0018 小时前
Linux系统篇39——线程(四) pthread库的由来和线程的创建与等待
linux·操作系统·线程·pthread库
Lancker8 小时前
chnroute-linux — 中国大陆 IP 段每日自动更新 + 「仅允许国内访问」落地
linux·运维·tcp/ip
高山有多高8 小时前
【Linux笔记】Linux进程与守护进程
linux
大侠归来9 小时前
Ubuntu 搭建 APUE 环境:从源码编译到第一个示例跑通
linux·运维·ubuntu
shdkfbbv10 小时前
【无标题】
linux·运维·服务器
周洲083011 小时前
STM32片内Flash读写深度详解|掉电参数保存、底层原理
linux·前端·stm32
shimly12345611 小时前
比 find + grep 更好用的 nm + addr2line
linux