迅为i.mx8mm开发板特点:
性能强:i.MX8MM处理器采用了先进的14LPC FinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。
PMIC:采用PCA9450A电源管理,是NXP全新研制配套iMX.8M的电源管理芯片,有六个降压稳压器、五个线性稳压器和一个负载开关,为整个系统的稳定运行提供了更可靠的保证。
接口丰富:千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT、4G模块、CAN、RS485等接口一应俱全。
编解码:H264、VP8视频硬编码,H.264、H.265、VP8、VP9视频硬解码, 并提供相关历程。
支持音频:8路PDM接口、5路SAI接口、2路Speaker。
系统支持:Android9.0、Linux4.14.78 + Qt5.10.1、Yocto、Ubuntu20、Debian9系统。
全新升级《开发板使用手册》
率先提供在Android9系统上移植4G模块方法,并带大家一步步调试;
率先提供如何通过SD卡启动Linux镜像,例如yocto debian ubuntu等文件系统; 教大家如何将驱动编译进内核源码; 根据IMX8MM开发板的原理图总结了引脚信息,方便大家查阅~
售后服务:提供在线技术支持答疑,并协助用户检查原理图,提供详细的硬件设计指导文档等服务。
迅为品质:通过电磁兼容、电磁辐射标准检测、安规检测、高低温环境检测等,确保产品的可靠性。
7*24小时长期稳定运行。10年以上供货周期长,批量无优。
行业应用:适用于智能充电桩、物联网、工业控制、医疗、智能交通等,可用于任何通用工业和物联网应用。
公众号:迅为电子
-----------------------------------------------
第六十八章 u-boot 图形化配置
68.1 uboot 图形化配置初体验
不仅 Linux 内核源码有图形化配置功能,u-boot 也有自己的图形化配置功能,它的目录格式和编译形式
和 Linux 很相似,而且部分源码也是参考的 Linux。
主要依靠 Makefile,.config,Kconfig,Makefile 负责管理整个工程的文件。
.config 负责配置那些功能模块编译进目标文件
Kconfig 负责图形化配置菜单。在图形化界面选中某个功能后
源码顶层目录的.config 会增加此配置选项。
使用 Makefile 编译 u-boot 镜像时会将此功能添加到 u-boot。
U-Boot 使用“make imx8mm_ddr4_evk_defconfig”可以对 uboot 进行一次默认配置,make distclean 后
默认配置就已经清除,需要重新使用“make imx8mm_ddr4_evk_defconfig”再对 uboot 进行配置。
在源码顶层目录执行 make menuconfig 后进入菜单配置界面,通过键盘上的“↑”和“↓”键来选择要
配置的菜单,按下空格可进行选中和取消操作,按“Y”选中,菜单选项前显示“<*>”为选中;使用“N”
取消,菜单选项前显示“< >”;按“M”为将相应的代码编译为模块,菜单前显示“<M>”。按下“Enter”
键进入子菜单。配置界面下方有五个按钮,<Select>为选中并进入,<Exit>为返回上一层或退出,<Help>帮助,
<Save>保存,<Load>加载指定的配置文件。
上一章节我们编译完成后,Makefile会生成我们需要的工程文件,在uboot源码下执行make menuconfig,
会看到如下图所示:
成功打开后如下图所示:
主要的选项含义如下:
Architecture select (ARM architecture) —> 选择处理器架构,包含各种处理器架构子选项。
ARM architecture —> ARM 架构子选项(依赖于上面的 Architecture select)
General setup —> 通用的配置,包含版本号,malloc 池等子选项。
Boot images —> boot 镜像
Command line interface —> 命令行接口,可以添加 uboot 命令和一些功能。
Device Tree Control —> 设备树控制
Networking support —> 网络配置
Device Drivers —> 设备驱动
File systems —> 文件系统
Library routines —> 库程序
选中<Save>保存图形化配置界面,然后就将配置信息写入到了源码根目录的
configs/imx8mm_ddr4_evk_defconfig,然后点击“OK”“Exit”,如下图所示:
然后将选项移动到“Exit”,退出配置界面,配置好便可以编译 uboot 源码了。
68.2 Kconfig 语法简介
Uboot 中的 Kconfig 语法与内核中的 Kconfig 语法类似,所以在学习完驱动的教程以后,我们再来看这个
语法会发现十分的简单,同样,uboot 中的 Kconfig 语法我们也不用特别的去深入研究,我们只要掌握到可
以自行往 uboot 中添加自己的配置即可。那么接下来我们就简单的来学下下 Kconfig 语法。
我们进到 uboot 源码下,打开顶层 Kconfig 文件,
打开完成后如下图所示:
上图中的第一行代码 mainmenu 顾名思义就是主菜单,如下图所示,也就是我们输入完 make menuconfig
以后默认打开的界面,
mainmenu "U-Boot $UBOOTVERSION Configuration"
从 这 句 代 码 中 我 们 可 以 看 出 主 菜 单 的 名 字 为 “ U-Boot $UBOOTVERSION Configuration ” , 其 中
$UBOOTVERSION 为 2018.03,
我们接着往下看这个 Kconfig 文件,我们可以发现有很多 source "xxx/Kconfig"的代码,
source "xxx/Kconfig"的代码的意思是调用其他目录下的 Kconfig 文件,比如 source "arch/Kconfig"就是调
用 arch 目录下的 Kconfig 文件(arch/Kconfig 为相对路径)。
source "xxx/Kconfig"代码下面是以 menu "General setup"开头,以 endmenu 结尾的一大段代码,如下图
所示:
我们可以把这一大段代码称为 menu 到 endmenu 代码块。那么这个代码块的作用是什么呢?其实每一
个代码块代表都是一个子菜单,比如上图中的 menu 到 endmenu 代码块,代表的是 General setup 子菜单。
也就是 make menuconfig 中的 General setup。
看到这里我们其实就已经可以发现 make menuconfig 的架构形式了,make menuconfig 中的每一级界面
都是有一个 Kconfig 描述的,上一级的 Kconfig 又会包含下一节的 Kconfig,这样一级一级的组织起来。
然后我们来看 menu 到 endmenu 代码块里面的 config 代码,
在一个 menu 到 endmenu 代码块里面有很多 config 条目,我们就以上图中的给大家举例子,刚才我们
说了,menu 到 endmenu 代码块就是子菜单,所以 menu 到 endmenu 代码块里面的 config 条目就是子菜单
中的配置选项。make menuconfig 中的体现如下图所示:
config 条目中的 config LOCALVERSION 对应子菜单中的 Local version - append to U-Boot release,第二个依
次类推。注意:如果配置选项不描述是看不到的,比如 menu 到 endmenu 代码块中的 BROKEN,那么我们要
怎么描述呢,比如我们在 BROKEN 下面写上 string “test”(string 表示类型是 string),
然后我们打开 make menuconfig 界面,进到 General setup 子菜单,我们就可以看到 BROKEN 选项了,
config 条目中的 config LOCALVERSION 后面跟着的 LOCALVERSION 对应的就是 u-boot 目录下的.config 文
件中的 CONFIG_LOCALVERSION,由此我们可知,每一个 menu 到 endmenu 代码块中的 config 条目,在.config 中都会有一个一个对应的
选项,对应关系为 config 条目中的 config XXXX 后面跟着的 XXXX 对应.config 文件中的 CONFIG_XXXX(其中
XXXX 就是配置文件的名字,也就是例子中的 LOCALVERSION)
menu 到 endmenu 代码块中的 config 条目除了以上内容,还有一些其他的属性,比如 string 代表的就是
变量类型,
变量类型可以为上图中的 boot 或者 string,也可以为 tristate 或者 hex 和 int。其中 boot 类型俩的值有
俩种,也就是 y 和 n,也就是说,如果我们使用了这个类型,在 make menuconfig 对应的选项中我们可以选
择 y 和 n,tristate 的值类型有三种,分别是 y,n,m。如果我们使用了这个类型,在 make menuconfig 对应
的选项中我们可以选择 y 和 n 还有 m,
S
tring 就是字符串类型,如果我们使用了这个类型,在 make menuconfig
对应的选项中我们可以输入字符串,我们最常用的就是 boot 和 sting。
最后,menu 到 endmenu 代码块中的 config 条目的 help 代码的就是帮助信息,
我们在 make menuconfig 中使用?弹出来的就是这个信息,
在 Kconfig 文件中,我们看到以下代码:
其中的 depends on 说明 FIT_SIGNATURE 要依赖于 DM,换句话说,也就是 DM 选中后 FIT_SIGNATURE 才
可以选中,select 表示反向依赖,当 FIT_SIGNATURE 被选中以后,RSA 和 CONSOLE_DISABLE_CLI 也会被选中。
除了 depends on 和 select,在 Kconfig 文件中我们也可以看到 menuconfig,
的 menuconfig 是一个带菜单的选项,其结构为以 menuconfig 开头,以 endif 结尾。上图中我们定
义了一个菜单 EXPERT,也就是说,只有我们选中了 EXPERT,if EXPERT 到 endif 的内容才可以显示。
在 make menuconfig 中的体现
还有一个比较多见的就是注释了,但是此注释非彼注释,Kconfig 里面 comment 用于注释,但是这个注
释并不是把某一行代码注释的意思,而是在图形化界面中显示一行注释,比如我们在 u-boot 文件夹下的顶
层 Kconfig 中 config LOCALVERSION 条目下添加以下代码
comment“test
在 make menuconfig 的表现如下:
68.3 自定义菜单
上一小节,我们了解了 uboot 中的 Kconfig 文件,那么这一小节我们就来实战一下,我们在 make
menuconfig 中自定义一个自己选项。
1.在 u-boot 目录下创建一个名为 toppet 的文件夹,
2.打开 u-boot 下的 Kconfig 文件,在里面加入一下代码
source "topeet/Kconfig"
3.然后进到我们在 u-boot 下创建的 topeet 文件夹,并在此文件下创建一个 Kconfig 文件,
4.我们打开创建好的这个 Kconfig 文件,在里面填入一下代码:
menu "test menu"
config TEST_CONFIG
bool "test"
default y
help
just test
comment "just test"
Endmenu
在上面的代码中,我们在主菜单中添加了一个名为 test menu 的子菜单,然后在这个子菜单里面我们添
加了一个名为 TEST_CONFIG 的配置项,这个配置项变量类型为 bool,默认配置为 Y,帮助信息为 just test,
注释为 just test。
添加完成以后在图形化配置界面表现如下:
在主菜单中添加的子菜单
子菜单中的配置项,默认为 y,注释信息为 just test。
在此界面输入?,显示帮助信息为 just test,
然后我们打开 u-boot 下的.config 文件,
我们可以在这个.config 文件中找到我们添加的 TEST_CONFIG(注意,我们需要在 make menuconfig 中保
存才可以看到,否则是看不到我们添加的这个选项的)
标签:代码,菜单,Kconfig,make,menuconfig,嵌入式,Linux,config,图形化 From: https://www.cnblogs.com/topeet/p/18407922