37.4.5 保存修改后的图形化配置文件
如果使用 V2.4 以前的底板,用的是 LAN8720A 这颗 PHY 芯片,我们在修改网络驱动的时
候我们通过图形界面使能了 LAN8720A 的驱动,使能以后会在.config 中存在如下代码:
CONFIG_SMSC_PHY=y
打开 drivers/net/phy/Makefile,有如下代码:
示例代码 37.4.5.1 drivers/net/phy/Makefile 代码段
11 obj-$(CONFIG_SMSC_PHY) += smsc.o
当 CONFIG_SMSC_PHY=y 的时候就会编译 smsc.c 这个文件,smsc.c 就是 LAN8720A 的驱动文件。但是当我们执行“make clean”清理工程以后.config 文件就会被删除掉,因此我们所有
的配置内容都会丢失,结果就是前功尽弃,一“删”回到解放前!所以我们在配置完图形界面
以后经过测试没有问题,就必须要保存一下配置文件。保存配置的方法有两个。
1、直接另存为.config 文件
既然图形化界面配置后的配置项保存在.config 中,那么就简单粗暴,直接将.config 文件另
存为 imx_alientek_emmc_defconfig ,然后其复制到 arch/arm/configs 目录下,替换以前的
imx_alientek_emmc_defconfig。这样以后执行“make imx_alientek_emmc_defconfig”重新配置
Linux 内核的时候就会使用新的配置文件,默认就会使能 LAN8720A 的驱动。
2、通过图形界面保存配置文件
相比于第 1 种直接另存为.config 文件,第 2 种方法就很“文雅”了,在图形界面中保存配
置文件,在图形界面中会有“< Save >”选项,如图 37.4.5.1 所示:
图 37.4.5.1 保存配置
通过键盘的“→”键,移动到“< Save >”选项,然后按下回车键,打开文件名输入对话框,
如图 37.4.5.2 所示:
图 37.4.5.2 输入文件名
在图 37.4.5.2 中输入要保存的文件名,可以带路径,一般是相对路径(相对于 Linux 内核源
码 根 目 录 ) 。 比 如 我 们 要 将 新 的 配 置 文 件 保 存 到 目 录 arch/arm/configs 下 , 文 件 名 为
imx_alientek_emmc_defconfig,也就是用新的配置文件替换掉老的默认配置文件。那么我们在图
37.4.5.2 中输入“arch/arm/configs/imx_alientek_emmc_defconfig”即可,如图 37.4.5.3 所示:
设置好文件名以后选择下方的“< Ok >”按钮,保存文件并退出。退出以后再打开
imx_alientek_emmc_defconfig 文件,就会在此文件中找到“CONFIG_SMSC_PHY=y”这一行,
如图 37.4.4.4 所示:
图 37.4.5.4 新的配置文件
同样的,使用“make imx_alientek_emmc_defconfig”重新配置 Linux 内核的时候,LAN8720A
的驱动就会使能,并被编译进 Linux 镜像文件 zImage 中。
关于 Linux 内核的移植就讲解到这里,简单总结一下移植步骤:
①、在 Linux 内核中查找可以参考的板子,一般都是半导体厂商自己做的开发板。
②、编译出参考板子对应的 zImage 和.dtb 文件。
③、使用参考板子的 zImage 文件和.dtb 文件在我们所使用的板子上启动 Linux 内核,看能
否启动。
④、如果能启动的话就万事大吉,如果不能启动那就悲剧了,需要调试 Linux 内核。不过
一般都会参考半导体官方的开发板设计自己的硬件,所以大部分情况下都会启动起来。启动
Linux 内核用到的外设不多,一般就 DRAM(Uboot 都初始化好的)和串口。作为终端使用的串口
一般都会参考半导体厂商的 Demo 板。
⑤、修改相应的驱动,像 NAND Flash、EMMC、SD 卡等驱动官方的 Linux 内核都是已经
提供好了,基本不会出问题。重点是网络驱动,因为 Linux 驱动开发一般都要通过网络调试代
码,所以一定要确保网络驱动工作正常。如果是处理器内部 MAC+外部 PHY 这种网络方案的
话,一般网络驱动都很好处理,因为在 Linux 内核中是有外部 PHY 通用驱动的。只要设置好复
位引脚、PHY 地址信息基本上都可以驱动起来。
⑥、Linux 内核启动以后需要根文件系统,如果没有根文件系统的话肯定会崩溃,所以确定 Linux
内核移植成功以后就要开始根文件系统的构建。