使用的开发板是正点原子 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脚本,编译结果如下图所示。
文章图片
修改makefile文件
由于shell第一行命令清除编译生成的文件,如果自己修改过内核之后,再次执行shell脚本,就会把自己设置的内容清理掉。因此,修改内核后,就不能使用清理命令,要重新编译只能执行后面两句命令,可以在shell脚本中屏蔽第一个命令,也可以在终端直接输入make来进行编译,但是输入时,反复需要输入指定系统架构ARCH和编译器CROSS_COMPILE的值。为了方便操作,可以在MakeFile中加上。
文章图片
接下来,可以使用make命令来编译了。
使用自己的shell脚本
复制shell脚本,重命名之后,修改其中内容如下所示。这里主要修改了deconfig,为之后添加自己的文件做准备。
文章图片
修改完成之后,保存退出。
复制默认配置文件
从 configs文件夹下复制mx6ull_14x14_evk_emmc_deconfig,重命名为mx6ull_qhy_emmc_deconfig,如下图所示:
文章图片
修改配置文件
主要修改文件路径第一行和第四行,修改成之后自己要配置的文件。
文章图片
板级文件
接下来进入board/freescale中,将mx6ullevk复制并修改为mx6ull_qhy_emmc
文章图片
重命名.c文件
将.c文件修改为mx6ull_qhy_emmc.c
文章图片
修改makefile
将obj-y修改为mx6ull_qhy_emmc.o
文章图片
修改imximage.cfg配置文件
将34行原先的文件路径修改为自己的文件路径
文章图片
修改Kconfig
同样的修改Kconfig文件配置。第一行,第四行,第十行。
文章图片
修改MAINTAINERS文件
修改文件夹的路径和头文件
文章图片
添加头文件
进入include/configs文件夹,复制mx6ullevk.h文件重命名。并且修改条件编译文件
文章图片
修改U-Boot图形界面配置文件
进入/arch/arm/cpu/armv7/mx6文件夹中修改Kconfig
207添加自己的板子信息。
文章图片
最后一行添加如下的路径:
文章图片
编译UBoot 紧接着就可以使用shell脚本编译Uboot文件。
文章图片
结果如下所示:
文章图片
很多头文件被引用了。说明移植成功了。
文章图片
修改LCD驱动 打开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卡烧写,重启开发板。
文章图片
在串口终端上,网络已经正常了。
修改开发板名称
【Linux|I.MX6ULL学习笔记(二)—uboot移植】在board/freescale/mx6ull_qhy_emmc.c文件中
文章图片
保存,编译,下载,可以看到板子名称也修改了。
推荐阅读
- linux之旅|linux命令行(五)管理用户和组
- K8S|saltstack安装
- linux|shell编程--三剑客之sed
- linux|shell编程--三剑客之awk
- shell|Linux系统yum安装rz sz命令
- c语言中point的用法|c语言中point的用法_嵌入式C语言自我修养 01(Linux 内核中的 C 语言语法扩展)
- 安卓源码探究|android源码学习-Handler机制及其六个核心点
- 服务器应用散热控制专用灵动微32位MCU应用案例
- idea|IDEA软件: 前进和后退添加到工具栏