說明
文章來源https://www.itdaan.com/blog/2014/04/10/84884fec8326545cfb1e356b75493468.html
擔(dān)心無法訪問漆枚,所以在這里記錄一下主要內(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ù)復(fù)制到相應(yīng)執(zhí)行區(qū)后才能被正確執(zhí)行萌狂;load_region_name
加載區(qū)域名潭千,用于“Linker”區(qū)別不同的加載區(qū)域,最多31個字符衩侥;start_address
起始地址国旷,指示區(qū)域的首地址;+offset
前一個加載區(qū)域尾地址+offset 做為當前的起始地址茫死,且“offset”應(yīng)為“0”或“4”的倍數(shù)跪但;-
attributes
區(qū)域?qū)傩裕稍O(shè)置如下屬性:屬性 說明 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)
}
}