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/Cqlismy/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板级源码的整个过程。

原文地址:https://www.cnblogs.com/Cqlismy/p/11961485.html