LV05-02-U-Boot-02-uboot移植

本文主要是uboot——uboot移植的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
PC端开发环境 Windows Windows11
Ubuntu Ubuntu20.04.2的64位版本
VMware® Workstation 17 Pro 17.6.0 build-24238078
终端软件 MobaXterm(Professional Edition v23.0 Build 5042 (license))
Win32DiskImager Win32DiskImager v1.0
Linux开发板环境 Linux开发板 正点原子 i.MX6ULL Linux 阿尔法开发板
uboot NXP官方提供的uboot,使用的uboot版本为U-Boot 2019.04
linux内核 linux-4.19.71(NXP官方提供)
点击查看本文参考资料
分类 网址 说明
官方网站 https://www.arm.com/ ARM官方网站,在这里我们可以找到Cotex-Mx以及ARMVx的一些文档
https://www.nxp.com.cn/ NXP官方网站
https://www.nxpic.org.cn/NXP 官方社区
https://u-boot.readthedocs.io/en/latest/u-boot官网
https://www.kernel.org/linux内核官网
其他网站 kernel - Linux source code (v4.15) - Bootlin linux内核源码在线查看
点击查看相关文件下载
分类 网址 说明
NXP https://github.com/nxp-imx NXP imx开发资源GitHub组织,里边会有u-boot和linux内核的仓库
nxp-imx/linux-imx/releases/tag/v4.19.71 NXP linux内核仓库tags中的v4.19.71
nxp-imx/uboot-imx/releases/tag/rel_imx_4.19.35_1.1.0 NXP u-boot仓库tags中的rel_imx_4.19.35_1.1.0
I.MX6ULL i.MX 6ULL Applications Processors for Industrial Products I.MX6ULL 芯片手册(datasheet,可以在线查看)
i.MX 6ULL Applications ProcessorReference Manual I.MX6ULL 参考手册(下载后才能查看,需要登录NXP官网)
Source Code https://elixir.bootlin.com/linux/latest/source linux kernel源码
https://elixir.bootlin.com/u-boot/latest/source uboot源码

这一篇笔记,我们来将这个2019.04版本的uboot移植到自己的开发板。

一、开发板默认配置文件

1. 添加默认配置文件

1
cp configs/mx6ull_14x14_evk_emmc_defconfig configs/mx6ull_alpha_emmc_defconfig

2. 修改配置文件

然后将文件 mx6ull_alpha_defconfig 中的内容改成下面的:

1
2
CONFIG_TARGET_MX6ULL_14X14_EVK=y --> CONFIG_TARGET_MX6ULL_ALPHA_EMMC=y
CONFIG_DEFAULT_DEVICE_TREE="imx6ull-14x14-evk" --> CONFIG_DEFAULT_DEVICE_TREE="imx6ull-alpha-emmc"

CONFIG_DEFAULT_DEVICE_TREE配置项所配置的是uboot启动时所需要的设备树名。

二、开发板对应的头文件

1. 添加开发板默认头文件

1
cp include/configs/mx6ullevk.h include/configs/mx6ull_alpha_emmc.h

2. 修改头文件

[alpha emmc]修改头文件 · 5862a61 · 苏木/u-boot - Gitee.com

三、开发板对应的板级文件

1. 添加开发板对应的板级文件

1
cp -r board/freescale/mx6ullevk  board/freescale/mx6ull_alpha_emmc

2. 修改板级文件

这里要改c文件,Makefile,MAINTAINERS,Kconfig,imximage.cfg共计五项内容。

[alpha emmc]修改板级文件夹相关文件 · 17486c6 · 苏木/u-boot - Gitee.com

四、设备树文件

这里不添加的话,会报错。

1. 添加设备树文件

1
cp arch/arm/dts/imx6ull-14x14-evk.dts arch/arm/dts/imx6ull-alpha-emmc.dts

2. 修改设备树Makefile

[alpha emmc]修改设备树Makefile · 982d610 · 苏木/u-boot - Gitee.com

五、网口移植

1. 相关文件修改

直接看这里吧:[alpha emmc]移植网口驱动(使用板子上的ETH2) · f67570a · 苏木/u-boot - Gitee.com

2. 开发板验证

我们编译完烧写到SD卡,并设置开发板从SD卡启动:

image-20241102154223658

会发现还是一堆报错,这是因为我们没有配置相关的IP:

1
2
3
4
5
6
# ubuntu  192.168.10.101
# windows 192.168.10.100
setenv eth1addr 32:34:46:78:9A:DD # 本地MAC地址
setenv serverip 192.168.10.101 # 服务器端地址
setenv ipaddr 192.168.10.102 # 本机地址
saveenv

然后再重启,就不会有那些了:

image-20241102154828885

我们来ping一下ubuntu和windows:

image-20241102154942593

发现都是没啥问题的。

六、LCD移植

LCD原本就能用,只是显示不正常,这里先不管。

七、eMMC移植

1. 问题的出现

这里原本以为不用管,因为在移植uboot 2016版本的时候是没有eMMC的问题的,但是后面在回顾uboot的命令的时候发现eMMc竟然无法使用:

image-20241111220726643

2. 问题原因

emmc的复位脚,在设备树上没有配置,需要添加。emmc的复位引脚是这个:

image-20241111234927427

3. 设备树修改

可以看这里:[alpha emmc]设备树添加alpha开发板eMMC信息 · afdbdfb · 苏木/u-boot - Gitee.com

image-20241111235022490

4. 开发板验证

然后我们烧写到SD卡中,启动一下:

image-20241111235258585

参考资料:

移植NXP官方uboot到IMX6ULL开发板–以及过程中遇到的疑问和错误记录_nxp imx6ulz secure boot-CSDN博客

移植新的uboot到正点原子imx6ull开发板遇到emmc的问题 - 哔哩哔哩 (bilibili.com)