嵌入式Linux(二十一)U-Boot图形化配置及其原理

1. U-Boot图形化配置体验

  前面用了mx6ull_alientek_emmc_defconfig和mx6ull_alientek_emmc.h对uboot进行了配置,还有一种方式是图形化配置。后面学习linux驱动开发也需要学会图形配置。
  由于Makefile中已经有ARCH和CROSS_COMPILE的值,直接输入以下代码打开图形化配置界面:

make mx6ull_alientek_emmc_defconfig
make menuconfig

在这里插入图片描述
以使能dns命令为例:
①选中“Command line interface —>”这个配置项,该主配置项用于配置uboot的命令。
②进入后,选择“Network commands —>”进入网络相关命令配置项。
③选中dns,然后按下"Y",dns前面的[ ]变为[ * ]
④Y表示编译进uboot中;按下N表示不编译,对应“[ ]”;按下M表示编译为模块,一般用于linux内核不用于uboot,对应“[ M ]”
⑤保存退出,打开.config文件,多了一行“CONFIG_CMD_DNS=y”。
⑥输入以下命令编译uboot(千万不能使用.sh,会清除掉.config,导致图形化配置失效,除非删掉.sh里面的distclean):

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16

⑦打开uboot,设置dns服务器IP地址:

setenv dnsip 114.114.114.114

⑧将开发板直接接到路由器,要访问外部互联网,输入“dns www.xxx.com”即可查看对应网站IP地址。

  需要注意的是,menuconfig是通过读取.config文件来判断使用了哪些命令,所以这里dhcp和ping命令是“[ ]”,实际上这两个命令定义在.h的宏中,实际上是会编译的。

2. U-Boot图形化配置原理

2.1 make menuconfig过程分析

  输入该命令后,匹配到顶层make的以下代码:

%config: scripts_basic outputmakefile FORCE
	$(Q)$(MAKE) $(build)=scripts/kconfig $@
	/*展开:@ make -f ./scripts/Makefile.build obj=scripts/kconfig menuconfig*/

  这一句命令会读取scripts/kconfig/Makefile的以下代码。
  目标menuconfig依赖于scripts/kconfig/mconf,所以mconf.c会编译生成mconf可执行文件。menuconfig对应规则为scripts/kconfig/mconf Kconfig,所以mconf会调用uboot根目录下的Kconfig文件开始构建图形配置界面。

menuconfig: $(obj)/mconf
	$< $(silent) $(Kconfig)

/*展开:
menuconfig: scripts/kconfig/mconf
	scripts/kconfig/mconf Kconfig
*/

2.2 Kconfig语法简介

打开顶层Kconfig:

/*定义了一个名为“U-Boot $U...”的主菜单*/
mainmenu "U-Boot $UBOOTVERSION Configuration"

/*调用其它子Kconfig*/
source "xxx/Kconfig"

/*meun生成菜单,endmenu结束菜单*/

/*config条目-菜单的具体配置项*/
config xxx
/*如果xxx配置项使能了,就会在.config中生成CONFIG_xxx*/

comment "Generic NAND options"       /*图形化界面中注释*/

打开arch/Kconfig:

/*deoends on说明SYS_依赖于HAVE_*/
config SYS_GENERIC_BOARD
	bool
	depends on HAVE_GENERIC_BOARD

/*select表示方向依赖,选中ARC后,HAVE_也会被选中*/
config ARC
	bool "ARC architecture"
	select HAVE_PRIVATE_LIBGCC
	
/*choice/endchoice定义了一组可选择项*/
/*prompt是这个段的提示信息:选择CPU架构*/
choice
	prompt "Architecture select"
	default SANDBOX
...
endchoice

menuconfig基本用法:

/*定义了一个可选菜单MODULES,只有选中MODULES才会显示if中的内容*/
menuconfig MODULES 
	bool "菜单"
if MODULES
...
endif # MODULES

2.3 添加自定义菜单

要求如下:
①在主界面中添加一个名为“My test menu”,此菜单内部有一个配置项。
②配置项为“MY_TESTCONFIG”,此配置项处于菜单“My test menu”中。
③配置项的为变量类型为 bool,默认值为 y。
④配置项菜单名字为“This is my test config”
⑤配置项的帮助内容为“This is a empty config, just for tset!”。

在顶层Kconfig加入以下代码:

menu "My test menu"
config MY_TESTCONFIG
	bool "This is my test config"
	default y
	help
		This is a empty config, just for test!
endmenu # my test menu

在.config文件中找到了:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书主要分为3个部分,包括Linux基础、搭建嵌入式Linux环境和嵌入式Linux的应用开发。Linux基础部分从Linux的安装过程、基本操作命令讲起,为Linux初学者能快速入门提供了保证。接着系统地讲解了嵌入式Linux的环境搭建,以及嵌入式Linux的I/O与文件系统的开发、进程控制开发、进程间通信开发、网络应用开发、基于中断的开发、设备驱动程序的开发以及嵌入式图形界面的开发等,并且还安排了丰富的实验内容与课后实践,使读者能够边学边用,更快更好地掌握所学知识。本书可作为高等院校电子类、电气类、控制类等专业高年级本科生、研究生学习嵌入式Linux的教材,也可供广大希望转入嵌入式领域的科研和工程技术人员参考使用,还可作为广大嵌入式培训班的教材和参考书。 目录第1章 Linux快速入门  1.1 嵌入式Linux基础  1.2 Linux安装  1.3 Linux文件及文件系统  1.4 实验内容——安装Linux操作系统  本章小结  思考与练习 第2章 Linux基础命令  2.1 Linux常用操作命令 2.2 Linux启动过程详解 2.3 Linux系统服务 2.4 实验内容  本章小结  思考与练习 第3章 Linux下的C编程基础  3.1 Linux下 C语言编程概述 3.2 进入Vi  3.3 初探Emacs  3.4 Gcc编译器  3.5 Gdb调试器 3.6 Make工程管理器 3.7 使用autotools  3.8 实验内容  本章小结  思考与练习 第4章 嵌入式系统基础  4.1 嵌入式系统概述  4.2 ARM处理器硬件开发平台  4.3 嵌入式软件开发流程  4.4 实验内容——使用JTAG烧写NAND Flash  本章小结  思考与练习 第5章 嵌入式Linux开发环境的搭建  5.1 嵌入式开发环境的搭建  5.2 U-Boot移植  5.3 实验内容——移植Linux内核  本章小结  思考与练习 第6章 文件I/O编程  6.1 Linux系统调用及用户编程接口(API) 6.2 Linux中文件及文件描述符概述  6.3 不带缓存的文件I/O……

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值