昨天,修改程序的时候,修改到了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个或者多个执行区。
本文发布于:2024-01-28 21:43:10,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170644939810477.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |