个人理解—MKCONFIG的常用配置参数与链接脚本

        前面的文章说到,编写Makefile文件的常用语句以及相应的语法,但也提到了MKCONFIG去控制Makefile文件的变量实现条件编译,在MKCONFIG过程中,常用的变量配置有例如架构配置、交叉编译工具链配置等,这些选项要么你去通过改写Makefile文件实现条件编译,要么在Makefile配置过程中,去实现对其参数的改变,不然的话,其会使用默认参数进行编译,既不符合你的架构要求又不符合你的交叉编译工具链版本,报一堆错告诉你编译不下去或者移植过程中启动失败,下面将以X210平台对一些常用的MKCONFIG变量参数进行说明。

        不得不说的是,对于Makefile的配置,再怎么样也要对着文件里面的选项进行查看,网上去搜素一些主流的用于学习的平台,相关的配置方法都有,这些配置方法都是根据文件的选项进行配置的。

    ARCH是架构选项,根据文件可用对你所使用的平台进行选择,具体要看两个方面,其一是平台的处理器使用的架构是什么,就不管其他架构,就arm架构就能分出armv6 v7什么的,再一点是要看该Makefile文件在ARCH选项中是否包含有你所要移植的这个架构的选项,如果二者都有那么皆大欢喜,因为一个主流的内核或者驱动都会对常用的架构或者芯片进行相应的配置,也就是直接写好了参数,如果没有的话就有点麻烦,可能要一步一步试着来配置了。
    而且一般帮你配置好的参数,只是针对到该芯片的一般情况,而没有精确到对开发板级别的配置,所以有些地方还要自己去进行修改,不多。
CROSS_COMPILE是交叉编译工具链,需要绑定工具链的前缀,代表了后续将要使用到编译器的版本,只绑定前缀的原因是后面的内容是不一样的如-ar、-gcc、-g++等等,这些参数会在编译时自行匹配。
    该参数一般可在make时直接make CROSS_COMPILE=xxx进行配置,如果在系统中已经导出了符号链接,那么可直接写作make CROSS_COMPILE=arm-linux- 具体情况还要看你导出的符号链接怎么写的。

x210_sd_config: unconfig
    @$(MKCONFIG) $(@:_config) arm S5PC11X X210 Samsung S5pc110

        来分析一下这段代码,$(@:_config)的意思是将$@代表的X210_sd_config的_config部分用空来代替,得到X210_sd。$1为参数X120_sd,$2为arm,$3为S5PC11X,$4为X210,$5为samsung,$6为S5PC110。这些参数将会成为Makefile的默认配置参数。通过Makefile去配置出config.h文件(X210_sd.h).

        通过X210_sd.h文件可生成autoconfig.mk文件,该文件将会被Makefile引入,其本质就是一些宏,通过这些配置实现可移植性。在整个uboot中配置通过字符串匹配,所以在移植时较为严谨,需严格区分大小写。

        这里提到了uboot就不得不说一下程序的入口到底是哪里——ENTRY(_start)这就是整个程序的入口地址,_start是汇编的起始位置。

        指定程序链接地址的方法:(1)在Makefile中使用-Ttext指定位置。(2)在链接脚本中用.=0x......指定,当二者均存在时,以Makefile中以-Ttext的链接地址为准。

        既然说到了链接脚本也就将其常用的一些参数进行说明吧。

.=ALIGN(4) 表示4字节对齐
.text      代码段标识
.rodata    只读数据段
.data      一般数据段
.bss       bss段 存放未初始化的全局变量

        在X210中,.text代码段最开始的16k会存放开机必须使用到的代码,后面才放其他代码。

        指明那些代码因在前16k,那些代码应在16k之后。

        使用链接脚本支持自定义段(编译器支持)。

        启动校验头,常用于镜像文件需要的16字节校验头,对于X210的uboot文件而言如下所示:

#if define(CONFIG_EVTI) && !define(CONFIG_FUSED)

    .word 0x2000
    .word 0x0
    .word 0x0
    .word 0x0
#endif
    

        这是一段汇编的伪指令,定义了4个字节的值,地址在#if开始位置。

        对于X210而言,16字节校验头在usb启动是用不上的,其只在SD卡启动时在MKV210image.c

中会在镜像的头部进行添加,uboot中在start.S的开头占了16字节的位置,就是为了以后改写做准备(计算校验和sd_fusong中)。img=16+后面的内容,但这16字节不参与校验,校验和放在buf+8的位置。

        文章写到这里其实已经讲到了开发板的启动过程了,所以先在这里断开,后面的内容将会续写汇编部分的内容,放到下一章继续。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

界面控件DevExpress .NET MAUI v24.1 - 发布TreeView等新组件

DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress 今年第一个重要版本v23.1正式发布,该版本拥有众多…

10 个 C# 关键字和功能

在 Stack Overflow 调查中,C# 语言是排名第 5 位的编程语言。它广泛用于创建各种应用程序,范围从桌面到移动设备再到云原生。由于有如此多的语言关键字和功能,对于开发人员来说,要跟上新功能发布的最新信息将是一项艰巨的任务。本…

基于ssm+vue+uniapp的二手物品交易平台小程序

开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…

数据结构--图(Graph)

定义 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成的一种非线性表结构,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。 顶点(…

大模型之战-操作数据表-coze

工作流直接操作数据库啦【何时可以直接访问自己的数据库呢】 1,第一步创建一个bot智能体 1.1,bot中创建数据库表: 1.2,智能体可以通过对话,操作表;【增加,筛选查询等】 1.2.1,增加…

C++ 设计模式——模板方法模式

模板方法模式 模板方法模式逐步重构并引入模板方法模式初始实现提取共性并引入模板方法模式实现具体类 完整代码示例模板方法模式的 UML 图UML 图详细介绍 模板方法模式适用于以下场景 模板方法模式 模板方法模式是一种行为设计模式,它定义了一个算法的骨架&#x…

Python(PyTorch)硅光电倍增管和量化感知训练亚光子算法验证

🎯要点 🎯亚光子光神经网络矩阵计算 | 🎯光学扇入计算向量点积 | 🎯表征测量确定不同光子数量下计算准确度 | 🎯训练全连接多层感知器基准测试光神经网络算法数字识别 | 🎯物理验证光学设备设置 | &#x…

美股收涨,半导体板块领涨;苹果iPhone出货预测上调

市场概况 在昨夜的交易中,美股三大股指全线收涨。道琼斯工业平均指数上涨1.39%,纳斯达克综合指数上涨2.34%,标准普尔500指数上涨1.61%。值得注意的是,英伟达股票涨幅近4%,推动了科技股的整体表现。美国十年期国债收益…

RK3576 芯片介绍

RK3576 芯片介绍 RK3576瑞芯微第二代8nm高性能AIOT平台,它集成了独立的6TOPS(Tera Operations Per Second,每秒万亿次操作)NPU(神经网络处理单元),用于处理人工智能相关的任务。此外&#xff0…

数字化转型对金融服务业的影响

数字化转型正在塑造每个行业,从快速消费品到金融,每个行业都受到新兴技术的影响。 那么,数字化转型在金融服务中扮演什么角色?这对招聘前景有何影响? 我们探讨了数字化转型对该行业的影响、其对招聘策略的影响、数据…

【游戏开发】【Unity】如何快速建造人物模型并赋予动画动作

背景 之前介绍了简单将模型从Vroid Studio置入Blender的方法,本篇介绍如何快速将Vroid的模型赋予动画动作。 工艺流程 大致的路线就是用Vroid快速建模,从Maximo上导入骨架动作,最后用Blender将两者结合。 操作方法 在Blender中打开Edit-》Preferences-》Add-ons 搜索关键…

计算机毕业设计选题推荐-springboot 基于SpringBoot的家电销售展示平台

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

网易云音乐故障 2 小时,这次到底谁背锅?(今天记得领补偿)

大家好,我是程序员鱼皮,8 月 19 日下午,网易云音乐突发严重故障,并登顶微博热搜,跟黑神话悟空抢了热度。 根据用户的反馈,故障的具体表现为:用户无法登录、歌单加载失败、播放信息获取失败、无法…

PromptEngineering:ReAct 框架(LangChain 使用的 Agents 框架)

今天介绍 ReAct 框架,前面介绍的提示工程技术除了 CoT 大家可能很少接触到,那么今天的主角会稍有名气。ReAct 是著名工具 LangChain 最主要的代理类型。 ReAct 的全称是《语言模型中的协同推理和同步》[1], 论文名字是《ReAct: Synergizing …

源码构建LAMP

目录 一、安装Apache 二、安装Mysql 三、安装PHP 四、安装论坛 一、安装Apache 1.cd 到opt目录下面,将压缩包拉进Xhell 2.解压缩apr和httpd压缩包 tar xf apr-1.6.2.tar.gz tar xf apr-util-1.6.0.tar.gz tar xf httpd-2.4.29.tar.bz2 3.将apr-1.6.2 移动到ht…

数学建模预测类—【多元线性回归】

每日名言:成名每在穷苦日,败事多因得意时 目录 文章目录 前言 二、参数估计 三、多元线性回归模型和回归系数的检验 四、预测 总结 前言 本文将根据回归建模过程来讲解多元线性回归模型,有关回归分析的知识以及一元线性回归的内容可以戳…

stm32的UART重定向printf()

1配置好uart 2打开usart.c文件 3在此文件前面添加头文件 4在末尾添加重定向代码 添加的代码 /* USER CODE BEGIN 1 *///加入以下代码,支持printf函数,而不需要选择use MicroLIB //#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #if 1 //#pragma import(__use_n…

暑假算法刷题日记 Day 10

目录 重点整理 054、 拼数 题目描述 输入格式 输出格式 输入输出样例 核心思路 代码 055、 求第k小的数 题目描述 输入格式 输出格式 输入输出样例 核心思路 代码 总结 这几天我们主要刷了洛谷上排序算法对应的一些题目,相对来说比较简单 一共是13道…

什么是逃逸分析

如何快速判断是否逃逸就看方法内new的对象实体是否能够被外部方法进行调用 什么是逃逸分析 在java虚拟机中,对象是在java堆中分配内存的,这是一个普遍的常识。但是,有一种特殊情况,那就是如果经过逃逸分析(escape an…

【鸿蒙学习】HarmonyOS应用开发者基础 - 构建更加丰富的页面(一)

学完时间:2024年8月14日 一、前言叨叨 学习HarmonyOS的第六课,人数又成功的降了500名左右,到了3575人了。 二、ArkWeb 1、概念介绍 ArkWeb是用于应用程序中显示Web页面内容的Web组件,为开发者提供页面加载、页面交互、页面调…