迅为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”为将相应的代码编译为模块,菜单前显示“”。按下“Enter” 键进入子菜单。配置界面下方有五个按钮,为选中并进入,为返回上一层或退出,帮助, 保存,加载指定的配置文件。 上一章节我们编译完成后,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 —》 库程序 选中保存图形化配置界面,然后就将配置信息写入到了源码根目录的 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,String 就是字符串类型,如果我们使用了这个类型,在 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 testcomment “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 中保 存才可以看到,否则是看不到我们添加的这个选项的)
全部0条评论
快来发表一下你的评论吧 !