1. 链接脚本ld
1.1 加载地址LMA和运行地址VMA
1.1.1 加载地址LMA
烧录程序时,代码段、数据段存储的地址,一般是在FLASH中 这个存储地址可保证掉电不丢失
1.1.2 运行地址VMA
软件运行时,代码段、数据段所处的(虚拟)地址,可以在FLASH、SRAM 【VMA】在SRAM,则需要从【LMA】加载,即从FLASH拷贝到SRAM,如【.data】
1.2 程序的存储机制
1.2.1 概述
1.2.2 一般结构
常规的代码放FLASH,变量在SRAM中。上电时,从【LMA】加载数据到【VMA】。
同样的,FLASH的其他内容也可以定义到SRAM,上电从FLASH加载到SRAM。
1.3 ld的作用
指定程序入口点,即从何处开始执行程序
定义内存布局,包括代码段、数据段、堆、栈的分配布局
1.4 ld的基本语法与规则
1.4.1 最重要的两个命令
MEMORY: 内存命令 SECTIONS: 段命令
1.4.2 SECTIONS简介
分配代码段、数据段、堆、栈。一个链接脚本中可存在多个SECTIONS命令,不过比较少这样使用:
1.4.3 位置计数器“.”
指向当前存储器的当前地址,一直递增 可对其赋值,如: 【. += 0x10000;】 【. = 0x10000;】 可取当前地址:【_sdata = .;】
1.4.4 “>、AT>”的作用
> 对应运行区域 AT> 对应加载区域
-- END --