簡體   English   中英

ARM Cortex M4和C,如何為特定的c文件指定RAM部分

[英]ARM Cortex M4 and C,How to specify RAM section for a specific c file

我想將特定.c文件中的變量存儲在特定的RAM位置,如何實現此目的。 我正在將IAR IDE用於ARM。

我這樣做的原因是當編譯器將變量存儲在ARM內核的位帶SRAM區域中時無法正確讀取它們。如果我注釋了一段代碼,則編譯器將其存儲在非位帶SRAM區域中,然后觀察到正確的結果。

使用EWARM,可以使用幾種方法放置變量。 您可以使用@放置在特定地址。 IAR的支持站點

const char RELEASEDATE[16] @ 0x0000FF10 = __DATE__ ;
const char RELEASETIME[16] @ 0x0000FF20 = __TIME__ ;

或者,您可以使用位置編譯指示在部分(聽起來像您想要的)中找到變量。 來自同一來源:

#pragma location = "ConstSection1"
__root const char RELEASEDATE[16] = __DATE__ ;
#pragma location = "ConstSection2"
__root const char RELEASETIME[16] = __TIME__ ;

在鏈接器文件( .icf )中,您將擁有:

place at address mem: 0x0000FF10    { readonly section ConstSection1 };
place at address mem: 0x0000FF20    { readonly section ConstSection2 };

我更喜歡#pragma因為@運算符看起來不合適。 另外,閱讀代碼的人希望#pragma是編譯器特定的東西,而@隱藏在代碼中並且不引人注意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM