Linux|I.MX6ULL学习笔记(二)—uboot移植

使用的开发板是正点原子 I.MX6ULL阿尔法开发板,这里通过移植NXP官方的uboot移植来体会整个uboot的过程,主要通过把官方的相关配置文件和文件名修改成自己的名字。
首先将NXP官方的uboot发送到ubuntu下,并且对文件进行解压,对解压文件夹进行重命名,生成文件夹如下。
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

使用cd命令进入uboot文件夹,首先可以编译一下官方的uboot,做一个验证。
shell脚本
新建一个shell脚本。输入以下内容。

#!/bin/bash make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihfmx6ull_14x14_evk_emmc_defconfig make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4

使用命令给shell脚本可执行权限
chmod 777 mx6ull_qhy_emmc.sh

Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

运行shell脚本,编译结果如下图所示。
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

修改makefile文件
由于shell第一行命令清除编译生成的文件,如果自己修改过内核之后,再次执行shell脚本,就会把自己设置的内容清理掉。因此,修改内核后,就不能使用清理命令,要重新编译只能执行后面两句命令,可以在shell脚本中屏蔽第一个命令,也可以在终端直接输入make来进行编译,但是输入时,反复需要输入指定系统架构ARCH和编译器CROSS_COMPILE的值。为了方便操作,可以在MakeFile中加上。
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片
接下来,可以使用make命令来编译了。
使用自己的shell脚本
复制shell脚本,重命名之后,修改其中内容如下所示。这里主要修改了deconfig,为之后添加自己的文件做准备。
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片
修改完成之后,保存退出。
复制默认配置文件
从 configs文件夹下复制mx6ull_14x14_evk_emmc_deconfig,重命名为mx6ull_qhy_emmc_deconfig,如下图所示:
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

修改配置文件
主要修改文件路径第一行和第四行,修改成之后自己要配置的文件。
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

板级文件
接下来进入board/freescale中,将mx6ullevk复制并修改为mx6ull_qhy_emmc
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

重命名.c文件
将.c文件修改为mx6ull_qhy_emmc.c
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

修改makefile
将obj-y修改为mx6ull_qhy_emmc.o
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

修改imximage.cfg配置文件
将34行原先的文件路径修改为自己的文件路径
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

修改Kconfig
同样的修改Kconfig文件配置。第一行,第四行,第十行。
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

修改MAINTAINERS文件
修改文件夹的路径和头文件
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

添加头文件
进入include/configs文件夹,复制mx6ullevk.h文件重命名。并且修改条件编译文件
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

修改U-Boot图形界面配置文件
进入/arch/arm/cpu/armv7/mx6文件夹中修改Kconfig
207添加自己的板子信息。
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

最后一行添加如下的路径:
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

编译UBoot 紧接着就可以使用shell脚本编译Uboot文件。
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

结果如下所示:
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

很多头文件被引用了。说明移植成功了。
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

修改LCD驱动 打开board/freescale/mx6ull_qhy_emmc/mx6ull_qhy_emmc.c文件
修改如内容如下所示:
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

修改mx6ull_qhy_emmc.h文件
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

修改网络驱动
主要包括三点:
1、ENETx复位引脚初始化
2、LAN8720A的器件ID
3、LAN8720的驱动
修改结果如下:
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

添加管脚定义
在mx6ull_qhy_emmc.c中添加管脚定义,并且屏蔽诸多无用的代码。
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

添加复位引脚定义
在fec_pads1[]和fec_pad2[]中添加复位引脚宏定义。
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

添加初始化代码
添加复位网络代码:
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

打开driver/net/phy/phy.c中添加如下代码:
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

至此,网络驱动修改完成,重新编译uboot,并且向SD卡烧写,重启开发板。
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

在串口终端上,网络已经正常了。
修改开发板名称
【Linux|I.MX6ULL学习笔记(二)—uboot移植】在board/freescale/mx6ull_qhy_emmc.c文件中
Linux|I.MX6ULL学习笔记(二)—uboot移植
文章图片

保存,编译,下载,可以看到板子名称也修改了。

    推荐阅读