0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【北京迅为】i.mx8mm嵌入式linux开发指南第四篇 嵌入式Linux系统移植篇第六十八章u-boot图形化配置

北京迅为电子 2024-09-11 11:32 次阅读

迅为i.mx8mm开发板特点:

性能强:i.MX8MM处理器采用了先进的14LPC FinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。

PMIC:采用PCA9450A电源管理,是NXP全新研制配套iMX.8M的电源管理芯片,有六个降压稳压器、五个线性稳压器和一个负载开关,为整个系统的稳定运行提供了更可靠的保证。

接口丰富:千兆工业以太网、MIPI-DSIUSB HOST、WIFI/BT、4G模块CANRS485等接口一应俱全。

编解码: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年以上供货周期长,批量无优。

行业应用:适用于智能充电桩物联网工业控制、医疗、智能交通等,可用于任何通用工业和物联网应用。

wKgaombhDhyAfgi_AAREMVJfRF8006.png

公众号:迅为电子

-----------------------------------------------

第六十八章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 中保 存才可以看到,否则是看不到我们添加的这个选项的)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5063

    文章

    18992

    浏览量

    302568
  • Linux系统
    +关注

    关注

    4

    文章

    590

    浏览量

    27330
  • u-boot
    +关注

    关注

    0

    文章

    120

    浏览量

    38190
收藏 人收藏

    评论

    相关推荐

    嵌入式 Linux 操作系统配置

    随着物联网(IoT)和智能设备的快速发展,嵌入式系统在各个领域扮演着越来越重要的角色。Linux因其开源、灵活和稳定的特性,成为嵌入式系统
    的头像 发表于 11-06 10:22 183次阅读

    北京】itop-龙芯2k1000开发指南Linux基础入门vim 编辑器

    北京】itop-龙芯2k1000开发指南Linux基础入门vim 编辑器
    的头像 发表于 10-25 14:56 237次阅读
    【<b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>为</b>】itop-龙芯2k1000<b class='flag-5'>开发指南</b><b class='flag-5'>Linux</b>基础入门vim 编辑器

    北京i.mx8mm嵌入式linux开发指南第四篇 嵌入式Linux系统移植第六十九章uboot移植

    北京i.mx8mm嵌入式linux开发指南
    的头像 发表于 10-22 14:46 492次阅读
    【<b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>为</b>】<b class='flag-5'>i.mx8mm</b><b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b><b class='flag-5'>开发指南</b><b class='flag-5'>第四篇</b> <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>系统</b><b class='flag-5'>移植</b><b class='flag-5'>篇</b><b class='flag-5'>第六十</b>九章uboot<b class='flag-5'>移植</b>

    北京RK3568开发嵌入式学习之Linux驱动全新更新-CAN+

    北京RK3568开发嵌入式学习之Linux驱动全新更新-CAN+
    的头像 发表于 09-04 15:29 386次阅读
    <b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>为</b>RK3568<b class='flag-5'>开发</b>板<b class='flag-5'>嵌入式</b>学习之<b class='flag-5'>Linux</b>驱动全新更新-CAN+

    北京】《stm32mp157开发嵌入式linux开发指南》第五章 Ubuntu使用apt-get下载

    北京】《stm32mp157开发嵌入式linux开发
    的头像 发表于 09-03 16:26 684次阅读
    【<b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>为</b>】《stm32mp157<b class='flag-5'>开发</b>板<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b><b class='flag-5'>开发指南</b>》第五章 Ubuntu使用apt-get下载

    七大嵌入式GUI盘点

    嵌入式图形用户界面(GUI)是一种嵌入式系统设计的用户界面,它可以让用户通过图形化的方式与设备
    发表于 09-02 10:58

    嵌入式linux开发的基本步骤有哪些?

    嵌入式Linux开发是一个复杂的过程,涉及到硬件选择、操作系统移植、驱动开发、应用程序
    的头像 发表于 09-02 09:11 366次阅读

    嵌入式linux开发板怎么操作

    开发板概述 嵌入式Linux开发板是一种专门嵌入式系统开发
    的头像 发表于 09-02 09:09 310次阅读

    嵌入式linux开发板芯片的工作原理

    嵌入式Linux开发板是一种基于Linux操作系统嵌入式
    的头像 发表于 09-02 09:07 315次阅读

    北京】《i.MX8MM嵌入式Linux开发指南》-第四篇 嵌入式Linux系统移植-第六十七章 Uboot编译及移植

    i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;核Cortex-A53,单核Cortex-M4,多达五个内核,主频高达1.8GHz,2GDDR4内存
    的头像 发表于 08-07 15:08 521次阅读
    【<b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>为</b>】《<b class='flag-5'>i.MX8MM</b><b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>开发指南</b>》-<b class='flag-5'>第四篇</b> <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>系统</b><b class='flag-5'>移植</b><b class='flag-5'>篇</b>-<b class='flag-5'>第六十</b>七章 Uboot编译及<b class='flag-5'>移植</b>

    【出版发行】嵌入式系统原理与开发——基于RISC-V和Linux系统

    【出版发行】嵌入式系统原理与开发——基于RISC-V和Linux系统
    的头像 发表于 07-26 08:36 253次阅读
    【出版发行】<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>原理与<b class='flag-5'>开发</b>——基于RISC-V和<b class='flag-5'>Linux</b><b class='flag-5'>系统</b>

    专家力荐|《嵌入式系统原理与开发——基于RISC-V和Linux系统》新书发售

    当前,嵌入式系统已成为智能设备的核心之一,RISC-V+Linux的开源力量嵌入式系统注入强大
    的头像 发表于 07-24 08:20 506次阅读
    专家力荐|《<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>原理与<b class='flag-5'>开发</b>——基于RISC-V和<b class='flag-5'>Linux</b><b class='flag-5'>系统</b>》新书发售

    嵌入式人工智能的就业方向有哪些?

    网络编程开发及实战下 数据库开发 Linux应用开发综合实战 三:嵌入式Linux
    发表于 02-26 10:17

    嵌入式软件开发应该掌握哪些知识?

    两个部分组成,其中嵌入式软件是指在嵌入式系统中运行的程序,用于控制硬件并提供特定的功能和服务。嵌入式软件应用广泛,包括汽车、医疗设备、智能家居、智能穿戴、工业自动
    发表于 02-19 11:23

    嵌入式Linux开发的三种方式

    嵌入式Linux开发主要有三种方式:裸机开发、SDK开发和驱动开发
    的头像 发表于 01-22 14:22 915次阅读