1. 程式人生 > >IAR中通過ICF指定某變數的地址 或者 通過語句指定

IAR中通過ICF指定某變數的地址 或者 通過語句指定

如果想定在rom空間

icf中:

place at address mem:0x08090000 { readonlysection .test };

C:中:

#pragma location = ".test"

const u32 uiData[512];// const 切不可省略 

如果想定在ram空間 

icf中: 

place at address mem:0x08090000 { readwritesection .test }; 

C:中:

#pragma location = ".test"

u32 uiData[512];

可發現uiData的值為0x08090000

該法可方便通過ICF指定某變數的地址。

程式也可以。寫法類似.vector

如果用block的方。類似

define block CSTACK    with alignment = 8, size =__ICFEDIT_size_cstack__   { };

C中: 

#pragma language="extended"

#pragma segment="CSTACK"

ptr = __sfe( "CSTACK" );可得到CSTACK的高階地址+1

__sfe: Returns last address of segment.

另一種方法是通過語句指定,在網上沒找到明確的答案,一本鄭愛鈞的書上面有。