23.1.29 make menuconfig执行过程

news2024/11/18 1:42:32

1、将uboot源码拷贝ubuntu中

1.在家目录创建一 -个demo文件夹

2.将en. SOURCES - stm32mp1- openstlinux-5.10- dunfell- mp1-21- 11-17_ tar_ v3.1.0. xz文件夹拷贝到~/ demo文件夹下面

3.进入~/demo目录下,对en . SOURCES- stm32mp1 - openstlinux-5. 10- dunfell-mp1- 21 -11-17_ tar_ v3.1.0.xz解压

4.在家目录创建一 个FSMP1A文件夹

5.将uboot源码拷贝到FSMP1A目录下

cp u-boot- stm32mp- v2020.10- stm32mp-r2-r0/ ~/FSMP1A/ -rf

2、分析uboot源码

1.进入/home/linux/FSMP1A/u- boot - stm32mp-v2020.10- stm32mp-r2-r0目录下,对uboot源码进行解压

tar -vxf u- boot-stm32mp-v2020.10- stm32mp-r2-r0. tar.gz

2.进入uboot源码目录下

cd u- boot-stm32mp-v2020.10- stm32mp-r2/

3.分析uboot源码目录

1>平台相关代码

arch:存放平台架构相关的文件

board :存放板子相关的文件

2>平台无关代码

Makefile:工程管理文件

include :存放板子相关的头文件信息

drivers :存放就是各个驱动相关文件

dts:设备树相关文件

Kconfig:配置相关文件

1>基于图形化界面配置信息----- >make menuconfig

menuconfig    一使用基于菜单的程序更新当前配置  

2>编译uboot源码命令----->make all

all    一根据配置构建所有必需的映像

通过以上内容分析可知,对于不同的板子默认的配置命令: make <board_ name>_ defconfig

3、如何确定<board_ name>名字!

一、方式1:如何确定<board_name>?

    1.在uboot源码顶层目录下执行:make fsmp1a_defconfig

    2.出现如下错误信息:

        ***

        *** Can't find default configuration "arch/../configs/fsmp1a_defconfig"!

        ***

        make[1]: *** [scripts/kconfig/Makefile:110:fsmp1a_defconfig] 错误 1

        make: *** [Makefile:565:fsmp1a_defconfig] 错误 2

     3.通过分析错误打印信息,可知<<board_name>配置信息路径

         路径:arch/../configs/*_defconfig

     4.进入到uboot源码顶层目录下arch/../configs/目录下,查看stm32mp15系列相关配置文件

     5.通过查看目录下文件过滤可知:

         stm32mp15_basic_defconfig: 非安全版本默认缺省配置文件

         stm32mp15_trusted_defconfig:安全版本默认缺省配置文件   

            

二、方式2:因为make make <board_name>_defconfig,使用make进行编译的,一定通过Makefile文件进行管理         

      1.在uboot源码顶层目录,打开Makefile文件,搜索:config,查找到如下打印信息

            564 %config: scripts_basic outputmakefile FORCE                                                                  

            565     $(Q)$(MAKE) $(build)=scripts/kconfig $@

      2.打开uboot源码顶层目录Makefile文件,使用echo打印每个变量的信息

             564 %config: scripts_basic outputmakefile FORCE

             565     @echo $(Q)

             566     @echo $(MAKE)

             567     @echo $(build)

             568     @echo $@

             569     $(Q)$(MAKE) $(build)=scripts/kconfig $@

     3.在uboot源码顶层目录下,执行make fsmp1a_defconfig,会打印相应的变量信息

        @

        make

        -f ./scripts/Makefile.build obj

        fsmp1a_defconfig

        

       Can't find default configuration "arch/../configs/fsmp1a_defconfig"!

三、方式3:通过方式2分析可知$(Q)就是@符,@会取消回显,所以在Makefile文档中,将$(Q)变量去掉

     1.在uboot源码顶层目录,打开Makefile文件,搜索:config,去掉$(Q)

            564 %config: scripts_basic outputmakefile FORCE

            565     @echo $(Q)

            566     @echo $(MAKE)

            567     @echo $(build)

            568     @echo $@                                                                                                 

            569     $(MAKE) $(build)=scripts/kconfig $@

    2.在uboot源码顶层目录下,执行make fsmp1a_defconfig,会打印相应的变量信息

        make -f ./scripts/Makefile.build obj=scripts/kconfig fsmp1a_defconfig = make obj=scripts/kconfig fsmp1a_defconfig

    3.在uboot源码顶层目录下,进入scripts/kconfig目录,打开Makefile文件,搜索defconfig

            109 %_defconfig: $(obj)/conf                                                                                      

            110     $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)

    4.在uboot源码顶层目录下,进入scripts/kconfig目录,打开Makefile文件,使用echo打印变量信息

        109 %_defconfig: $(obj)/conf

        110     @echo $<

        111     @echo $(silent)

        112     @echo $(SRCARCH)

        113     @echo $@

        114     @echo $(Kconfig)                                                                                          

        115     $< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)

    5.在uboot源码顶层目录下,执行make fsmp1a_defconfig,会打印相应的变量信息

            scripts/kconfig/conf

        

        ..

        fsmp1a_defconfig

        Kconfig

        scripts/kconfig/conf  --defconfig=arch/../configs/fsmp1a_defconfig Kconfig

    6.通过以上分析可知,make <board_name>_defconfig执行的完成语句内容:

    scripts/kconfig/conf  --defconfig=arch/../configs/fsmp1a_defconfig Kconfig

      分析:

      scripts/kconfig/conf:通过file命令进行查看,可知conf文件是一个elf可执行文件

      --defconfig=arch/../configs/fsmp1a_defconfig:板子的默认的缺省配置文件

      Kconfig:uboot源码顶层目录下的配置文件

      整体分析:conf作为可执行参数,板子的默认的缺省配置文件和uboot源码顶层目录下的配置文件传递给conf            

    任务:自己分析scripts/kconfig/Makefile文件?

        目的:make <board_name>_defconfig执行过程?        

 

 二、uboot源码配置编译步骤

1.进入~/FSMP1A/uboot源码目录下

    cd /home/linux/FSMP1A/u-boot-stm32mp-v2020.10-stm32mp-r2-r0/u-boot-stm32mp-v2020.10-stm32mp-r2

2.配置交叉编译工具链,打开uboot源码顶层目录下Makefile文件,搜索:CROSS_COMPILE

    将以下内容:

        262 ifeq ($(HOSTARCH),$(ARCH)) 

        263 CROSS_COMPILE ?=   

    更改为:

        262 ifeq (arm,arm) 

        263 CROSS_COMPILE ?=arm-linux-gnueabihf-

3.在uboot源码顶层目录下,执行默认配置板子的缺省配置文件,为非安全版本配置

    make  stm32mp15_basic_defconfig

    成功现象:

        # 

        # configuration written to .config 

        # 

4.在uboot源码顶层目录下,执行make menuconfig,这个地方不需要修改

5.设备树相关内容

    dts ---------------->设备树源文件,相当于C语言中的.c文件

    dtsi ---------------->设备树头文件,相当于C语言中的.h文件

    DTC  ---------------->设备树编译工具,相当于C语言中的gcc编译器 make dtbs

    dtb ---------------->设备树下载文件,相当于C语言中的a.out文件

    设备树语法格式:

        /{

            {

               设备树节点信息             

            };                    

        };

6.由于FSMP1A开发板是参考DK1公板进行设计的,所以需要复制DK1公板相关设备树内容

    1)进入设备树目录:uboot源码顶层目录下uboot源码目录下/arch/arm/dts,查找到DK1公板设备树文件

        stm32mp157a-dk1.dts

        stm32mp157a-dk1-u-boot.dtsi

        stm32mp15xx-dkx.dtsi

    2)进入uboot源码目录下/arch/arm/dts,将DK1公板相关设备树内容,复制成FSMP1A文件

        cp stm32mp157a-dk1.dts stm32mp157a-fsmp1a.dts  

        cp stm32mp157a-dk1-u-boot.dtsi stm32mp157a-fsmp1a-u-boot.dtsi

        cp stm32mp15xx-dkx.dtsi stm32mp15xx-fsmp1x.dtsi

   3)更改FSMP1A设备树相关内容

       将如下内容:

         12 #include "stm32mp15xx-dkx.dtsi"                                                                                

         13

         14 / { 

         15     model = "STMicroelectronics STM32MP157A-DK1 Discovery Board"; 

         16     compatible = "st,stm32mp157a-dk1", "st,stm32mp157"; 

       更改为:

        12 #include "stm32mp15xx-fsmp1x.dtsi" 

        13

        14 / { 

        15     model = "HQYJ STM32MP157A-FSMP1A Discovery Board"; 

        16     compatible = "hqyj,stm32mp157a-fsmp1a", "hqyj,stm32mp157";    

     4) 将FSMP1A开发板相关设备树文件,编译到uboot镜像文件中,打 uboot源码目录下/arch/arm/dts目录下的Makefile文件  

        945 dtb-$(CONFIG_STM32MP15x) += \

        946     stm32mp157a-dk1.dtb \

        947     stm32mp157a-fsmp1a.dtb \   -------> 这一行为需要添加内容

7.进入uboot源码顶层目录下,编译uboot源码

    time make -j4 all      

8.成功现象:

    u-boot-spl.stm32

    u-boot.img                     

 confi

defconfig 寻找board_name  找到Makefile的位置然后删除回显

make menuconfig界面化处理配置,把开发名字作出更改以及重新运行

make  all   执行镜像文件查看是否配置成功

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/184158.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第02天-Java数据结构和算法

目录 021_单链表新浪面试题 单链表面试题&#xff08;新浪、百度、腾讯&#xff09; 代码实现 022_单链表腾讯面试题 图解 代码实现 023_单链表百度面试题 图解 代码实现 024_双向链表增删改查分析图解 双向链表应用实例 图解 代码实现 026_双向链表功能测试和小结 …

10个方法教你解决虚幻4运行崩溃问题

“多年来我一直在我的电脑上使用不同版本的虚幻引擎 4&#xff0c;但最近它突然在启动时崩溃。我最初认为这是一个项目相关的问题&#xff0c;但后来注意到即使是从桌面图标或 Epic Games Launcher执行Unreal Engine 4&#xff0c;也是闪了几秒就直接闪退了。这个问题真是让我很…

Nginx从入门到精通(从安装到实践,持续更新中)

一&#xff0c;安装从官网下载相应的tar包http://nginx.org/通过命令tar zxvf tar包名 -c 解压路径 解压到指定的目录下在解压的nginx包下有一个confuture文件&#xff0c;可通过./confuture判断是否符合安装条件&#xff08;./configure --prefix/usr/local/nginx即可指定一会…

H3CMSR 系列路由器限速配置

1 配置需求或说明 1.1 适用产品系列 本手册适用于如下产品&#xff1a;MSR 全系列路由器 1.2 配置需求及实现的效果 MSR路由器G0/0接口连接公网&#xff0c;G0/1接口连接内网&#xff0c;内网网关地址为MSR路由器VLAN1虚接口地址192.168.1.1/24&#xff0c;需要实现对内网I…

1605_Git版本管理概念图解_git_for_computer_scientists阅读

全部学习汇总&#xff1a; GitHub - GreyZhang/g_unix: some basic learning about unix operating system. 目前没有很好的笔记分类放置这一份学习笔记&#xff0c;因为我的工具箱分类并不适合它。我之前的工具箱笔记主要还是简洁扼要来列出工具使用的参考&#xff0c;而这个其…

超导量子计算机

1.超导量子计算机发展状况 2018年3月5日美国物理学会年会上&#xff0c;谷歌展示了其正在测试的72量子位超导量子芯片Bristlecone。谷歌物理学家朱利安凯利表示&#xff0c;研讨团队希望初次运用更大的量子芯片来展现霸权&#xff0c;并完成传统计算机不能够完成的计算。芯片之…

React学习教程

React学习教程git地址React基础知识点1.什么是React &#xff08;★★★&#xff09;特点2.React脚手架2.1 使用React脚手架初始化项目2.2 项目目录说明调整JSX基础1. JSX介绍2. JSX中使用js表达式3. JSX列表渲染4. JSX条件渲染5. JSX样式处理6. JSX注意事项React组件1.React组…

监控系统的基本架构(Metric monitoring)

前言 最近准备做一个监控系统&#xff0c;正好看到了这篇文章&#xff0c;这篇文章很简单&#xff0c;但很清晰&#xff0c;结合原文的图片&#xff0c;我进行一下翻译。 原文地址 ByteByteGo 原文 A well-designed metric monitoring and alerting system plays a key rol…

YoLoV1~YoLoV3 SPP

截止到今日&#xff0c;差不多对深度学习有了一定了解了&#xff0c;从图像分类的各种神经网络再到YOLO系列的目标检测&#xff0c;一步一步的逐渐实现相应功能&#xff0c;但对于一些具体的代码细节、部分理论&#xff0c;后期可能还需要加强学习和理解。但是转眼也快开学了&a…

IB 课程的挑战 (一)

近年来许多学校都引入 IB 课程 (国际预科文凭课程)&#xff0c;让家长在为子女安排升学路途上能有更多的选择。然而&#xff0c;学生在修读IB课程时会遇到什么挑战呢?以下我们就会为大家分享几个有关IB课程的挑战&#xff0c;让各位家长得以参考。 挑战一&#xff1a;时间分配…

ConstraintLayout 使用详解,减少嵌套 UI, 提升性能

前言 对于初学者来说&#xff0c;可能觉得ConstraintLayout属性多&#xff0c;且属性长而弃用它&#xff0c;那你错失了这个大宝贝。 因为在复杂布局&#xff0c;我们会一直用RelativeLayout和LinearLayout去嵌套&#xff0c;因为嵌套的ViewGroup会导致手机多次测量和绘制&am…

解剖华为 Mate 50 Pro主板

华为Mate 50 Pro整体拆解难度中等&#xff0c;可还原性强。主板则是采用堆叠结构&#xff0c;主板1正面主要IC包括高通骁龙84G处理器芯片…… 日前&#xff0c;有拆解机构对华为Mate 50 Pro整机进行了拆解&#xff0c;表示其内部的配件大约有90%是国产元器件&#xff0c;如屏幕…

【Node.js实战】一文带你开发博客项目之Express重构(初始化环境,处理 session,连接 redis)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;秋招&#xff09; &#x1f680;未…

循环UI列表

先看一下效果 支持自定义选项数量,按钮切换,鼠标滑动切换,当前项框选提示,选项缩放等功能 SlideSwitch&#xff1a;鼠标切换选项开关,关闭只能点击按钮切换 SlideOffset&#xff1a;滑动触发值,鼠标X轴向滑动大于此值切换选项,小于不触发 ScaleSwitch&#xff1a;缩放开关,开启…

乘法逆元 +数论分块 +平方和公式

年后准备学习啦&#xff0c;开学还得准备考试。 乘法逆元&#xff1a; 因为涉及到除法&#xff0c;所以取余这个操作就错误。 所以如果我们要求&#xff08;a/b)%mod&#xff0c;我们可以假设 (a/b)%mod a*c%mod 那么c就是b的逆元。 怎么求逆元呢&#xff0c;其实有很多方法…

指定加拿大UBC|临床肿瘤专业应届博士成功获访问学者offer

G博士指定加拿大UBC&#xff0c;本人具有多年的临床工作经验&#xff0c;但科研产出较少。经过努力&#xff0c;最终我们落实了该校的访问学者职位。又历经半年的流程&#xff0c;G博士终于获得加拿大签证&#xff0c;前往UBC报到。建议&#xff1a;提前申请&#xff0c;预留出…

蓝桥杯刷题-入门题(终章一)

你是如风的少年~&#x1f603; 空 清新民谣版 - 汪小敏 - 单曲 - 网易云音乐 自在的少年 - 要不要买菜 - 单曲 - 网易云音乐 最后15道入门题&#xff0c;做完这15道&#xff0c;NEWOJ就91道题AC了 目录 一&#xff0c;数根 二&#xff0c;最大值和最小值&#xff08;I&…

Qt扫盲-QTime理论总结

QTime理论总结一、概述二、使用1. 属性获取2. 时间加减3. 字符串与QTime互转一、概述 QTime对象包含一个时钟时间&#xff0c;可以用小时数、分钟数、秒数和毫秒数来表示。它提供了比较时间和通过添加毫秒数来操作时间的函数。 QTime使用24小时时钟格式&#xff1b;它没有AM/…

bigemap如何设置等高线坐标系并输出

如何设置等高线坐标系并输出发布时间&#xff1a;2018-01-17 版权&#xff1a;投影设置及数据导出矢量等高线生成完成后&#xff08;详细生成过程参加上一章节&#xff1a;矢量等高线生成&#xff09;,我们就能够设置投影和导出等高线数据。投影设置我们生成等高线默认的坐标是…

大数据集群环境搭建

文章目录本文要点内容大纲一、大数据集群环境搭建1.1、分布式、集群概念初识1.2、集群环境搭建1.2.1、虚拟机克隆1.2.2、修改IP、主机名1.2.3、主机名和IP映射配置1.2.4、防火墙关闭1.2.5、集群机器间免密登录1.2.6、跨机器远程copy文件1.2.7、集群的时间同步问题二、Centos软件…