前面编译了官方开发板定制的uboot,并下载到开发中,能够启动。所以我们就要借鉴这个官方开发板的配置,添加自己的开发板,然后修改开发板的驱动。所谓的借鉴就是复制官方开发板的配置。
我们编译的官方开发板的配置是mx6ull_14x14_evk_emmc_defconfig,所以添加自己的配置就是复制一下这个文件,并修改名字,在configs文件中使用命令:
cp mx6ull_14x14_evk_emmc_defconfig mx6ull_alpha_emmc_defconfig
结果如图:
使用gedit mx6ull_alpha_emmc_defconfig打开文件,修改文件中的CONFIG_SYS_EXTRA_OPTIONS、CONFIG_DEFAULT_DEVICE_TREE这两个宏,修改为自己开发板的名字,修改CONFIG_TARGET_MX6ULL_14X14_EVK为CONFIG_TARGET_MX6ULL_ALPHA_EMMC,其他的不用修改。修改后如下:
CONFIG_ARM=y
CONFIG_ARCH_MX6=y
CONFIG_TARGET_MX6ULL_ALPHA_EMMC=y
CONFIG_ENV_SIZE=0x2000
CONFIG_ENV_OFFSET=0xE0000
CONFIG_DM_GPIO=y
CONFIG_NR_DRAM_BANKS=1
CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_alpha_emmc/imximage.cfg"
CONFIG_BOOTDELAY=3
# CONFIG_CONSOLE_MUX is not set
CONFIG_SYS_CONSOLE_IS_IN_ENV=y
CONFIG_SUPPORT_RAW_INITRD=y
CONFIG_BOUNCE_BUFFER=y
CONFIG_BOARD_EARLY_INIT_F=y
CONFIG_HUSH_PARSER=y
CONFIG_CMD_BOOTZ=y
# CONFIG_CMD_IMLS is not set
CONFIG_CMD_MEMTEST=y
CONFIG_CMD_GPIO=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MMC=y
CONFIG_CMD_SF=y
CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
CONFIG_CMD_BMP=y
CONFIG_CMD_CACHE=y
CONFIG_CMD_NET=y
CONFIG_CMD_EXT2=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_CMD_FAT=y
CONFIG_CMD_FS_GENERIC=y
CONFIG_OF_CONTROL=y
CONFIG_DEFAULT_DEVICE_TREE="imx6ull-alpha-emmc"
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_DM_74X164=y
CONFIG_DM_I2C=y
CONFIG_DM_MMC=y
CONFIG_FSL_USDHC=y
CONFIG_MTD=y
CONFIG_DM_SPI_FLASH=y
CONFIG_SF_DEFAULT_MODE=0
CONFIG_SF_DEFAULT_SPEED=40000000
CONFIG_SPI_FLASH_STMICRO=y
CONFIG_PHYLIB=y
CONFIG_PHY_MICREL=y
CONFIG_PHY_MICREL_KSZ8XXX=y
CONFIG_DM_ETH=y
CONFIG_DM_ETH_PHY=y
CONFIG_FEC_MXC=y
CONFIG_MII=y
CONFIG_PINCTRL=y
CONFIG_PINCTRL_IMX6=y
CONFIG_DM_REGULATOR=y
CONFIG_DM_REGULATOR_FIXED=y
CONFIG_DM_REGULATOR_GPIO=y
CONFIG_SPI=y
CONFIG_DM_SPI=y
CONFIG_SOFT_SPI=y
CONFIG_FSL_QSPI=y
CONFIG_USB=y
CONFIG_DM_USB=y
CONFIG_USB_STORAGE=y
CONFIG_USB_HOST_ETHER=y
CONFIG_USB_ETHER_ASIX=y
CONFIG_DM_VIDEO=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_USB_GADGET_MANUFACTURER="FSL"
CONFIG_USB_GADGET_VENDOR_NUM=0x0525
CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
CONFIG_CI_UDC=y
CONFIG_CMD_FASTBOOT=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_UUU_SUPPORT=y
CONFIG_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x83800000
CONFIG_FASTBOOT_BUF_SIZE=0x40000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_EFI_PARTITION=y
CONFIG_SYS_EXTRA_OPTIONS从新指定了,开发板的信息的路径,但是现在uboot的工程中并没有我们的开发板的文件,所以需要添加,进入board/freescale/这个文件夹,复制mx6ullevk文件夹(mx6ull_14x14_evk_defconfig中指定的是这个文件夹),并修改名字为mx6ull_alpha_emmc。
进入mx6ull_alpha_emmc文件夹,内容如图:
先修改mx6ullevk.c的名字为mx6ull_alpha_emmc.c
修改Makefile如下:
obj-y := mx6ull_alpha_emmc.o
修改imximage.cfg的第34行如下
PLUGIN board/freescale/mx6ull_alpha_emmc/plugin.bin 0x00907000
修改imximage_lpddr2.cfg的第35行如下
PLUGIN board/freescale/mx6ull_alpha_emmc/plugin.bin 0x00907000
修改Kconfig如下:
if TARGET_MX6ULL_ALPHA_EMMC
config SYS_BOARD
default "mx6ull_alpha_emmc"
config SYS_VENDOR
default "freescale"
config SYS_CONFIG_NAME
default "mx6ull_alpha_emmc"
config SYS_TEXT_BASE
default 0x87800000
endif
修改MAINTAINERS如下
1 MX6ULL_ALPHA_EMMC BOARD
2 M: Peng Fan
3 S: Maintained
4 F: board/freescale/mx6ull_alpha_emmc/
5 F: include/configs/mx6ull_alpha_emmc.h
6 F: configs/mx6ull_14x14_evk_defconfig
7 F: configs/mx6ull_14x14_evk_plugin_defconfig
8 F: configs/mx6ulz_14x14_evk_defconfig
mx6ull_alpha_emmc_defconfig文件中CONFIG_DEFAULT_DEVICE_TREE配置是设备树。所以我们还需要去arch/arm/dts中,复制imx6ull14x14-evk-emmc.dts,修改名字为imx6ull-alpha-emmc.dts(名字是CONFIG_DEFAULT_DEVICE_TREE)
cp imx6ull-14x14-evk-emmc.dts imx6ull-alpha-emmc.dts
并修改arch/arm/dts/Makefile文件,添加编译imx6ull-alpha_emmc.dtb,修改后如下
711 dtb-$(CONFIG_MX6ULL) += \
712 imx6ull-14x14-ddr3-val.dtb \
713 imx6ull-14x14-ddr3-val-epdc.dtb \
714 imx6ull-14x14-ddr3-val-emmc.dtb \
715 imx6ull-14x14-ddr3-val-gpmi-weim.dtb \
716 imx6ull-14x14-ddr3-val-tsc.dtb \
717 imx6ull-14x14-evk.dtb \
718 imx6ull-14x14-evk-emmc.dtb \
719 imx6ull-alpha-emmc.dtb \
720 imx6ull-14x14-evk-gpmi-weim.dtb \
721 imx6ull-9x9-evk.dtb \
722 imx6ull-colibri.dtb \
723 imx6ull-phytec-segin-ff-rdk-emmc.dtb \
724 imx6ull-dart-6ul.dtb \
725 imx6ull-somlabs-visionsom.dtb \
726 imx6ulz-14x14-evk.dtb \
727 imx6ulz-14x14-evk-emmc.dtb \
728 imx6ulz-14x14-evk-gpmi-weim.dtb
729
从board/freescale/mx6ull_alpha_emmc/MAINTAINERS文件中的第5行可知,我们还需要include/configs中的有文件。所以进入include/configs中,复制mx6ullevk.h,修改名字为mx6ull_alpha_emmc.h
cp mx6ullevk.h mx6ull_alpha_emmc.h
看起来准备工作差不多了,现在要使CPU支持我们的开发板就把我们的板子添加进去了。
进入arch/arm/mach-imx/mx6文件夹,修改Kconfig,添加一下内容
config TARGET_MX6ULL_ALPHA_EMMC
bool "Support mx6ull_alpha_emmc"
select BOARD_LATE_INIT
select DM
select DM_THERMAL
select MX6ULL
imply CMD_DM
source "board/freescale/mx6ull_alpha_emmc/Kconfig"
接下来就编译一下试一试:
make distclean
make mx6ull_alpha_emmc_defconfig
make
编译顺利通过,复制到TF卡,启动开发板试一试。
和使用官方的配置结果是一样的,当然一样,应为我们只是添加了自己的板子,是从官方复制过来的,没有做任何修改。接下来就是该修改修改,适配我们自己的板子了。