uboot主目录下Makefile文件的分析,以及配置过程分析

news/2025/2/28 6:29:00/

主Makefile执行分析
在这里插入图片描述

uboot的编译过程

(1)配置

查看主Makefile文件下所支持的配置的板子,通过make x210_sd_config来实现编译前的配置

(2)编译

make直接编译,这个前提条件是主Makefile文件下指定了编译工具链,SOC架构,SOC型号等参数
在这里插入图片描述
在这里插入图片描述
make -s 静默编译
make O=目录 指定编译生成文件的输出目录,编译产生的文件和源文件分开

主Makefile下的操作的分析

包括了有以下

uboot版本号的确定

编译uboot过程会自动生成一个版本号文件include/version_autogenerated.h,存放的是uboot的版本号

主机架构和操作系统的确定

通过shell命令获取主机架构和操作系统HOSTARCH和HOSTOS

设置静默编译

通过在编译时添加-s参数可以不打印Makefile输出信息

原地编译和指定目录编译

第一种:make O=输出目录
第二种:export BUILD_DIR=输出目录 然后再make
OBJTREE、SRCTREE、TOPDIR
分别为输出目标目录和源码目录和顶层目录
在默认编译下,OBJTREE和SRCTREE相等;在O=xx这种编译下OBJTREE和SRCTREE不相等

include $(obj)include/config.mk

include $(obj)include/config.mk不是uboot源码自带的,是配置过程中生成的
导入相关ARCH CPU BOARD VENDOR SOC
ARCH = arm
CPU = s5pc11x
BOARD = x210
VENDOR = samsung
SOC = s5pc110

ARCH CROSS_COMPILE

指定交叉编译工具链目录和架构

uboot的链接脚本

board\samsung\x210目录下有u-boot.lds

偏移地址

在board/samsung/x210目录下生成了一个文件config.mk,其中的内容就是:TEXT_BASE = 0xc3e00000相当于定义了一个变量

创建的符号链接:

第一个:在include目录下创建asm文件,指向asm-arm。(46-48行)
第二个:在inlcude/asm-arm下创建一个arch文件,指向include/asm-arm/arch-s5pc110
第三个:在include目录下创建regs.h文件,指向include/s5pc110.h
删除第二个。
第四个:在inlcude/asm-arm下创建一个arch文件,指向include/asm-arm/arch-s5pc11x
第五个:在include/asm-arm下创建一个proc文件,指向include/asm-arm/proc-armv

总结:

主Makefile文件的主要作用是配置和指导编译uboot,可以从大局观来看到Makefile的编译过程,理解uboot的可移植性,通过选择不同编译条件可以执行不同架构和SOC的uboot编译。


http://www.ppmy.cn/news/33346.html

相关文章

Faster R-CNN

Faster R-CNN的步骤 1. 输入任意大小的图片,经过CNN网络输出特征图,特征图用于共享RPN、ROI Pooling 2. 特征图经过RPN生成候选区域 3.候选区域与1.中的特征图共同输入到ROI Pooling得到每个候选区域的特征图,然后进行softmax分类&#xff0…

南京邮电大学数据库第一次课后作业

1.单选题 (5分) (B)是存储在计算机内有结构的数据的集合。 (A)数据库系统 (B)数据库 (C)数据库管理系统 (D)数据结构 2.单选题 (5分) 数据库的特点之一是数据的共享,严格的讲,这里的…

Python学习(2)-NumPy矩阵与通用函数

文章首发于:My Blog 欢迎大佬们前来逛逛 1. NumPy矩阵 1.1 mat函数 matasmatrix asmatrix(data, dtypeNone):data:表示输入的数组或者字符串,使用‘,’分割列,使用‘;’分割行 创建两个普通的矩阵&…

力扣(LeetCode)1625. 执行操作后字典序最小的字符串(C++)

枚举 长度为 n 的字符串,最多轮转 n 次。一个数位最多 10 个数字,所以奇数位最多累加 10 次。由于字符串长度 n 是偶数,若轮转单位 b 是偶数,偶数位只会在偶数位,所以无法执行累加;若轮转单位 b 为奇数&am…

Python 面向对象编程——类定义与对象

<类定义与对象声明> 面向对象最重要的概念就是类&#xff08;Class&#xff09;和实例&#xff08;Instance&#xff09;&#xff0c;必须牢记类是抽象的模板&#xff0c;比如Student类&#xff0c;而实例是根据类创建出来的一个个具体的“对象”&#xff0c;每个对象都拥…

字节测试工程师悄悄告诉我的软件测试、测试开发常用的测试策略与测试手段

目录 前言 测试策略的关注重点 测试策略主要内容 总体测试策略 初级版本测试策略 跟踪测试执行 版本质量评估 后续版本测试策略 发布质量评估 测试手段 前言 测试策略是指在特定环境约束之下&#xff0c;描述软件开发周期中关于测试原则、方法、方式的纲要&#xff…

【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(4)

目录 写在前面&#xff1a; 题目&#xff1a;P1149 [NOIP2008 提高组] 火柴棒等式 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 解题思路&#xff1a; …

用 ChatGPT 辅助学好机器学习

文章目录一、前言二、主要内容&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 探索更高效的学习方法可能是有志者共同的追求&#xff0c;用好 ChatGPT&#xff0c;先行于未来。 作为一个人工智能大语言模型&#xff0c;ChatGPT 可以在帮助初…