說明
文章來源https://www.itdaan.com/blog/2014/04/10/84884fec8326545cfb1e356b75493468.html
擔心無法訪問,所以在這里記錄一下主要內(nèi)容
分散加載文件語法
語法:
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加載區(qū),用來保存永久性數(shù)據(jù)(程序和只讀變量)的區(qū)域;execution_region執(zhí)行區(qū),程序執(zhí)行時,從加載區(qū)域?qū)?shù)據(jù)復制到相應執(zhí)行區(qū)后才能被正確執(zhí)行;load_region_name加載區(qū)域名,用于“Linker”區(qū)別不同的加載區(qū)域,最多31個字符;start_address起始地址,指示區(qū)域的首地址;+offset前一個加載區(qū)域尾地址+offset 做為當前的起始地址,且“offset”應為“0”或“4”的倍數(shù);-
attributes區(qū)域?qū)傩?,可設置如下屬性:屬性 說明 PI 與地址無關(guān)方式存放; RELOC 重新部署,保留定位信息,以便重新定位該段到新的執(zhí)行區(qū); OVERLAY 覆蓋,允許多個可執(zhí)行區(qū)域在同一個地址,ADS不支持; ABSOLUTE 絕對地址(默認); max_size該區(qū)域的大??;execution_region_name執(zhí)行區(qū)域名;start_address該執(zhí)行區(qū)的首地址,必須字對齊;+offset同上;-
attributes同上;屬性 說明 PI 與地址無關(guān),該區(qū)域的代碼可任意移動后執(zhí)行; OVERLAY 覆蓋; ABSOLUTE 絕對地址(默認); FIXED 固定地址; UNINIT 不用初始化該區(qū)域的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-DATA RW-CODE RW 或 DATA selects both RW-CODE and RW-DATA ZI 或 BSS ENTRY that is a section containing an ENTRY point. FIRST 用于指定存放在一個執(zhí)行區(qū)域的第一個或最后一個區(qū)域; LAST 同上; input_section_pattern段名;
示例
; *************************************************************
; * Scatter-Loading Description File generated by uVision *
; *************************************************************
LR_IROM1 0x00000000 0x00080000 { ; 第一個加載域,名字是LR_IROM1,起始地址0x00000000 大小是0x00080000
ER_IROM1 0x00000000 0x00080000 { ; 第一個運行時域,名字是ER_IROM1 起始地址0x00000000 大小事0x00080000
*.o (RESET, +First) ; IAP第一階段在FLASH中運行
*(InRoot$$Sections) ; All library sections that must be in a root region
.ANY (+RO) ; .ANY與*功能相似,用.ANY可以把已經(jīng)被指定的具有RW,ZI屬性的數(shù)據(jù)排除
}
RW_IRAM1 0x10000000 0x00010000 { ; RW data
.ANY(+RW +ZI)
}
RW_SDRAM1 0xA0000000 0x00800000 { ; RW data
STARTUP_LPC177X_8X.o (HEAP) ;HEAP用來定位堆棧的底
*.LIB(+RW +ZI)
}
}