嵌入式軟件開發(fā)之: 映像文件存儲器映射調(diào)整
3.-reloc -split選項的替換
使用-split選項生成的映像由兩個加載域和三個執(zhí)行域組成。
使用以下的鏈接選項重新分割并定位加載域。
· -reloc
組合使用-reloc -split生成具有兩個加載域的映像,并且使加載域具有RELOC屬性。
· -ro-base address1
指定包含RO輸出段的域的載入地址和執(zhí)行地址。
· -ro-base address2
指定包含RW輸出段的域的載入地址和執(zhí)行地址。
· -split
將默認的單一加載域(包含RO和RW輸出段的加載域)分成兩個加載域。一個載入域包含RO輸出段,另一個包含RW輸出段。
下面的例子顯示了與使用-ro-base 0x8000 -rw-base 0x040000 -split等效的Scatter文件。
LOADREG1 0x8000 ;指定第一個加載域的起始地址為0x8000
{
ROM +0
{
*(+RO)
}
}
LOADREG2 0x040000 ;第二個加載域的起始地址為0x40000
{
RAM_RW +0
{
*(+RW) ;放置所有的RW段
}
RAM_ZI +0
{
*(+ZI)
}
}
使用上例中的Scatter文件創(chuàng)建的內(nèi)存映像有兩個加載域,分別為LOADREG1和LOADREG2,它們的起始地址分別為0x8000和0x040000。
該映像文件有三個執(zhí)行域,分別為ROM、RAM_RW和RAM_ZI,它們分別包含RO、RW和ZI輸出段。ROM的執(zhí)行地址是0x8000。
RAM_RW執(zhí)行域與ROM不相鄰。其執(zhí)行地址是0x040000。
執(zhí)行域RAM_ZI緊隨RAM_RW域放置。
可以使用-reloc選項和-split選項配合使用,指定兩個加載域具有RELOC屬性。
下面的例子顯示與使用-ro-base 0x8000 -rw-base 0x040000 -reloc -split等效的Scatter文件。
LOADREG 0x010000 RELOC
{
ROM + 0
{
* (+RO)
}
}
LOADREG 0x040000 RELOC
{
RAM_RW + 0
{
* (+RW)
}
RAM_ZI +0
{
* (+ZI)
}
}
存儲器相關文章:存儲器原理
評論