移植u-boot2020.04到原子哥的alpha开发板(三)

前面编译了官方开发板定制的uboot,并下载到开发中,能够启动。所以我们就要借鉴这个官方开发板的配置,添加自己的开发板,然后修改开发板的驱动。所谓的借鉴就是复制官方开发板的配置。

一、添加configs文件夹中的默认配置

我们编译的官方开发板的配置是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卡,启动开发板试一试。

移植u-boot2020.04到原子哥的alpha开发板(三)_第1张图片

和使用官方的配置结果是一样的,当然一样,应为我们只是添加了自己的板子,是从官方复制过来的,没有做任何修改。接下来就是该修改修改,适配我们自己的板子了。 

你可能感兴趣的:(uboot,单片机,嵌入式硬件)