您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页STM32+GCC的ld文件解析

STM32+GCC的ld文件解析

来源:叨叨游戏网

ld文件解析

GCC本身是一个工具集,包括预处理器、汇编器、编译器和连接器。GCC编译构建工程项目过程可拆解为:

1. 预编译(编译预处理):头文件扩展、宏扩展;

2. 汇编:将高级语言代码翻译成汇编语言代码,得到一个汇编语言的文件(xxx.s文件);

3. 编译:将上一步骤的汇编代码翻译成机器语言代码,得到模块目标文件(xxx.o文件);

4. 链接:把所有的目标模块及其各种的依赖的库链接成一个整体,得到可执行程序。

连接器的链接过程是靠链接文件(ld文件)来完成的,每一个目标模块文件中都有一个段(section)列表,目标文件的每个 section 至少包含两个信息: 名字和大小. 大部分 section 还包含与它相关联的一块数据, 称为 section contents(段内容)。

我们工程项目的链接文件名为:STM32F429ZETx_FLASH.ld。该文件是用来存放芯片内存信息的, GCC编译代码时,由该文件负责定义链接器如何将各个目标文件中的代码,组合成最终可执行程序。连接脚本的一个主要目的是描述输入文件中的段(section)如何被映射到输出文件中,并控制输出文件的内存分布。

STM32F429ZETx_FLASH.ld文件包含如下内容:

  1. 程序入口定义

***********************************************************************

ENTRY(Reset_Handler)

***********************************************************************

2)堆栈大小声明

***********************************************************************

_estack = 0x20030000;    /* end of RAM */

_Min_Heap_Size = 0x200;      /* required amount of heap  */

_Min_Stack_Size = 0x400; /* required amount of stack */

***********************************************************************

3)存储器块声明

***********************************************************************

MEMORY

{

RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 192K

CCMRAM (xrw)      : ORIGIN = 0x10000000, LENGTH = K

FLASH (rx)      : ORIGIN = 0x8000000, LENGTH = 512K

}

***********************************************************************

存储器块声明在MEMORY字段。不难发现,我们工程中挑选的STM32F429ZET6单片机片内存储主要由三个部分构成:RAM、CCMRAM和和FLASH。其中RAM大小为192K;CCMRAM大小为K;FLASH大小为512K。其中RAM和CCMRAM由SRAM存储器构成,总大小为256K字节。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务