uboot版本: u-boot.2016.03(无设备树版本)
开发板:100ask_imx6ull_pro
测试编译官方uboot
找到 NXP官方 I.MX6ULL EVK开发板对应的默认配置文件以后就可以编译一下
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_evk_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
烧写测试
U-Boot 2016.03 (Dec 08 2022 - 21:13:20 +0800)
CPU: Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz)
CPU: Industrial temperature grade (-40C to 105C) at 42C
Reset cause: WDOG
Board: MX6ULL 14x14 EVK
I2C: ready
DRAM: 512 MiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
*** Warning - bad CRC, using default environment
Display: TFT43AB (480x272)
Video: 480x272x24
In: serial
Out: serial
Err: serial
switch to partitions #0, OK
mmc1(part 0) is current device
Net: FEC1
Error: FEC1 address not set.
U-Boot中添加自己的开发板
1, 添加开发板默认配置文件
先在 configs目录下创建默认配置文件,复制 mx6ull_14x14_evk_emmc_defconfig,然后重命名为mx6ull_jzy_emmc_defconfig
cd configs
cp mx6ull_14x14_evk_emmc_defconfig mx6ull_jzy_emmc_defconfig
然后将文件 mx6ull_jzy_emmc_defconfig中的内容改成下面的:
CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_jzy_emmc/imximage.cfg,MX6ULL_EVK_EMMC_REWORK"
CONFIG_ARM=y
CONFIG_ARCH_MX6=y
CONFIG_TARGET_MX6ULL_JZY_EMMC=y
CONFIG_CMD_GPIO=y
2,添加开发板对应的头文件
在目录 include/configs 下添加 I.MX6ULL-MYBOARD 开发板对应的头文件 ,复制
include/configs/mx6ullevk.h,并重命名为 mx6ull_jzy_emmc.h
cp include/configs/mx6ullevk.h mx6ull_jzy_emmc.h
拷贝完成以后将:
#ifndef __MX6ULLEVK_CONFIG_H
#define __MX6ULLEVK_CONFIG_H
改为:
#ifndef __MX6ULL_JZY_EMMC_CONFIG_H
#define __MX6ULL_JZY_EMMC_CONFIG_H
3,添加开发板对应的板级文件夹
uboot中每个板子都有一个对应的文件夹来存放板级文件
cd board/freescale/
cp mx6ullevk/ -r mx6ull_jzy_emmc
cd mx6ull_jzy_emmc
mv mx6ullevk.c mx6ull_jzy_emmc.c
修改 mx6ull_jzy_emmc目录下的 Makefile文件
obj-y := mx6ull_jzy_emmc.o
修改 mx6ull_myboard_emmc目录下的 imximage.cfg文件
将 imximage.cfg中的下面一句:
PLUGIN board/freescale/mx6ullevk/plugin.bin 0x00907000
改为:
PLUGIN board/freescale/mx6ull_jzy_emmc/plugin.bin 0x00907000
mx6ull_myboard_emmc目录下的 Kconfig文件
if TARGET_MX6ULL_JZY_EMMC
config SYS_BOARD
default "mx6ull_jzy_emmc"
config SYS_VENDOR
default "freescale"
config SYS_SOC
default "mx6"
config SYS_CONFIG_NAME
default "mx6ull_jzy_emmc"
endif
修改 mx6ull_myboard_emmc目录下的 MAINTAINERS文件
MX6ULL_JZY_EMMC BOARD
M: Peng Fan <peng.fan@nxp.com>
S: Maintained
F: board/freescale/mx6ull_jzy_emmc/
F: include/configs/mx6ull_jzy_emmc.h
F: configs/mx6ull_jzy_emmc_defconfig
4,修改 U-Boot图形界面配置文件
修改文件
arch/arm/cpu/armv7/mx6/Kconfig(如果用的 I.MX6UL的话,应该修改 arch/arm/Kconfig这个文
件),在 207行加入如下内容:
config TARGET_MX6ULL_JZY_EMMC
bool "Support mx6ull_myboard_emmc"
select MX6ULL
select DM
select DM_THERMAL
在最后一行的 endif的前一行添加如下内容:
source "board/freescale/mx6ull_jzy_emmc/Kconfig"
使用新添加的板子配置编译 uboot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_jzy_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
至此, 添加自定义板卡的默认配置已完成, 不过仅是对官方的配置进行复制.
总体来说, uboot的功能是对kernel的引导, 所以理论上没有必要在uboot做太多的外设驱动.
对于一些必要的驱动有:
1, 串口. 2,存储设备,如:NAND、EMMC或 SD卡. 3,网络. 4, LCD驱动(可选)
经过烧写官方版本uboot测试, 发现在现板机上串口可用, 存储设备(SD卡,emmc)可用, LCD不可用, 网络不可用.
所以, 下一篇便讲述修改LCD, 网络驱动.