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

使用的开发板是正点原子 I.MX6ULL阿尔法开发板,这里通过移植NXP官方的uboot移植来体会整个uboot的过程,主要通过把官方的相关配置文件和文件名修改成自己的名字。
首先将NXP官方的uboot发送到ubuntu下,并且对文件进行解压,对解压文件夹进行重命名,生成文件夹如下。
在这里插入图片描述
使用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

在这里插入图片描述
运行shell脚本,编译结果如下图所示。
I.MX6ULL学习笔记(二)—uboot移植_第1张图片

修改makefile文件

由于shell第一行命令清除编译生成的文件,如果自己修改过内核之后,再次执行shell脚本,就会把自己设置的内容清理掉。因此,修改内核后,就不能使用清理命令,要重新编译只能执行后面两句命令,可以在shell脚本中屏蔽第一个命令,也可以在终端直接输入make来进行编译,但是输入时,反复需要输入指定系统架构ARCH和编译器CROSS_COMPILE的值。为了方便操作,可以在MakeFile中加上。
I.MX6ULL学习笔记(二)—uboot移植_第2张图片接下来,可以使用make命令来编译了。

使用自己的shell脚本

复制shell脚本,重命名之后,修改其中内容如下所示。这里主要修改了deconfig,为之后添加自己的文件做准备。
在这里插入图片描述修改完成之后,保存退出。

复制默认配置文件

从 configs文件夹下复制mx6ull_14x14_evk_emmc_deconfig,重命名为mx6ull_qhy_emmc_deconfig,如下图所示:

在这里插入图片描述

修改配置文件

主要修改文件路径第一行和第四行,修改成之后自己要配置的文件。

I.MX6ULL学习笔记(二)—uboot移植_第3张图片

板级文件

接下来进入board/freescale中,将mx6ullevk复制并修改为mx6ull_qhy_emmc

I.MX6ULL学习笔记(二)—uboot移植_第4张图片

重命名.c文件

将.c文件修改为mx6ull_qhy_emmc.c
在这里插入图片描述

修改makefile

将obj-y修改为mx6ull_qhy_emmc.o
I.MX6ULL学习笔记(二)—uboot移植_第5张图片

修改imximage.cfg配置文件

将34行原先的文件路径修改为自己的文件路径
在这里插入图片描述

修改Kconfig

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

修改MAINTAINERS文件

修改文件夹的路径和头文件
I.MX6ULL学习笔记(二)—uboot移植_第7张图片
添加头文件

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

修改U-Boot图形界面配置文件

进入/arch/arm/cpu/armv7/mx6文件夹中修改Kconfig
207添加自己的板子信息。
I.MX6ULL学习笔记(二)—uboot移植_第9张图片
最后一行添加如下的路径:
I.MX6ULL学习笔记(二)—uboot移植_第10张图片

编译UBoot

紧接着就可以使用shell脚本编译Uboot文件。
在这里插入图片描述
结果如下所示:
I.MX6ULL学习笔记(二)—uboot移植_第11张图片
很多头文件被引用了。说明移植成功了。
I.MX6ULL学习笔记(二)—uboot移植_第12张图片

修改LCD驱动

打开board/freescale/mx6ull_qhy_emmc/mx6ull_qhy_emmc.c文件
修改如内容如下所示:
I.MX6ULL学习笔记(二)—uboot移植_第13张图片
修改mx6ull_qhy_emmc.h文件
在这里插入图片描述

修改网络驱动

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

添加管脚定义

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

添加复位引脚定义

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

添加初始化代码

添加复位网络代码:
I.MX6ULL学习笔记(二)—uboot移植_第17张图片
打开driver/net/phy/phy.c中添加如下代码:
I.MX6ULL学习笔记(二)—uboot移植_第18张图片

至此,网络驱动修改完成,重新编译uboot,并且向SD卡烧写,重启开发板。
I.MX6ULL学习笔记(二)—uboot移植_第19张图片
在串口终端上,网络已经正常了。

修改开发板名称

在board/freescale/mx6ull_qhy_emmc.c文件中
I.MX6ULL学习笔记(二)—uboot移植_第20张图片
保存,编译,下载,可以看到板子名称也修改了。

你可能感兴趣的:(Linux,学习,linux,单片机)