S32DS中.ld(链接)文件学习
一、.ld文件作用
程序代码(.s 和 .c)源文件会经过预编译、编译、汇编、链接最后生成目标可执行文件,.ld文件是作用在链接过程。
链接的作用是:
合并各个.obj文件的section,合并符号表,进行符号解析;
符号地址重定位;
生成可执行文件。
linker_flash.ld:Flash和SRAM内存分配,为Flash构建目标分配代码段和数据段;
linker_ram.ld:SRAM内存分配,为RAM构建目标分配代码段和数据段。
可以利用.ld文件将函数和变量放置到自定义的地址中。
二、文件讲解
1.常用关键词介绍
ENTRY命令:运行一个程序时第一个被执行到的指令的"入口点"。
MEMORY命令:内存块配置命令,一个连接脚本最多一个’MEMORY’命令。
SECTIONS命令:’段’命令,段中又包含多个’节’, SECTIONS命令告诉连接器如何把输入节映射到输出节, 如何把输入节放入到内存中。
KEEP()命令:防止垃圾收集机制把这个节排除在外,同时保证向量表在段中的位置处于最顶端。
ALTGN命令:以多少位对齐,例如ALTGN(4)表示以4位对齐。
.命令:一个点“.”可以用来获取当前内存地址。
*:‘’是一个通配符,可以与所有文件名匹配。例如表达式(.text)表示所有输入文件的.text输入段。
2..ld文件解析
按照常用关键词去解析.ld文件内容即可。
三、指定地址操作
注:无法直接将变量或函数直接存到绝对地址(指定地址语法见下),如:
__attribute__ ((at (0x10000000))) uint32_t value = 0x01;
会出现此警告:
表示‘at’后面的指定地址方式不支持,因此忽略掉了。
指定变量地址支持的语法语法:
__attribute__ ((section (".SectionName"))) uint32_t value=0x01;
因此需要自定义一个节用来存放变量或函数。
1.指定地址语法
1)将变量存放指定地址的语法(例如将变量‘uint32_t value’存放到‘standby_ram_data’节中):
__attribute__ ((section (".standby_ram_data"))) uint32_t value=0x01;
编译后.map文件:
2)将函数存放指定地址的语法(例如将函数‘main’存放到‘abcd’节中):
编译后.map文件:
2.自定义节
在linker_flash.ld文件中将int_sram拆分出一段并命名为standby_sram:
在sections{}中编写新的节
编译后在.map文件中能够看到自定义的节:
3.操作演示
在main.c文件中定义变量:
uint32_t value0 = 0x01; uint32_t value1 = 0x02; uint32_t zero0 = 0; uint32_t zero1 = 1;
将初始值不为‘0’的变量放入‘standby_ram_data’节,初始值为‘0’的变量放入‘standby_ram_bss’节。
编译后.map文件:
在maun.c文件中定义函数:
int fun0(void) {return (0U); } int fun1(void) {return (0U); }
将‘main()’、‘fun0()’、‘fun1()’放入‘abcd’节。
编译后.map文件:
S32DS中.ld(链接)文件学习相关推荐
- 小猫爪:嵌入式小知识07-MCUXpresso GCC ld链接文件解析-链接代码至RAM
小猫爪:嵌入式小知识07-MCUXpresso GCC ld链接文件解析-链接代码至RAM 1 前言 2 基本语法 3 实例解析 4 链接代码至RAM 4.1 链接自定义section至RAM 4.2 ...
- Linux系统中的链接文件
日志文件系统ext xfs里 1.节点区域 记录的都是文件属性,ls -l file可以看到的内容 ,文件的元数据inode tables 2.数据区域 放的是cat file看到的一切,数据块 ca ...
- linux中硬链接文件,科学网—Linux:文件的符号链接和硬链接 - 刘洋洋的博文
参考:中国大学MOOC课程<Linux系统管理>,授课教师:颜晨阳. 推荐阅读: t.cn/RLXkhpc 1 符号(symbolic)链接 与Windows的快捷方式很像,这些文件很小, ...
- Linux中的链接文件
链接文件分为两种:一种是符号链接(Symbolic Link,国内通常叫软链接),另外一种是硬链接(hard Link).默认情况下,ln命令产生硬链接.ln -s(小写)命令产生符号链接 硬链接与软 ...
- 痞子衡嵌入式:MCUXpresso IDE下工程链接文件配置管理与自动生成机制
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下工程链接文件配置管理与自动生成机制. 痞子衡在 2018 年初写过一个专题 <嵌入式开发文件系列&g ...
- RISC-V MCU ld链接脚本说明
1.什么是ld链接脚本? 通常,程序编译的最后一步就是链接,此过程根据"*.ld"链接文件将多个目标文件(.o)和库文件(.a)输入文件链接成一个可执行输出文件(.elf).涉及到 ...
- vue、cnpm不是内部文件_UBoot链接文件 搞懂程序内部长什么样
对于一个程序而言,他们内部的结构.组成通常是不可见的,但是不可见并不意味着其内部是杂乱无章的排布,仅仅是众多的二进制数据拼凑而成.一份源代码生成最终的可执行文件来驱动我们的机器正常工作,中间必经的两个 ...
- 勒索软件好多都使用恶意LNK链接文件欺骗用户 来看趋势科技分析新型LNK-PowerShell攻击...
当你在桌面或者邮件中看到一个熟悉的图标快捷方式,你估计不会想到一个1.2K的文件,就足以让你中招勒索软件.本文就是给你展示这么小的文件中,会包含多少恶意信息.在文章的开头,先让我们来看两个概念,Lnk ...
- 【转载】CodeWarrior IDE使用tips之prm链接文件详解(自定义存储器分区以及自定义RAM数据初始化与在RAM中运行函数)...
CodeWarrior IDE使用tips之prm链接文件详解(自定义存储器分区以及自定义RAM数据初始化与在RAM中运行函数) 2017-08-19 胡恩伟 汽车电子expert成长之路 内容提要 ...
最新文章
- 以实用著称的《PHP与MySQL程序设计(第3版)》问世啦!
- bugku ctf 域名解析
- 深度学习项目-人群密度估计
- python读txt转array_python将txt文件读入为np.array的方法
- 想领取开发套件,就来参加AIoT开发者大赛
- Reverse原理背后的数学和魔幻艺术
- influxDb 异常:{“error“:“retention policy not found: default“}
- HTTP响应头信息 Content-Disposition 文件的显示或下载
- Rational Rose学习笔记02:创建用例图
- zookeeper之理论基础
- 洛谷P1018乘积最大——区间DP
- php 5.5 preg replace,解决ecshop在php5.5以上环境preg_replace报错方法
- Percona PT-kill重构版(PHP)
- 一线顶级互联网公司offer的成功经验【转自IT面试】
- Android异常与性能优化相关问题及解决办法
- KeyBERT进行中文关键词提取
- imx533 配置 制作SD卡启动文件系统
- spark 并行处理_如何使用Spark集群并行处理大数据
- vite打包报错EPERM: operation not permitted
- 一个能永久存储网页快照的网站
热门文章
- Linux Deploy在安卓手机安装LINUX系统
- php创建多级栏目_PHP 实现无限极栏目分类
- 纯C语言写计算器界面
- Java并发——CountDownLatch
- (20200921Solved)UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xca in position 0: invalid cont
- js——浏览器缓存(http缓存)和本地存储
- JavaScript中字符串数组赋值失败,不是每个字符串,却是字符。
- criteria 用法
- 谷粒学院 01_在线教育行业介绍
- 中国碳酸氢钠市场趋势报告、技术动态创新及市场预测