关于keil里的分散加载文件.scf

0 篇文章 0 订阅

昨天,修改程序的时候,修改到了scf文件,之前对于scf文件没有了解,趁着这个机会略知一二。

scf文件,全名scatter file,中文名分散加载文件,是ARMlink的输入参数,如果你想把你的代码固定的放在存储器的某个特定的位置,用scf文件就特别方便。

直接来一个scf文件的实例好了。

LOAD_ROM 0x10020000 0x1000		//加载区 名称 起始地址 地址范围
{
	EXEC_ROM 0x10020000 0x1000	//执行区 名称 起始地址 地址范围
	{
		* (RESET,+FIRST)	//将RESET代码放在区首,最开始执行 FIRST属性符表示放在最开始
		* (+RO)			//只读代码和数据放在此区域
	}
	STACK_TOP 0x20005000 UNINIT 0x0	//UNINIT的意思是没有初始化	栈顶 栈:操作系统自动申请和释放
	{
		startup.o (STACK_TOP)	//startup.o STACK_TOP放入此处
	}
	STACK 0x20005000 EMPTY -0x1000	//向下空0x1000大小
	{
	}
	HEAP_TOP ImageBase(STACK) UNINIT 0x0	//ImageBase(STACK)不是很懂 从栈底开始堆顶? 堆:程序员自己申请和释放
	{
		startup.o (HEAP_TOP)		//startup.o HEAP_TOP放入此处
	}
	HEAP ImageBase(STACK) EMPTY -0x0	//空0
	{
	}
	HEAP_BOTTOM ImageBase(HEAP) UNINIT 0x0
	{
		startup.o(HEAP_BOTTOM)		//startup.o HEAP_BOTTOM放入此处
	}
	DATA_UNINIT 0x20000140 UNINIT 0x40
	{
		*(NO_INIT)			//NO_INIT 放入此处
	}
	DATA 0x20000240 UNINIT(0x5000-0x240-ImageLength(STACK)-ImageLength(HEAP))
	{
		*(+RW,+ZI)			//RW,ZI 放入此处
	}
}


RO,RW,ZI,NOINIT,分别表示只读,可读可写,初始化为0,以及没有初始化的文件和数据。

sct文件分为加载区和执行区,每个加载区里都有1个或者多个执行区。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值