ncurses 库提供了一系列的 API 函数供调用者生成基于文本的图形界面,因此需要先在 Ubuntu 中安装 ncurses 库
sudo apt-get install build-essential
sudo apt-get install libncurses5-dev
menuconfig 重点会用到两个文件: .config 和 Kconfig
.config文件保存着 uboot 的配置项,使用 menuconfig 配置完 uboot 以后肯定要更新.config 文件
Kconfig文件是图形界面的描述文件,也就是描述界面应该有什么内容,很多目录下都会有 Kconfig
在打开图形化配置界面之前,要先使用“make xxx_defconfig”对 uboot 进行一次默认配置,
只需要一次即可。如果使用“ make clean”清理了工程的话就那就需要重新对 uboot 进行一次配置
进入 uboot 根目录,输入如下命令:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_my_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
如果已经在 uboot 的顶层 Makefile 中定义了 ARCH 和 CROSS_COMPILE 的值可以简化为
make mx6ull_my_defconfig
make menuconfig
<Select>:选中按钮,和“Enter”键的功能相同,负责选中并进入某个菜单。
<Exit>:退出按钮,和按两下“Esc”键功能相同,退出当前菜单,返回到上一级。
<Help>:帮助按钮,查看选中菜单的帮助信息。
<Save>:保存按钮,保存修改后的配置文件。
<Load>:加载按钮,加载指定的配置文件。
键盘上的“↑”和“↓”键来选择要配置的菜单,按下“Enter”键进入子菜单。
菜单中高亮的字母就是此菜单的热键,在键盘上按下此高亮字母对应的键可以快速选中对应菜单。
选中子菜单以后按下“Y”键就会将相应的代码编译进 Uboot 中,菜单前面变为“< * >”
按下“N”键不编译相应的代码,按下“M”键就会将相应的代码编译为模块,菜单前面变为“< M >”。
按两下“Esc”键退出,也就是返回到上一级,按下“?”键查看此菜单的帮助信息
按下“/”打开搜索框,可以在搜索框输入要搜索的内容
使能 dns 命令
进入“Command line interface --->”这个配置项
选择“Network commands--->”,进入网络相关命令配置项
选中 dns,然后按下键盘上的“Y”键,此时 dns 前面的“[ ]”变成了“[ * ]”
按下“Y”键表示编译进 uboot 中,此时“[ ]”变成了“[ * ]”;
按下“N”表示不编译,“[ ]”默认表示不编译
些功能模块是支持编译为模块的,这个一般在 Linux 内核里面很常用, uboot 下面不使用,如果要将某个功能编译为模块,那就按下“M”,此时“[ ]”就会变为“< M >”
按两下 ESC 键即可退出提示界面,相当于返回上一层,一直双击就会退出图形化界面
退出会询问是否保存修改。根据自己实际选择即可
使用下面命令编译uuboot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
不要清理工程,会删除掉.config 文件!通过图形化界面配置所有配置项都会被删除
编译完成以后烧写到 SD 卡中,重启开发板进入 uboot 命令模式,输入“?”查看是否有“dns”
命令,一般肯定有的。
要先设置一下 dns 服务器的 IP 地址,也就是设置环境变量 dnsip 的值,命令如下:
setenv dnsip 114.114.114.114
saveenv
使用 dns 命令来查看一下百度官网“www.baidu.com”的 IP 地址
(开发板一定要连接到路由器上,而且要保证你的路由器能访问外网)
dns www.baidu.com
下面学习一下如何添加自己的自定义菜单,自定义菜单要求如下:
①、在主界面中添加一个名为“My test menu”,此菜单内部有一个配置项。
②、配置项为“MY_TESTCONFIG”,此配置项处于菜单“My test menu”中。
③、配置项的为变量类型为 bool,默认值为 y。
④、配置项菜单名字为“This is my test config”。
⑤、配置项的帮助内容为“This is a empty config, just for tset!”。
打开顶层 Kconfig,在最后面加入如下代码:
endmenu # Boot images
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
添加完成之后重新打开图形界面看一下
可以看出,主菜单最后面出现了一个名为“My test menu”的子菜单,这个就是我们上面添加进来的子菜单。进入此子菜单
可以看出,配置项添加成功,选中“This is my test config”配置项
按下“H”看一下帮助文档
可以看出,帮助信息也正确。配置项 MY_TESTCONFIG 默认也是被选中的,
因此在.config 文件中肯定会有“CONFIG_MY_TESTCONFIG=y”这一行
最主要的是记住: Kconfig 文件的最终目的就是在.config 文件中生成以“CONFIG_”开头的变量