1.下载NXP官方uboot并编译
1.1 下载NXP官方uboot_v2020.04_5.4.70_2.3.0
GitHub官网上下载uboot-imx-imx_v2020.04_5.4.70_2.3.0文件,下载完成后将文件拷贝到Ubuntu主机linux/IMX6ULL/uboot/nxpuboot目录下并解压,如下图所示:
1.2 编译NXP官方uboot_v2020.04_5.4.70_2.3.0
编译解压后的uboot源码,进入uboot-imx-imx_v2020.04_5.4.70_2.3.0目录,编译uboot源码如下图所示:
出现上述错误是因为操作权限不够,因此为整个目录设置操作权限,如下图所示:
2.uboot中添加ALIENTEK-ALPHA开发板
2.1 压缩编译后的uboot_v2020.04_5.4.70_2.3.0
将编译好的uboot_v2020.04_5.4.70_2.3.0进行压缩,并创建alientekuboot目录,将压缩后的文件拷贝到此目录下并解压,如下图所示:
2.2 增加ALIENTEK-ALPHA开发板配置文件
1.使用命令distclean清理工程,如下图所示:
2.添加ALIENTEK-ALPHA开发板配置文件,进入configs目录下,复制
mx6ull_14x14_evk_emmc_defconfig文件并重命名为mx6ull_alientek_emmc_defconfig,如下图所示:
打开mx6ull_alientek_emmc_defconfig文件,对配置文件进行修改,如下图所示:
2.3 添加ALIENTEK-ALPHA开发板对应的头文件
进入include/configs目录下,复制mx6ullevk.h文件并重新命名为mx6ull_alientek_emmc.h,如下图所示:
1.打开mx6ull_alientek_emmc.h文件,将
#ifndef __MX6ULLEVK_CONFIG_H
#define __MX6ULLEVK_CONFIG_H
更改为
#ifndef __MX6ULL_ALIENTEK_EMMC_CONFIG_H
#define __MX6ULL_ALIENTEK_EMMC_CONFIG_H
2.在mx6ull_alientek_emmc.h文件中添加ALIENTEK-ALPHA开发板设备树内容,添加内容如下图所示:
mx6ull_alientek_emmc.h 里面有很多宏定义,这些宏定义基本用于配置 uboot,也有一些I.MX6ULL 的配置项目。如果想要使能或者禁止uboot 的某些功能,就在mx6ull_alientek_emmc.h 里面做修改即可。
2.4 添加ALIENTEK-ALPHA开发板对应的板级文件夹
uboot中每个板子都有一个对应的文件夹来存放板级文件,比如开发板上外设驱动文件等等。NXP的I.MX系列芯片所有的板级文件夹都存放在board/freescale目录下,该目录下有个名为mx6ullevk
的文件夹,这个文件夹就是NXP官方I.MX6ULL EVK开发板的板级文件夹。进入board/freescale目录下复制mx6ullevk,将其重命名为mx6ull_alientek_emmc,如下图所示:
进入mx6ull_alientek_emmc目录下,将mx6ullevk.c文件重命名为mx6ull_alientek_emmc.c,如下图所示:
修改mx6ull_alientek_emmc目录下文件
1.修改mx6ull_alientek_emmc目录下的imximage.cfg 文件,修改内容如下图所示:
2.修改mx6ull_alientek_emmc目录下Kconfig文件,修改内容如下图所示:
3.修改mx6ull_alientek_emmc目录下MAINTAINERS文件,修改内容如下图所示:
4.修改mx6ull_alientek_emmc目录下Makefile文件,修改内容如下图所示:
5.修改mx6ull_alientek_emmc目录下mx6ull_alientek_emmc.c文件,修改内容如下图所示:
2.5 添加ALIENTEK-ALPHA开发板对应的设备树文件
uboot 2020 版本使用了设备树描述设备,因此在移植uboot 2020时需要添加ALIENTEK-ALPHA开发板的设备树文件,设备树描述文件存放在arch/arm/dts目录下,在此目录下增加ALIENTEK-ALPHA开发板设备树描述文件,如下图所示:
1.修改imx6ull-alientek-emmc.dts文件,修改代码如下图所示:
2.修改imx6ull-alientek.dts文件,修改代码如下图所示:
3.修改arch/arm/dts/Makefile文件,将我们创建的ALIENTEK-ALPHA开发板设备树文件添加进编译选项,如下图所示:
4.NXP官方I.MX6ULL EVK开发板与ALIENTEK-ALPHA开发板设备树对照如下图所示:
2.6 uboot编译选项中增加ALIENTEK-ALPHA开发板
将ALIENTEK-ALPHA开发板添加进uboot的编译选项中,修改arch/arm/mach-imx/mx6/
Kconfig文件,修改如下图所示:
3.编译修改后的uboot
1.修改顶层Makefile,指定编译器和架构,修改如下图所示:
2.使用新添加的ALIENTEK-ALPHA开发板的配置编译uboot,编译过程如下图所示:
3.编译完成后使用“grep -nR “mx6ull_alientek_emmc.h””命令查看添加的
mx6ull_alientek_emmc.h这个头文件是否被引用,查看结果如下图所示:
由上图可知,很多文件都引用了mx6ull_alientek_emmc.h这个头文件,说明uboot中添加ALIENTEK-ALPHA开发板成功。
4.测试uboot
1.使用imxdownload将新编译的u-boot.bin文件下载到SD卡中,下载过程如下图所示:
2.测试新编译的uboot,打开SecureCRT软件,ALIENTEK-ALPHA开发板上电后SecureCRT 输出结果如下图所示:
由上图可知,LCD显示设备输出的信息和实际的LCD显示屏信息不对同时LCD屏幕并没有显示NXP的logo说明设备树中关于LCD节点的描述存在问题需要修改,网络驱动同样也存在问题,因此同样需要修改设备树中关于网络节点的描述。