正点原子[第三期]Arm(iMX6U)Linux系统移植和根文件系统构建-5.3 xxx_defconfig过程

前言:

本文是根据哔哩哔哩网站上“arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。

引用:

正点原子IMX6U仓库 (GuangzhouXingyi) - Gitee.com

《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.2.pdf》

正点原子资料下载中心 — 正点原子资料下载中心 1.0.0 文档

正点原子imx6ull-mini-Linux驱动之Linux I2C 驱动实验(21)-CSDN博客

正文:

本文是 “Arm(iMX6U)Linux系统移植和根文件系统构键篇--5.3讲u-boot顶层Makefile里 xxx_defconfig的执行过程分析实验。本节将参考正点原子的视频教程和配套的正点原子开发指南文档进行学习。

0. 概述

1.U-boot顶层Makefile里 xxx_defconfig的执行过程

1.1 u-boot编译步骤

编译u-boot时三个步骤

make ARCH=arm distclean

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-  xxx_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j 8

第一条命令 'make distclean' 清理所有的上一次编译生成中间文件,把项目目录清理干净。

第二条命令 'make xxx_defconfig' ,针对开发板硬件型号进行配置,例如,配置指令集,配置cpu型号,配置开发板,配置开发板外围硬件等,最后在 u-boot目录下生成 '.config' 配置文件。

第三条命令‘make -j 8' 指定使用多个8线程编译出uboot,这一步编译u-boot的时引用上面生成的 ".config" 配置文件,根据配置来编译源码。

正点原子的本视频小节,通过 u-boot/ 目录下的顶层Makefile文件

u-boot/Makefile

来分析编译时的第二条命令生成配置文件 'xxx_deconfig' 的执行过程。 

make xxx_defconfig

 1.2 u-boot 顶层Makefile执行 xxx_deconfig 过程

在u-boot顶层Makefile(u-boot/Makefile,以下提到uboot顶层Makefile都是指这一个文件)中有如下的 Target,使用makefile语法中的通配符 "%","%config" 目标匹配所有的 ’make xxxconfig' 的make命令。

%config: 

使用Makefile语法中的通配符 "%", "%config"匹配了所有的 "xxxconfig"的make编译目标,当然我们执行的 'make xxx_defconfig‘ 编译目标也匹配 uboot顶层Makefile中的这一个目标target,执行uboot顶层makefile里的依赖关系和编译命令。

config: scripts_basic outputmakefile FORCE$(Q)$(MAKE) $(build)=scripts/kconfig $@%config: scripts_basic outputmakefile FORCE$(Q)$(MAKE) $(build)=scripts/kconfig $@

从uboot顶层Makefile看到,执行 "xxx_defconfig"命令时,"xxx_defconfig"目标依赖于两个前置依赖,”scripts_basic"和"outputmakefile"。(FORCE是makefile的一个惯常的使用方法,使用FORCE表明依赖于FORCE的目标在makef中总是执行。)

config: scripts_basic outputmakefile FORCE

 接下来分析一下 ”scripts_basic"和"outputmakefile" 在 uboot顶层makefile的执行过程,

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣热题 100:哈希专题三道题详细解析(JAVA)

文章目录 一、两数之和1. 题目描述2. 示例3. 解题思路4. 代码实现(Java)5. 复杂度分析 二、字母异位词分组1. 题目描述2. 示例3. 解题思路4. 代码实现(Java)5. 复杂度分析 三、最长连续序列1. 题目描述2. 示例3. 解题思路4. 代码实…

嵌入式八股文(五)硬件电路篇

一、名词概念 1. 整流和逆变 (1)整流:整流是将交流电(AC)转变为直流电(DC)。常见的整流电路包括单向整流(二极管)、桥式整流等。 半波整流:只使用交流电的正…

AI2-THOR环境下实现机器人导航、物体定位与抓取

1. 依赖安装 pip install ai2thor pip install numpy pillow opencv-python2. 验证安装 # 运行测试脚本验证安装 test_thor.py from ai2thor.controller import Controller controller Controller(scene"FloorPlan1") controller.step(action"MoveAhead"…

Nginx(详解以及如何使用)

目录 1. 什么是Nginx? 2. 为什么使用nginx? 3. 安装nginx 3.1?安装nginx的依赖插件 3.2 下载nginx ?3.3?创建一个目录作为nginx的安装路径 ?3.4?解压 ?3.5?进入解压后的目录 3.6?指定nginx的安装路径 ?3.7?编译和安装nginx 3.8 启动nginx ?…

【自动化脚本工具】Hammerspoon (Mac)

目录 1. 介绍Hammerspoon 1. 介绍Hammerspoon This is a tool for powerful automation of OS X. At its core, Hammerspoon is just a bridge between the operating system and a Lua scripting engine. What gives Hammerspoon its power is a set of extensions that expo…

2025 PHP授权系统网站源码

2025 PHP授权系统网站源码 安装教程: PHP7.0以上 先上传源码到服务器,然后再配置伪静态, 访问域名根据操作完成安装, 然后配置伪静态规则。 Ngix伪静态规则: location / { if (!-e $request_filename) { rewrite …

Javascript网页设计案例:通过PDFLib实现一款PDF分割工具,分割方式自定义-完整源代码,开箱即用

功能预览 一、工具简介 PDF 分割工具支持以下核心功能: 拖放或上传 PDF 文件:用户可以通过拖放或点击上传 PDF 文件。两种分割模式: 指定范围:用户可以指定起始页和结束页,提取特定范围的内容。固定间距:用户可以设置间隔页数(例如每 5 页分割一次),工具会自动完成分…

基于SpringBoot的民宿管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

调用click.getchar()时Windows PyCharm无法模拟键盘输入

文章目录 问题描述解决方案参考文献 问题描述 调用 click.getchar() 时,Windows PyCharm 无法模拟键盘输入 解决方案 Run → Edit Configurations… → Modify options → Emulate terminal in output console 参考文献 Terminal emulator | PyCharm Documentati…

hugging face---transformers包

一、前言 不同于计算机视觉的百花齐放,不同网络适用不同情况,NLP则由Transformer一统天下。transformer是2017年提出的一种基于自注意力机制的神经网络架构,transformers库是hugging face社区创造的一个py库,通过该库可以实现统一…

AI大模型学习(四): LangChain(三)

Langchain构建代理 语言模型本身无法执行动作,他们只能输出文本,代理是使用大型语言模型(LLM)作为推理引擎来确定要执行的操作以及这些操作的输入应该是什么,然后这些操作的结果可以反馈到代理中,代理将决定是否需要更多的操作,或者是否可以结束 例如:我们想要查询现在北京的…

企业知识管理平台重构数字时代知识体系与智能服务网络

内容概要 现代企业知识管理平台的演进呈现出全生命周期管理与智能服务网络构建的双重特征。通过四库体系(知识采集库、加工库、应用库、评估库)的协同运作,该系统实现了从知识沉淀、结构化处理到价值释放的完整闭环。其中,知识图…

(二)趣学设计模式 之 工厂方法模式!

目录 一、 啥是工厂方法模式?二、 为什么要用工厂方法模式?三、 工厂方法模式怎么实现?四、 工厂方法模式的应用场景五、 工厂方法模式的优点和缺点六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博…

详细介绍嵌入式硬件设计

嵌入式硬件设计详解 一、嵌入式硬件设计核心概念 嵌入式硬件设计是针对特定应用场景,将处理器、存储器、外设接口等电子元件集成到电路板上,实现特定功能的系统开发过程。其核心目标是 高可靠性、低功耗、小体积 和 成本优化。 二、设计流程与关键步骤 …

goredis常见基础命令

基本操作 //删除键 exists,err: rdb.Exists(ctx,"key").Result() if err!nil{panic(err) } if exists>0{err rdb.Del(ctx,"key").Err()if err!nil{panic(err)} }string类型 //设置一个键值对 //0表示没有过期时间 err:rdb.Set(ctx,"key1",…

微服务环境搭建架构介绍(附超清图解源代码)

微服务介绍 系统架构演变 随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。 从互联网早起到现在,系统架构大体经历了下面几个过程: 单体应用架构--->垂直应用架构--->分布 式架构--->SOA架构…

Java-01-源码篇-04集合-05-ConcurrentHashMap(1)

1.1 加载因子 加载因子(Load Factor)是用来决定什么时候需要扩容的一个参数。具体来说,加载因子 当前元素数量 / 桶的数量,当某个桶的元素个数超过了 桶的数量 加载因子 时,就会触发扩容。 我们都知道 ConcurrentHas…

一文详解U盘启动Legacy/UEFI方式以及GPT/MBR关系

对于装系统的老手而说一直想研究一下装系统的原理,以及面对一些问题时的解决思路,故对以前的方法进行原理上的解释,主要想理解其底层原理。 引导模式 MBR分区可以同时支持UEFI和Legacy引导,我们可以看一下微pe制作的启动盘&#…

【多线程-第三天-NSOperation的练习-tableView异步下载网络图片-下载操作缓存池 Objective-C语言】

一、下载操作缓存池 1.下面我们来看操作缓存池,我们先演示一下问题,看看为什么要加这么一个操作缓存池,什么是操作缓存池,不用管呢,我们先来看啊,首先有什么问题, 看这个问题之前,我这儿写一个touch,点击屏幕的时候调用, 额,不能点击屏幕啊,因为现在屏幕点不着,我…

Windows 中的启动项如何打开?管理电脑启动程序的三种方法

在日常使用电脑时,我们经常会发现一些应用程序在开机时自动启动,这不仅会拖慢系统的启动速度,还可能占用不必要的系统资源。幸运的是,通过几个简单的步骤,你可以轻松管理这些开机自启的应用程序。接下来,我…