linux emmc读取错误_「正点原子Linux连载」第三十四章U-Boot图形化配置及其原理

本文介绍了如何使用U-Boot的图形化配置工具menuconfig进行配置,并探讨了其背后的makemenuconfig过程及Kconfig语法。通过实例演示了使能DNS命令的配置步骤,解析了menuconfig的工作原理,包括mainmenu、Kconfig语法、config条目、choice与dependson、menuconfig等。此外,还展示了如何添加自定义菜单和配置项。
摘要由CSDN通过智能技术生成

1)实验平台:正点原子Linux开发板

2)摘自《正点原子I.MX6U嵌入式Linux驱动开发指南

关注官方微信号公众号,获取更多资料:正点原子

0d1f4c091ab06f35fe788af061728b8d.png

在前两章中我们知道uboot可以通过mx6ull_alientek_emmc_defconfig来配置,或者通过文件mx6ull_alientek_emmc.h来配置uboot。还有另外一种配置uboot的方法,就是图形化配置,以前的uboot是不支持图形化配置,只有Linux内核才支持图像化配置。不过不知道从什么时候开始,uboot也支持图形化配置了,本章我们就来学习一下如何通过图形化配置uboot,并且学习一下图形化配置的原理,因为后面学习Linux驱动开发的时候可能要修改图形配置文件。

34.1 U-Boot图形化配置体验

uboot或Linux内核可以通过输入"makemenuconfig"来打开图形化配置界面,menuconfig是一套图形化的配置工具,需要ncurses库支持。ncurses库提供了一系列的API函数供调用者生成基于文本的图形界面,因此需要先在Ubuntu中安装ncurses库,命令如下:

sudo apt-get install build-essential

sudo apt-get install libncurses5

sudo apt-get install libncurses5-dev

menuconfig重点会用到两个文件:.config和Kconfig,.config文件前面已经说了,这个文件保存着uboot的配置项,使用menuconfig配置完uboot以后肯定要更新.config文件。Kconfig文件是图形界面的描述文件,也就是描述界面应该有什么内容,很多目录下都会有Kconfig文件。

在打开图形化配置界面之前,要先使用"makexxx_defconfig"对uboot进行一次默认配置,只需要一次即可。如果使用"makeclean"清理了工程的话就那就需要重新使用"makexxx_defconfig"再对uboot进行一次配置。进入uboot根目录,输入如下命令:

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

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

如果已经在uboot的顶层Makefile中定义了ARCH和CROSS_COMPILE的值,那么上述命令可以简化为:

makemx6ull_alientek_emmc_defconfig

makemenuconfig

打开后的图形化界面如图34.1.1所示:

bbfc1d5c1765abded57f3cd681b914b6.png

图34.1.1 uboot图形化配置界面

图34.1.1就是主界面,主界面上方的英文就是简单的操作说明,操作方法如下:

通过键盘上的"↑"和"↓"键来选择要配置的菜单,按下"Enter"键进入子菜单。菜单中高亮的字母就是此菜单的热键,在键盘上按下此高亮字母对应的键可以快速选中对应的菜单。选中子菜单以后按下"Y"键就会将相应的代码编译进Uboot中,菜单前面变为"< * >"。按下"N"键不编译相应的代码,按下"M"键就会将相应的代码编译为模块,菜单前面变为"< M >"。按两下"Esc"键退出,也就是返回到上一级,按下"?"键查看此菜单的帮助信息,按下"/"键打开搜索框,可以在搜索框输入要搜索的内容。

在配置界面下方会有五个按钮,这五个按钮的功能如下:

:选中按钮,和"Enter"键的功能相同,负责选中并进入某个菜单。

:退出按钮,和按两下"Esc"键功能相同,退出当前菜单,返回到上一级。

:帮助按钮,查看选中菜单的帮助信息。

:保存按钮,保存修改后的配置文件。

:加载按钮,加载指定的配置文件。

在图34.1.1中共有13个配置主配置项,通过键盘上的上下键调节配置项。后面跟着"--->"表示此配置项是有子配置项的,按下回车键就可以进入子配置项。

我们就以如何使能dns命令为例,讲解一下如何通过图形化界面来配置uboot。进入"Command line interface --->"这个配置项,此配置项用于配置uboot的命令,进入以后如图34.1.2所示:

ed012457ea1df215b06c50e3dda63352.png

图34.1.2 Command line interface配置项

从图34.1.2可以看出,有很多配置项,这些配置项也有子配置项,选择"Network commands --->",进入网络相关命令配置项,如图34.1.3所示:

6a61da49866950ab528fdc562bc49471.png

图34.1.3 Network commands配置项

从图34.1.3可以看出,uboot中有很多和网络有关的命令,比如bootp、tftpboot、dhcp等等。选中dns,然后按下键盘上的"Y"键,此时dns前面的"[ ]"变成了"[ * ]",如图34.1.4所示:

6dc5fc6e4529de2c13b21cfc8bedbcc8.png

图34.1.4 选中dns命令

每个选项有3种编译选项:编译进uboot中(也就是编译进u-boot.bin中)、取消编译(也就是不编译这个功能模块)、编译为模块。按下"Y"键表示编译进uboot中,此时"[ ]"变成了"[ * ]";按下"N"表示不编译,"[ ]"默认表示不编译;有些功能模块是支持编译为模块的,这个一般在Linux内核里面很常用,uboot下面不使用,如果要将某个功能编译为模块,那就按下"M",此时"[ ]"就会变为"< M >"。

细心的朋友应该会发现,在mx6ull_alientek_emmc.h里面我们配置使能了dhcp和ping命令,但是在图34.1.3中dhcp和ping前面的"[ ]"并不是"[ * ]",也就是说不编译dhcp和ping命令,这不是冲突了吗?实际情况是dhcp和ping命令是会编译的。之所以在图34.1.3中没有体现出来时因为我们是直接在mx6ull_alientek_emmc.h中定义的宏CONFIG_CMD_PING和CONFIG_CMD_DHCP,而menuconfig是通过读取.config文件来判断使能了哪些功能,.config里面并没有宏CONFIG_CMD_PING和CONFIG_CMD_DHCP,所以menuconfig就会识别出错。

选中dns,然后按下"H"或者"?"键可以打开dns命令的提示信息,如图34.1.5所示:

b1756c36a1f953feba538b361cd3c24b.png

图34.1.5 dns命令提示信息

按两下ESC键即可退出提示界面,相当于返回上一层。选择dns命令以后,按两下ESC键(按两下ESC键相当于返回上一层),退出当前

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值