ScatterFile分散加载文件及其应用.docx
文本预览下载声明
分散加载文件及其应用
分散加载能够将加载和运行时存储器中的代码和数据描述在被称为分散加载描述文件的一个文本描述文件中,以供连接时使用。(1)分散加载区分散加载区域分为两类:? 加载区,包含应用程序复位和加载时的代码和数据。? 执行区,包含应用程序执行时的代码和数据。应用程序启动过程中,从每个加载区可创建一个或多个执行区。映象中所有的代码和数据准确地分为一个加载区和一个执行区。(2)分散加载文件示例ROM_LOAD 0x0000 0x4000{??? ROM_EXEC 0x0000 0x4000; Root region??? {??????? * (+RO); All code and constant data??? }??? RAM 0x10000 0x8000??? {??????? * (+RW, +ZI); All non-constant data??? }}
???
(3)分散加载文件语法load_region_name? start_address | +offset? [attributes] [max_size]{??? execution_region_name? start_address | +offset? [attributes][max_size]??? {??????? module_select_pattern? [(??????????????????????????????????? (+ input_section_attr | input_section_pattern)??????????????????????????????????? ([,] + input_section_attr | , input_section_pattern)) *?????????????????????????????? )]??? }}?load_region:?????? 加载区,用来保存永久性数据(程序和只读变量)的区域;execution_region:? 执行区,程序执行时,从加载区域将数据复制到相应执行区后才能被正确执行;load_region_name:? 加载区域名,用于“Linker”区别不同的加载区域,最多31个字符;start_address:???? 起始地址,指示区域的首地址;+offset:?????????? 前一个加载区域尾地址+offset 做为当前的起始地址,且“offset”应为“0”或“4”的倍数;attributes:??????? 区域属性,可设置如下属性:??????????????????? PI?????? 与地址无关方式存放;??????????????????? RELOC??? 重新部署,保留定位信息,以便重新定位该段到新的执行区;??????????????????? OVERLAY? 覆盖,允许多个可执行区域在同一个地址,ADS不支持;??????????????????? ABSOLUTE 绝对地址(默认);max_size:????????? 该区域的大小;?execution_region_name:执行区域名;start_address:???? 该执行区的首地址,必须字对齐;+offset:?????????? 同上;attributes:??????? 同上;??????????????????? PI????????? 与地址无关,该区域的代码可任意移动后执行;??????????????????? OVERLAY???? 覆盖;??????????????????? ABSOLUTE??? 绝对地址(默认);??????????????????? FIXED?????? 固定地址;??????????????????? UNINIT????? 不用初始化该区域的ZI段;module_select_pattern: 目标文件滤波器,支持通配符“*”和“?”;??????????????????????? *.o匹配所有目标,* (或“.ANY”)匹配所有目标文件和库。input_section_attr:??? 每个input_section_attr必须跟随在“+”后;且大小写不敏感;??????????????????????? RO-CODE 或 CODE??????????????????????? RO-DATA 或 CONST??????????????????????? RO或TEXT, selects both RO-CODE and RO-DATA??????????????????????? RW
显示全部