300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > [NXP i.MX6ULL] UBOOT-.04

[NXP i.MX6ULL] UBOOT-.04

时间:2022-12-11 11:44:25

相关推荐

[NXP i.MX6ULL] UBOOT-.04

前提说明

操作系统:ubuntu 20.04

硬件环境:野火IMX6ULL NAND

注意有些路径为我自己的本地路径,后期我会完善一些过程。

交叉编译器

Linaro Releases

1. 下载最新版本

# 下载wget /components/toolchain/binaries/latest-7/arm-linux-gnueabihf/gcc-linaro-7.5.0-.12-x86_64_arm-linux-gnueabihf.tar.xz# 解压tar -xvf gcc-linaro-7.5.0-.12-x86_64_arm-linux-gnueabihf.tar.xz

2. 配置环境变量

# 修改配置文件vim ~/.bashrc# 追加路径和添加环境变量export PATH=$PATH:/home/bohao/Nand/tool/gcc-linaro-7.5.0-.12-x86_64_arm-linux-gnueabihf/binexport ARCH=armexport CROSS_COMPILE=arm-linux-gnueabihf-# 生效source~/.bashrc

3. 查看版本信息

# 查看版本信息arm-linux-gnueabihf-gcc --version# 显示如下信息arm-linux-gnueabihf-gcc (Linaro GCC 7.5-.12) 7.5.0Copyright (C) Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

4. 安装相关工具

$ sudo apt install bc build-essential git libncurses5-dev lzop perl libssl-dev bison flex

Uboot 编译和烧录

uboot-imx - i.MX U-Boot

1. 下载版本

$ git clone /external/imx/uboot-imx -b imx_v.04_5.4.70_2.3.0

2. 修改配置文件

CONFIG_ARM=yCONFIG_ARCH_MX6=yCONFIG_TARGET_ZZU=yCONFIG_ENV_SIZE=0x100000CONFIG_ENV_OFFSET=0x600000CONFIG_DM_GPIO=yCONFIG_NR_DRAM_BANKS=1CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/zzu/imximage.cfg"CONFIG_NAND_BOOT=yCONFIG_CMD_NAND=yCONFIG_CMD_NAND_TRIMFFS=yCONFIG_CMD_UBI=yCONFIG_MTD=yCONFIG_DM_MTD=yCONFIG_MTD_RAW_NAND=yCONFIG_CMD_MTDPARTS=yCONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"CONFIG_MTDPARTS_SKIP_INVALID=yCONFIG_NAND=yCONFIG_NAND_MXS=yCONFIG_NAND_MXS_DT=yCONFIG_ENV_IS_IN_NAND=yCONFIG_BOOTDELAY=3# CONFIG_CONSOLE_MUX is not setCONFIG_SYS_CONSOLE_IS_IN_ENV=yCONFIG_SUPPORT_RAW_INITRD=yCONFIG_BOUNCE_BUFFER=yCONFIG_BOARD_EARLY_INIT_F=yCONFIG_HUSH_PARSER=yCONFIG_CMD_BOOTZ=y# CONFIG_CMD_IMLS is not setCONFIG_CMD_MEMTEST=yCONFIG_CMD_GPIO=yCONFIG_CMD_I2C=yCONFIG_CMD_MMC=yCONFIG_CMD_USB=yCONFIG_CMD_DHCP=yCONFIG_CMD_PING=yCONFIG_CMD_BMP=yCONFIG_CMD_CACHE=yCONFIG_CMD_NET=yCONFIG_CMD_EXT2=yCONFIG_CMD_EXT4=yCONFIG_CMD_EXT4_WRITE=yCONFIG_CMD_FAT=yCONFIG_CMD_FS_GENERIC=yCONFIG_OF_CONTROL=yCONFIG_DEFAULT_DEVICE_TREE="zzu"CONFIG_SYS_RELOC_GD_ENV_ADDR=yCONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=yCONFIG_DM_74X164=yCONFIG_DM_I2C=yCONFIG_DM_MMC=yCONFIG_FSL_USDHC=yCONFIG_PHYLIB=yCONFIG_PHY_MICREL=yCONFIG_PHY_MICREL_KSZ8XXX=yCONFIG_DM_ETH=yCONFIG_DM_ETH_PHY=yCONFIG_FEC_MXC=yCONFIG_MII=yCONFIG_PINCTRL=yCONFIG_PINCTRL_IMX6=yCONFIG_DM_REGULATOR=yCONFIG_DM_REGULATOR_FIXED=yCONFIG_DM_REGULATOR_GPIO=yCONFIG_SPI=yCONFIG_DM_SPI=yCONFIG_SOFT_SPI=yCONFIG_USB=yCONFIG_DM_USB=yCONFIG_USB_STORAGE=yCONFIG_USB_HOST_ETHER=yCONFIG_USB_ETHER_ASIX=yCONFIG_DM_VIDEO=yCONFIG_SYS_WHITE_ON_BLACK=yCONFIG_USB_GADGET=yCONFIG_USB_GADGET_DOWNLOAD=yCONFIG_USB_GADGET_MANUFACTURER="FSL"CONFIG_USB_GADGET_VENDOR_NUM=0x0525CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5CONFIG_CI_UDC=yCONFIG_CMD_FASTBOOT=yCONFIG_USB_FUNCTION_FASTBOOT=yCONFIG_FASTBOOT_UUU_SUPPORT=yCONFIG_FASTBOOT=yCONFIG_FASTBOOT_BUF_ADDR=0x86800000CONFIG_FASTBOOT_BUF_SIZE=0x40000000CONFIG_FASTBOOT_FLASH=yCONFIG_EFI_PARTITION=yCONFIG_LOCALVERSION_AUTO=n

3. 修改头文件

a. mtdparts

Nand Flahs分区信息,我这里要存了两个系统,因此我大概分了9块。

b. CONFIG_MFG_ENV_SETTINGS

这个参数供mfgtool工具使用,分区操作是由fireware文件夹中的uboot(逻辑上)完成的。

c. CONFIG_EXTRA_ENV_SETTINGS

uboot启动时,先从Flash中读取变量,如果Flash的环境变量CRC校验错误,则会使用以下默认变量。

$ cp include/configs/mx6ullevk.h include/configs/zzu.h#ifndef __ZZU_CONFIG_H#define __ZZU_CONFIG_H#ifdef CONFIG_NAND_BOOT#define MFG_NAND_PARTITION "mtdparts=gpmi-nand:6m(boot),1m(env),10m(kernel1),1m(dtb1),100m(rootfs1),10m(kernel2),1m(dtb2),100m(rootfs2),-(app) "#else#define MFG_NAND_PARTITION ""#endif#define CONFIG_MFG_ENV_SETTINGS \"mfgtool_args=setenv bootargs console=${console},${baudrate} " \BOOTARGS_CMA_SIZE \"rdinit=/linuxrc " \"g_mass_storage.stall=0 g_mass_storage.removable=1 " \"g_mass_storage.file=/fat g_mass_storage.ro=1 " \"g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF "\MFG_NAND_PARTITION \"\0" \"initrd_addr=0x83800000\0" \"initrd_high=0xffffffff\0" \"bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};\0" \#if defined(CONFIG_NAND_BOOT)#define CONFIG_EXTRA_ENV_SETTINGS \CONFIG_MFG_ENV_SETTINGS \TEE_ENV \"splashimage=0x8c000000\0" \"fdt_addr=0x83000000\0" \"fdt_high=0xffffffff\0" \"tee_addr=0x84000000\0" \"console=ttymxc0\0" \"ethaddr=00:04:9f:04:d2:35\0" \"eth0addr=00:04:9f:04:d2:36\0" \"eth1addr=00:04:9f:04:d2:37\0" \"ipaddr=192.168.0.121\0" \"netmask=255.255.255.0\0" \"gatewayip=192.168.0.1\0" \"serverip=192.168.0.104\0" \"bootargs=console=ttymxc0,115200 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs " \BOOTARGS_CMA_SIZE \MFG_NAND_PARTITION \"\0" \"bootcmd=nand read 0x80800000 0x700000 0xA00000;nand read 0x83000000 0x1100000 0x100000;bootz 0x80800000 - 0x83000000;\0"

4. 修改板级文件

$ cp board/freescale/mx6ullevk/ board/freescale/zzu -rf$ mv board/freescale/zzu/mx6ullevk.c board/freescale/zzu/zzu.c$ vim board/freescale/zzu/imximage_lpddr2.cfg# 修改以下内容PLUGINboard/freescale/zzu/plugin.bin 0x00907000$ vim board/freescale/zzu/imximage.cfg# 修改以下内容PLUGINboard/freescale/zzu/plugin.bin 0x00907000$ vim board/freescale/zzu/Kconfig# 修改以下内容if TARGET_ZZUconfig SYS_BOARDdefault "zzu"config SYS_VENDORdefault "freescale"config SYS_CONFIG_NAMEdefault "zzu"config SYS_TEXT_BASEdefault 0x87800000endif$ vim board/freescale/zzu/MAINTAINERS修改以下内容ZZU BOARDM:Peng Fan <peng.fan@>S:MaintainedF:board/freescale/zzu/F:include/configs/zzu.hF:configs/zzu_defconfig$ vim board/freescale/zzu/Makefileobj-y := zzu.o

5. 修改Kconfig文件

$ vim arch/arm/mach-imx/mx6/Kconfigconfig TARGET_ZZUbool "Support zzu"select BOARD_LATE_INITselect DMselect DM_THERMALselect MX6ULLimply CMD_DMsource "board/freescale/zzu/Kconfig"

6. 修改设备树文件

我们主要用到了串口网络口,目前我们的板子和NXP的评估版一样,因此可以不修改。

$ cp arch/arm/dts/imx6ull-14x14-evk-gpmi-weim.dts arch/arm/dts/zzu.dts$ vim arch/arm/dts/Makefiledtb-$(CONFIG_MX6ULL) += \... ...imx6ull-14x14-evk-gpmi-weim.dtb \zzu.dtb \... ...

7. 编译烧录

uboot-dtb.imx文件分别下载到mfgtool工具的file文件夹和firmware文件夹。

U-Boot .04+ (Apr 23 - 11:04:23 -0700)CPU: i.MX6ULL rev1.1 792 MHz (running at 396 MHz)CPU: Industrial temperature grade (-40C to 105C) at 49CReset cause: PORModel: i.MX6 ULL 14x14 EVK BoardBoard: MX6ULL ZZU GATEWAYDRAM: 512 MiBNAND: 512 MiBMMC: FSL_SDHC: 0Loading Environment from NAND... OK[*]-Video Link 0 (480 x 272)[0] lcdif@21c8000, videoIn: serialOut: serialErr: serialNet: eth1: ethernet@20b4000 [PRIME]Get shared mii bus on ethernet@2188000, eth0: ethernet@2188000Fastboot: NormalNormal BootHit any key to stop autoboot: 0=>=> ping 192.168.0.104Using ethernet@20b4000 devicehost 192.168.0.104 is alive

Uboot 原理分析

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。