使用的开发板是正点原子 I.MX6ULL阿尔法开发板,这里通过移植NXP官方的uboot移植来体会整个uboot的过程,主要通过把官方的相关配置文件和文件名修改成自己的名字。
首先将NXP官方的uboot发送到ubuntu下,并且对文件进行解压,对解压文件夹进行重命名,生成文件夹如下。
使用cd命令进入uboot文件夹,首先可以编译一下官方的uboot,做一个验证。
新建一个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第一行命令清除编译生成的文件,如果自己修改过内核之后,再次执行shell脚本,就会把自己设置的内容清理掉。因此,修改内核后,就不能使用清理命令,要重新编译只能执行后面两句命令,可以在shell脚本中屏蔽第一个命令,也可以在终端直接输入make来进行编译,但是输入时,反复需要输入指定系统架构ARCH和编译器CROSS_COMPILE的值。为了方便操作,可以在MakeFile中加上。
接下来,可以使用make命令来编译了。
复制shell脚本,重命名之后,修改其中内容如下所示。这里主要修改了deconfig,为之后添加自己的文件做准备。
修改完成之后,保存退出。
从 configs文件夹下复制mx6ull_14x14_evk_emmc_deconfig,重命名为mx6ull_qhy_emmc_deconfig,如下图所示:
主要修改文件路径第一行和第四行,修改成之后自己要配置的文件。
接下来进入board/freescale中,将mx6ullevk复制并修改为mx6ull_qhy_emmc
将.c文件修改为mx6ull_qhy_emmc.c
进入include/configs文件夹,复制mx6ullevk.h文件重命名。并且修改条件编译文件
进入/arch/arm/cpu/armv7/mx6文件夹中修改Kconfig
207添加自己的板子信息。
最后一行添加如下的路径:
紧接着就可以使用shell脚本编译Uboot文件。
结果如下所示:
很多头文件被引用了。说明移植成功了。
打开board/freescale/mx6ull_qhy_emmc/mx6ull_qhy_emmc.c文件
修改如内容如下所示:
修改mx6ull_qhy_emmc.h文件
主要包括三点:
1、ENETx复位引脚初始化
2、LAN8720A的器件ID
3、LAN8720的驱动
修改结果如下:
在mx6ull_qhy_emmc.c中添加管脚定义,并且屏蔽诸多无用的代码。
在fec_pads1[]和fec_pad2[]中添加复位引脚宏定义。
添加复位网络代码:
打开driver/net/phy/phy.c中添加如下代码:
至此,网络驱动修改完成,重新编译uboot,并且向SD卡烧写,重启开发板。
在串口终端上,网络已经正常了。
在board/freescale/mx6ull_qhy_emmc.c文件中
保存,编译,下载,可以看到板子名称也修改了。