KEIL下分散加载文件的使用(zt)
2014-01-20 22:20
239 查看
KEIL下分散加载文件的使用
对于分散加载的概念,在《ARM体系结构与编程》书中第11章有明确介绍。 分散加载文件(即scatter file 后缀为.scf)是一个文本文件,通过编写一个分散加载文件来指定 ARM连接器在生成映像文件时如何分配RO,RW,ZI等数据的存放地址。如果不用SCATTER文件指定,那么 ARM连接器会按照默认的方式来生成映像文件,一般情况下我们是不需要使用分散加载文件的。 但在某些场合,我们希望把某些数据放在指定的地址处,那么这时候SCATTER文件就发挥了非常大的作用 而且SCATTER文件用起来非常简单好用。 举个例子:比如像LPC2378芯片具有多个不连续的SRAM,通用的RAM是32KB,可是32KB不够用,我想把 某个.C中的RW数据放在USB的SRAM中,那么就可以通过SCATTER文件来完成这个功能。 下面是就这个例子作的说明: 这是一个标准的常用的分散加载文件,现在加注释于后,方便以后查阅: ;****************************************************************************** ; ; SCATTER LOADING DESCRIPTION ; ARM ; KEIL's uVision3 ; (RealView Microprocessor Developer Kit) ; ; Filename : LPC2378_Flash.scat ;****************************************************************************** LR_IROM1 0x00000000 0x00080000 ;; 第一个加载域,名字为LR_IROM1,起始 { ;;地址为0x0,大小为0x80000 ER_IROM1 0x00000000 0x00080000 ;;加载域中的运行时域,名字为ER_IROM1 { ;; 起始地址为0x0,大小为0x80000 vectors.o (VECT, +First) ;;将vectors.c编译后生成的文件vectors.o中的代码 init.o (INIT) ;;以及init.o中的代码 * (+RO) ;;以及所有编译生成的RO属性的代码全部存放在 } ;;运行时域ER_IROM1指定的地址范围内,存放方式:顺序存放 RW_IRAM1 0x40000000 0x0000e800 ;;这是第二个运行时域,功能同上 { ;;其中 *是代表具有()里面指定的属性的全部数据 *(+RW,+ZI) ;;与*功能相似的有.ANY,后面说明 } ;; The following declarations select the "two region model" ; ;; A default __user_initial_stackheap() will be used ; ARM_LIB_HEAP 0x40007000 EMPTY 0x00000100 {} ;;指定堆栈地址 ARM_LIB_STACK 0x40008000 EMPTY -0x00000E00 {} } 下面是针对LPC2378的USB SRAM作数据RAM使用的配置: ;****************************************************************************** ; ; SCATTER LOADING DESCRIPTION ; ARM ; KEIL's uVision3 ; (RealView Microprocessor Developer Kit) ; ; Filename : LPC2378_Flash.scat ;****************************************************************************** LR_IROM1 0x00000000 0x00080000 ;; 第一个加载域,名字为LR_IROM1,起始 { ;;地址为0x0,大小为0x80000 ER_IROM1 0x00000000 0x00080000 ;;加载域中的运行时域,名字为ER_IROM1 { ;; 起始地址为0x0,大小为0x80000 vectors.o (VECT, +First) init.o (INIT) * (+RO) } RW_IRAM1 0x40000000 0x0000e800 { .ANY(+RW,+ZI) ;; 此处.ANY替换原来的*,是因为下面的一个执行域对指定的模块中的RW,ZI数据指定了存放地址 ;;用.ANY就可以把已经被指定的具有RW,ZI属性的数据排除 } ;; The following declarations select the "two region model" ; WEBRPGRADE 0x7fd00000 0x1fff { webupgrade.o(+RW,+ZI) ;;webupgrade.o文件中所有变量都存在USB SRAM中 } ;; A default __user_initial_stackheap() will be used ; ARM_LIB_HEAP 0x40007000 EMPTY 0x00000100 {} ARM_LIB_STACK 0x40008000 EMPTY -0x00000E00 {} } |
相关文章推荐
- 设备驱动------KEIL下分散加载文件的使用
- KEIL下分散加载文件的使用
- keil mini2440 分散加载文件scatter中(InRoot$$Sections)的理解
- keil分散加载文件
- keil .sct分散加载文件及其应用(重点必看)
- keil分散加载文件sct写法
- c语言小知识点 7 __attribute #pragma pack (n)使用及(scatter file)分散加载文件 .sct
- 关于keil里的分散加载文件.scf
- keil .sct分散加载文件及其应用
- KEIl工具之scatter file分散加载文件2
- Keil sct分散加载文件
- KEIl工具之scatter file分散加载文件1
- Keil sct分散加载文件
- KEIL下分散加载文件
- Keil sct分散加载文件
- ADS分散加载文件使用总结(lpc23xx)
- 怎样使用链接脚本文件实现分散加载
- 在MDK环境下使用分散加载描述文件
- 【转载】ADS分散加载文件使用总结(lpc23xx)
- 使用了SDRAM,使用了分散加载文件,出现HardFault_Handler