由于NXP EVK开发板与核心板PCB布局走线、制版工艺等的不同,我们需要对DDR内存参数进行调整才能更稳定高效的在我们的开发板运行。NXP提供了DDR Stress Test Tool,通过这个工具可以对DDR内存进行校准,获得稳定高效的参数,至于这个工具怎么使用,我们这里不讲解,我们这里直接使用调整好的参数。在uboot配置章节我们已经知道,board/freescale/mx6ullevk/imximage.cfg文件中存储着DCD参数,DCD参数包括了对外设时钟和DDR内存的初始化配置,所以我们只需要更改这个文件即可,此文件中都是对相关寄存器的配置,我们不再一一修改调整,直接使用我们配置好的imximage_emmc.cfg文件。我们介绍一下ELF 1开发板的DCD参数配置,ELF 1使用的内存参数为ELF 1开发板资料包2-Linux 源代码2-1 驱动源码11_imximage(uboot)imximage_emmc.cfg,对应eMMC的参数设置。
修改方法如下:
一、将imximage_emmc.cfg文件复制到uboot源码board/freescale/mx6ullevk/目录下。
二、将configs/目录下的mx6ull_14x14_evk_emmc_defconfig复制为imx6ull_elf1_defconfig形成我们自己的默认配置文件:
进入configs/目录执行:
| elf@ubuntu:~/work/elf1_uboot/uboot-imx-2016.03/configs$ cp mx6ull_14x14_evk_emmc_defconfig imx6ull_elf1_defconfig |
三、打开imx6ull_elf1_defconfig文件,更改为:
| CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ullevk/imximage_emmc.cfg,MX6ULL_EVK_EMMC_REWORK"
CONFIG_ARM=y CONFIG_ARCH_MX6=y CONFIG_TARGET_MX6ULL_14X14_EVK=y CONFIG_CMD_GPIO=y |
四、修改include/configs/mx6ullevk.h 文件,将imx6ull-14x14-evk.dtb 改为imx6ull-elf1-emmc.dtb
注意:NXP EVK开发板使用的设备树名称为imx6ull-14x14-evk.dtb,ELF 1使用的设备树名称为imx6ull-elf1-emmc.dtb,
修改完成之后,编译uboot。
首先建立编译脚本:
| elf@ubuntu:~/work/elf1_uboot/uboot-imx-2016.03$ touch build.sh
elf@ubuntu:~/work/elf1_uboot/uboot-imx-2016.03$ vim build.sh |
在脚本中输入以下内容:
| #!/bin/bash
export CPU='grep -c processor /proc/cpuinfo' source /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi make distclean make imx6ull_elf1_defconfig make -j${CPUS} |
注意:将上面的内容复制到开发环境中可能会存在格式问题,正确格式内容如下图所示,请参考下图进行调整:
给脚本可执行权限:
| elf@ubuntu:~/work/elf1_uboot/uboot-imx-2016.03$ chmod u+x build.sh |
然后直接使用build.sh脚本进行编译:
| elf@ubuntu:~/work/elf1_uboot/uboot-imx-2016.03$ ./build.sh |
将生成的u-boot.imx复制到烧写工具中并替换烧写工具中相对应的文件:
如果使用otg烧写则替换ELF 1开发板资料包6-常用工具6-4 烧写工具OTG烧写mfgtoolsmfgtoolsProfilesLinuxOS Firmwarefiles中的u-boot.imx。
如果使用TF卡烧写则替换ELF 1开发板资料包6-常用工具6-4 烧写工具TF卡烧写elf1_tfcard_burnelf1_tfcard_burntarget中的u-boot.imx。
1241