uboot 成功加载之后通常需要检查:(1)、SD 卡和 EMMC 驱动是否正常(常规情况下都是正常的),(2)、LCD 屏幕驱动是否正常(问题不大);(3)、网络驱动是否正常(核心部分)
考虑到后续需要通过网络加载 Linux 内核镜像等,所以网络驱动是必不可缺的部分!
uboot 启动的时候提示 “Board Net Initialization Failed” 和 “No ethernet found.” 这两行,说明网络驱动存在大问题。
作者概述:实际工作中, 一般情况下 SD 卡和 EMMC 等内存驱动都不会存在太大问题,核心部分的问题还是出现在网络驱动部分(比如:S3C2440)!!!
2.2 修改NXP官方uboot
先在 configs 目录下创建默认配置文件,复制 mx6ull_14x14_evk_emmc_defconfig,然后重命名为 mx6ull_alientek_emmc_defconfig,命令如下:
cd configs
cp mx6ull_14x14_evk_emmc_defconfig mx6ull_alientek_emmc_defconfig
然后将文件 mx6ull_alientek_emmc_defconfig 中的内容改成下面的:
CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_alientek_emmc/imximage.cfg,MX6ULL_EVK_EMMC_REWORK"
CONFIG_ARM=y
CONFIG_ARCH_MX6=y
CONFIG_TARGET_MX6ULL_ALIENTEK_EMMC=y
CONFIG_CMD_GPIO=y
可以看出,mx6ull_alientek_emmc_defconfig 基本和 mx6ull_14x14_evk_emmc_defconfig 中的内容一样,只是第 1 行和第 4 行做了修改。修改的 2 行就是编译 uboot 配置时可以根据自己复制的副本进行配置编译了!
2.2.1 添加开发板对应的头文件
在目录 include/configs 下添加 I.MX6ULL-ALPHA 开 发 板 对 应 的 头 文 件 , 复 制 include/configs/mx6ullevk.h,并重命名为 mx6ull_alientek_emmc.h,命令如下:
cp include/configs/mx6ullevk.h mx6ull_alientek_emmc.h
修改防止重定义的 #ifndef 和 #define 的预处理代码:
mx6ull_alientek_emmc.h 里面有很多宏定义,这些宏定义基本用于配置 uboot,也有一些 I.MX6ULL 的配置项目。如果我们自己要想使能或者禁止 uboot 的某些功能,那就在 mx6ull_alientek_emmc.h 里面做修改即可。
2.2.2 添加开发板对应的板级文件夹
uboot 中每个板子都有一个对应的文件夹来存放板级文件,比如开发板上外设驱动文件等等。NXP 的 I.MX 系列芯片的所有板级文件夹都存放在 board/freescale 目录下,在这个目录下有个名为 mx6ullevk 的文件夹,这个文件夹就是 NXP 官方 I.MX6ULL EVK 开发板的板级文件夹。复制 mx6ullevk,将其重命名为 mx6ull_alientek_emmc,命令如下:
cd board/freescale/
cp mx6ullevk/ -r mx6ull_alientek_emmc
进入 mx6ull_alientek_emmc 目录中 , 将 其 中 的 mx6ullevk.c 文 件 重 命 名 为 mx6ull_alientek_emmc.c,命令如下:
cd mx6ull_alientek_emmc
mv mx6ullevk.c mx6ull_alientek_emmc.c
我们还需要对 mx6ull_alientek_emmc 目录下的文件做一些修改:
1、修改 mx6ull_alientek_emmc 目录下的 Makefile 文件
将 mx6ull_alientek_emmc 下的 Makefile 文件内容改为如下所示:
第 6 行的 obj-y,改为 mx6ull_alientek_emmc.o,这样才会编译 mx6ull_alientek_emmc.c 这个文件。
2、修改 mx6ull_alientek_emmc 目录下的 imximage.cfg 文件
将 imximage.cfg 中的下面一句:PLUGIN board/freescale/mx6ullevk/plugin.bin 0x00907000
改为:PLUGIN board/freescale/mx6ull-alientek_emmc/plugin.bin 0x00907000
3、修改 mx6