本文学习将我所使用的正点原子的 ALPHA 开发板如何添加到 NXP(恩智浦)官方的 uboot源码中。
这里 IMX6ULL芯片的封装是 14x14,开发板是 NAND版本。我们就参考 NXP 官方的 I.MX6ULL EVK 开发板,向 uboot 中添加我们的开发。
NXP 官方的uboot 也是支持 NAND版的开发板的。也就是说,NXP官方的 uboot 可以在 ALPHA开发板(NAND版)上可以正常运行。
下面具体学习如何向 NXP官方 uboot添加 正点原子的ALPHA开发板(NAND版)。
这里 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
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
#ifndef __MX6ULLEVK_CONFIG_H
#define __MX6ULLEVK_CONFIG_H
更改为如下:
#ifndef __MX6ULL_ALIENTEK_NAND_CONFIG_H
#define __MX6ULL_ALIENTEK_NAND_CONFIG_H
#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部分。
cd board/freescale/
cp mx6ullevk/ -r mx6ull_alientek_nand
进入 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
config TARGET_MX6ULL_ALIENTEK_NAND
bool "Support mx6ull_alientek_nand"
select MX6ULL
select DM
select DM_THERMAL
可以看出,宏定义 TARGET_XXX 应该与 配置文件内部的宏名字保持一致。
source "board/freescale/mx6ull_alientek_nand/Kconfig"
下一篇文章进行对更改后的 Uboot源码进行编译。并运行。