NXP官方的I.MX6UL板级Uboot源码适配
1、前言
CoM-P6UL是盈鹏飞科技有限公司基于NXP原厂I.MX6UL芯片生产研发的核心板,本文将对CoM-P6UL适配NXP的基于Linux4.1.15版本的uboot板级源码的过程进行介绍。
2、开发环境
目标板:CoM-P6UL(RAM:256MB,Nand Flash:256MB)
主机:Linux ubuntu 4.15.0-70-generic
交叉编译工具链:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf
源码下载链接:http://git.freescale.com/git/
3、官方uboot移植适配
下载源码后,先对NXP官方的i.mx6ul evk的评估板源码进行编译,检查是否能编译成功:
解压uboot源码,并进入到uboot源码根目录:
$ tar -xvjf uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2 $ cd uboot-imx-rel_imx_4.1.15_2.1.0_ga/
接下来,尝试开始编译NXP官方的uboot源码:
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- clean $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ul_14x14_evk_nand_defconfig $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
如果在源码根目录出现uboot.imx文件则编译通过,如下所示:
当NXP官方uboot源码能编译通过后,接下来开始将源码适配CoM-P6UL核心板,因为我们编译的只是NXP官方的Demo评估板源码而已,评估板的RAM和Nand Flash的大小和配置和Com-P6UL核心板的都是不一样的,所以需要进行适配。
修改uboot源码文件夹:
$ mv uboot-imx-rel_imx_4.1.15_2.1.0_ga uboot-imx-rel_imx_4.1.15_comp6ul/ $ cd uboot-imx-rel_imx_4.1.15_comp6ul/
修改uboot源码顶层Makefile,指定ARCH架构和CROSS_COMPILE交叉编译工具链,如下:
$ vim Makefile
接下来添加开发板的默认配置文件deconfig:
$ cd configs/ $ cp mx6ul_14x14_evk_nand_defconfig mx6ul_comp6ul_nand_defconfig $ vim mx6ul_comp6ul_nand_defconfig
将defconfig文件配置修改如下所示:
defconfig文件修改完成后,保存后并退出vim编辑器。
接下来添加comp6ul核心板的头文件,目录为include/configs下:
$ cd include/configs $ cp mx6ul_14x14_evk.h mx6ul_comp6ul_nand.h $ vim mx6ul_comp6ul_nand.h
***
接下来添加开发板对应的板级文件:
$ cd board/freescale $ cp -r mx6ul_14x14_evk/ mx6ul_comp6ul_nand
修改新添加目录下的文件:
$ cd mx6ul_comp6ul_nand/ $ mv mx6ul_14x14_evk.c mx6ul_comp6ul_nand.c
接下来修改新添加的板级目录下的Makefile文件:
$ vim Makefile
修改如下,编译的时候才能将添加的.c文件进行编译:
接下来修改imximage.cfg文件,该文件用于添加输出的uboot.bin文件的IVT和DCD数据:
$ vim imximage.cfg
该文件修改如下所示:
NXP官方的i.mx6ul评估板的DDR容量是512MB的,但是现在这个目标板Com-P6UL是256MB的,因此,需要修改imximage.cfg中有关DDR控制寄存器的相关值,先使用NXP官方的ddr_stress_tester工具对DDR进行较准,然后根据对应的.inc文件进行寄存器的值修改,关于ddr_stress_tester工具的使用,可以参考下面的链接:
https://www.cnblogs.com/liangliangge/p/11968276.html
寄存器值修改后如下:
/* Enable all clocks */ DATA 4 0x020c4068 0xffffffff DATA 4 0x020c406c 0xffffffff DATA 4 0x020c4070 0xffffffff DATA 4 0x020c4074 0xffffffff DATA 4 0x020c4078 0xffffffff DATA 4 0x020c407c 0xffffffff DATA 4 0x020c4080 0xffffffff DATA 4 0x020E04B4 0x000C0000 DATA 4 0x020E04AC 0x00000000 DATA 4 0x020E027C 0x00000028 DATA 4 0x020E0250 0x00000028 DATA 4 0x020E024C 0x00000028 DATA 4 0x020E0490 0x00000028 DATA 4 0x020E0288 0x00000028 DATA 4 0x020E0270 0x00000000 DATA 4 0x020E0260 0x00000028 DATA 4 0x020E0264 0x00000028 DATA 4 0x020E04A0 0x00000028 DATA 4 0x020E0494 0x00020000 DATA 4 0x020E0280 0x00000028 DATA 4 0x020E0284 0x00000028 DATA 4 0x020E04B0 0x00020000 DATA 4 0x020E0498 0x00000028 DATA 4 0x020E04A4 0x00000028 DATA 4 0x020E0244 0x00000028 DATA 4 0x020E0248 0x00000028 DATA 4 0x021B001C 0x00008000 DATA 4 0x021B0800 0xA1390003 DATA 4 0x021B080C 0x00000000 DATA 4 0x021B083C 0x0154014C DATA 4 0x021B0848 0x40404246 DATA 4 0x021B0850 0x4040564E DATA 4 0x021B081C 0x33333333 DATA 4 0x021B0820 0x33333333 DATA 4 0x021B082C 0xF3333333 DATA 4 0x021B0830 0xF3333333 DATA 4 0x021B08C0 0x00921012 DATA 4 0x021B08b8 0x00000800 DATA 4 0x021B0004 0x0002002D DATA 4 0x021B0008 0x1B333030 DATA 4 0x021B000C 0x3F4352F3 DATA 4 0x021B0010 0xB66D0B63 DATA 4 0x021B0014 0x01FF00DB DATA 4 0x021B0018 0x00211740 DATA 4 0x021B001C 0x00008000 DATA 4 0x021B002C 0x000026D2 DATA 4 0x021B0030 0x00431023 DATA 4 0x021B0040 0x00000047 DATA 4 0x021B0000 0x83180000 DATA 4 0x021B001C 0x02008032 DATA 4 0x021B001C 0x00008033 DATA 4 0x021B001C 0x00048031 DATA 4 0x021B001C 0x15208030 DATA 4 0x021B001C 0x04008040 DATA 4 0x021B0020 0x00000800 DATA 4 0x021B0818 0x00000227 DATA 4 0x021B0004 0x0002556D DATA 4 0x021B0404 0x00011006 DATA 4 0x021B001C 0x00000000
接下来,修该新添加的板级目录下的Kconfig文件:
$ vim Kconfig
修改内容如下所示:
接下来修改MAINTAINERS文件:
$ vim MAINTAINERS
修改的内容如下所示:
接下来修改uboot图形界面的Kconfig配置文件,目录如下:
uboot/arch/arm/cpu/armv7/mx6/
Kconfig修改如下所示:
再把新添加的板级目录的Kconfig文件目录加入,如下:
到这里,uboot源码的修改基本完成,接下则是进行编译:
$ make clean $ make mx6ul_comp6ul_nand_defconfig $ make
编译成功如下所示:
接下来,就可以使用NXP官方提供的MfgTools软件进行uboot更新到Nand Flash中了,并检测uboot是否能适配成功。
4、小结
本文主要简单介绍了对CoM-P6UL适配NXP的基于Linux4.1.15版本的uboot板级源码的整个过程。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App