向NXP官方uboot添加Nand版开发板

一.   简介

本文学习将我所使用的正点原子的 ALPHA 开发板如何添加到 NXP(恩智浦)官方的 uboot源码中。

这里 IMX6ULL芯片的封装是 14x14,开发板是 NAND版本。我们就参考 NXP 官方的 I.MX6ULL EVK 开发板,向 uboot 中添加我们的开发。

NXP 官方的uboot 也是支持 NAND版的开发板的。也就是说,NXP官方的 uboot 可以在 ALPHA开发板(NAND版)上可以正常运行。

二.   向NXP官方uboot添加Nand版开发板

接下来我们就参考 NXP 官方的 I.MX6ULL EVK 开发板 学习如何在 uboot 中添加正点原子的 ALPHA 开发板

下面具体学习如何向 NXP官方 uboot添加 正点原子的ALPHA开发板(NAND版)。

(1) 首先,添加开发板默认的配置文件。

这里 IMX6ULL芯片的封装是 14x14,开发板是 NAND版本。我们就参考 NXP 官方的 I.MX6ULL EVK 开发板,向 uboot 中添加我们的开发

开发板默认配置文件在 uboot根目录的 configs目录下。先在 configs 目录下创建默认配置文件,复制 mx6ull_14x14_evk_nand_defconfig,然后重命名为 mx6ull_alientek_nand_defconfig,操作如下:

@wangtian:~/zhengdian_Linux/linux/uboot/nxp_uboot/uboot-imx-rel_imx_4.1.15_2.1.0_ga/configs$ cp mx6ull_14x14_evk_nand_defconfig mx6ull_alientek_nand_defconfig

更改 mx6ull_alientek_nand_defconfig 配置文件中的内容,更改如下:

CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_alientek_nand/imximage.cfg,SYS_BOOT_NAND"
CONFIG_ARM=y
CONFIG_ARCH_MX6=y
CONFIG_TARGET_MX6ULL_ALIENTEK_NAND=y
CONFIG_CMD_GPIO=y
可以看出, mx6ull_alientek_emmc_defconfig 基本和 mx6ull_14x14_evk_emmc_defconfig 中的内容一样,只是第 1 行和第 4 行做了修改。

(2) 其次,添加开发板对应的头文件。

在目录 include/configs 下添加 I.MX6ULL-ALPHA 开 发 板 对 应 的 头 文 件 ,每个板子都有一个相应的 配置头文件。
复 制 include/configs/mx6ullevk.h ,并重命名为 mx6ull_alientek_nand.h ,命令如下:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/uboot/nxp_uboot/uboot-imx-rel_imx_4.1.15_2.1.0_ga/include/configs$ cp mx6ullevk.h mx6ull_alientek_nand.h

拷贝完成以后,需要更改 mx6ull_alientek_nand.h文件中的内容。更改如下:
#ifndef __MX6ULLEVK_CONFIG_H
#define __MX6ULLEVK_CONFIG_H

更改为如下:

#ifndef __MX6ULL_ALIENTEK_NAND_CONFIG_H
#define __MX6ULL_ALIENTEK_NAND_CONFIG_H

mx6ull_alientek_nand.h 里面有很多宏定义,这些宏定义基本用于配置 uboot ,也有一些
I.MX6ULL 的配置项目。如果我们自己要想使能或者禁止 uboot 的某些功能,那就在 mx6ull_alientek_nand.h 里面做修改即可。
注意: 这里关键更改 DDR的容量!!!
因为 ALPHA-NAND版开发板所使用的 DDR(即 DRAM)容量是 256MB,所以 涉及 DDR容量的更改。更改如下的部分:
#ifdef CONFIG_TARGET_MX6ULL_9X9_EVK
........
#else
#define PHYS_SDRAM_SIZE		SZ_256M
#define CONFIG_BOOTARGS_CMA_SIZE   ""
/* DCDC used on 14x14 EVK, no PMIC */
#undef CONFIG_LDO_BYPASS_CHECK
#endif

可以看出,更改了  else下面的宏 PHYS_SDRAM_SIZE  为 SZ_256M。因为 IMX6ULL芯片是 14x14封装,所以,会执行下面的 else部分。

(3) 其次,添加开发板对应的板级文件夹。

cd board/freescale/
cp mx6ullevk/ -r mx6ull_alientek_nand
uboot 中每个板子都有一个对应的文件夹来存放板级文件,比如开发板上外设驱动文件等。 NXP I.MX 系列芯片的所有板级文件夹都存放在 board/freescale 目录下,在这个目录下 有个名为 mx6ullevk 的文件夹,这个文件夹就是 NXP 官方 I.MX6ULL EVK 开发板的板级文件 夹。

进入 board/freescale 目录下,复制一份 mx6ullevk文件夹,将其重命名为 mx6ull_alientek_nand,命令如下:

cd board/freescale/
cp mx6ullevk/ ./mx6ull_alientek_nand -rf

这时在 board/freescale 目录下就 存在了 mx6ull_alientek_nand 文件夹。接下来更改 mx6ull_alientek_nand文件夹下的一些文件名或文件内容。

进入 board/freescale/mx6ull_alientek_nand 目录下进行更改。

①  更改 mx6ull_alientek_nand 文件夹下 mx6ullevk.c 文件的名字。更改如下:

mv mx6ullevk.c mx6ull_alientek_nand.c

②  更改 mx6ull_alientek_nand 文件夹下 Makefile,更改如下:

obj-y  := mx6ull_alientek_nand.o

更改 mx6ull_alientek_nand 文件夹下的 imximage.cfg 文件。imximage.cfg 中的PLUGIN.bin 路径更改如下:

PLUGIN	board/freescale/mx6ull_alientek_nand/plugin.bin 0x00907000

  更改 mx6ull_alientek_emmc 目录下的 Kconfig 文件。Kconfig 文件更改的内容如下:

if TARGET_MX6ULL_ALIENTEK_NAND

config SYS_BOARD
	default "mx6ull_alientek_nand"

config SYS_VENDOR
	default "freescale"

config SYS_SOC
    default "mx6"

config SYS_CONFIG_NAME
	default "mx6ull_alientek_nand"

endif

更改 mx6ull_alientek_emmc 目录下的 MAINTAINERS 文件,MAINTAINERS 文件更改如下:

MX6ULLEVK BOARD
M:	Peng Fan 
S:	Maintained
F:	board/freescale/mx6ull_alientek_nand/
F:	include/configs/mx6ull_alientek_nand.h
F:	configs/mx6ull_alientek_nand

(4) 最后,修改 u-boot图形界面配置文件 。

uboot 是支持图形界面配置,后面再了解 Uboot的图形界面配置。更改 arch/arm/cpu/armv7/mx6/目录下的 Kconfig 文件 。在 207 行加入如下内容:
config TARGET_MX6ULL_ALIENTEK_NAND
	bool "Support mx6ull_alientek_nand"
	select MX6ULL
	select DM
	select DM_THERMAL

可以看出,宏定义 TARGET_XXX 应该与 配置文件内部的宏名字保持一致。

在最后一行的 endif 的前一行添加如下内容:
source "board/freescale/mx6ull_alientek_nand/Kconfig"

至此,向 NXP官方 uboot添加 正点原子ALPHA开发板的工作已经完成。

下一篇文章进行对更改后的 Uboot源码进行编译。并运行。

你可能感兴趣的:(uboot,系统移植篇,linux,arm开发)