<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式軟件開(kāi)發(fā)之: 映像文件存儲器映射調整

嵌入式軟件開(kāi)發(fā)之: 映像文件存儲器映射調整

作者: 時(shí)間:2013-09-30 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/257027.htm

3.在代碼映像中保留空白域

可以在Scatter中使用 EMPTY 屬性為棧保留一個(gè)空白存儲器塊。該存儲塊不構成載入區的一部分,但指定在執行時(shí)使用。由于它創(chuàng )建為虛 ZI區,所以 armlink 使用以下符號訪(fǎng)問(wèn)它:

· Image$$region_name$$ZI$$Base;

· Image$$region_name$$ZI$$Limit;

· Image$$region_name$$ZI$$Length。

如果指定的長(cháng)度為負值,則Image$$region_name$$ZI$$Limit被視為域的結束地址。它是絕對地址,不是相對地址。下面例子顯示了如何在Scatter文件中預留一個(gè)空白區域。

LOADREGION 0x700000 ; 加載域的起始地址在0x700000

{ ;

STACK 0x7000000 EMPTY –0x10000 ; 該域的結束地址為0x700000,因為其長(cháng)度為負

;

region

;

{

; 預留空白區放置棧

}

HEAP +0 EMPTY 0x10000 ; 棧的起始地址在上個(gè)預留區域介紹地址

;

;

{

; 預留空白區域放置堆

}

; rest of scatter description...

}

在上面的例子中定義了一個(gè)執行域STACK 0x7000000 EMPTY -0x10000,它從地址 (0x7000000-0x1000)開(kāi)始,在地址0x7000000結束。

在此示例中,鏈接程序生成符號:

Image$$STACK$$ZI$$Base = 0x6ff0000

Image$$STACK$$ZI$$Limit = 0x7000000

Image$$STACK$$ZI$$Length = 0x1000

Image$$HEAP$$ZI$$Base = 0x7000000

Image$$HEAP$$ZI$$Limit = 0x7010000

Image$$HEAP$$ZI$$Length = 0x1000

EMPTY屬性?xún)H適用于執行區。如果在載入區定義中使用EMPTY屬性,則鏈接程序生成警告信息并忽略該屬性。鏈接程序檢查用于EMPTY區的地址空間不與任何其他執行區重疊。

4.使用OVERLAY關(guān)鍵字

在A(yíng)RM以前的編譯器中,沒(méi)有提供地址空間的重疊管理。如果有運行時(shí)域地址空間重疊,需要用戶(hù)自己提供地址空間重疊的管理機制。但在RVDS的編譯器中,提供了運行時(shí)域屬性關(guān)鍵字OVERLAY,用戶(hù)可以使用該關(guān)鍵字生成自己的重疊空間。

下面例子顯示了如何使用OVERLAY關(guān)鍵字,生成運行時(shí)域的重疊空間。

LOADREG 0x8000

{

;

STATIC_RAM 0x0 ; 靜態(tài)RAM區,包含大部分的RW和ZI

{

* (+RW,+ZI)

}

OVERLAY_A_RAM 0x1000 OVERLAY ; 重疊區...

{

module1.o (+RW,+ZI)

}

OVERLAY_B_RAM 0x1000 OVERLAY

{

module2.o (+RW,+ZI)

}

;

}

5.在Scatter文件中使用預處理偽操作

可用在Scatter文件的第一行加上需要編譯器進(jìn)行預處理的操作。語(yǔ)法格式如下所示。

#! preprocessor> [pre_processor_flags]

LOAD_FLASH ( 0x8000 + ( 0x2 * 0x400 )) ;

例如:

#! armcc -E

聯(lián)接器可以對預處理的表達式進(jìn)行簡(jiǎn)單的計算,可以識別簡(jiǎn)單的運算符如+、-、×、/、AND和OR,如:

#define AN_ADDRESS (BASE_ADDRESS+(ALIAS_NUMBER*ALIAS_SIZE))

同時(shí),也可以在Scatter文件頭加一些預處理的偽操作,如:

#define ADDRESS 0x20000000

#include include_file_1.h

#define BASE_ADDRESS 0x8000

#define ALIAS_NUMBER 0x2

#define ALIAS_SIZE 0x400

在Scatter文件中,使用預處理的更詳細的信息,請參見(jiàn)ARM相關(guān)文件。

存儲器相關(guān)文章:存儲器原理




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>