1
我希望特定的.c文件中的變量應該存儲在特定的RAM位置,我該如何實現這一點。 我正在爲ARM使用IAR IDE。ARM Cortex M4和C,如何爲特定的c文件指定RAM部分
我想這樣做的原因是,當編譯器將變量存儲在ARM內核的位帶SRAM區域中時,它們不能被正確讀取。如果我評論某段代碼,則編譯器將它們存儲在非位帶SRAM區域中,然後觀察到正確的結果。
我希望特定的.c文件中的變量應該存儲在特定的RAM位置,我該如何實現這一點。 我正在爲ARM使用IAR IDE。ARM Cortex M4和C,如何爲特定的c文件指定RAM部分
我想這樣做的原因是,當編譯器將變量存儲在ARM內核的位帶SRAM區域中時,它們不能被正確讀取。如果我評論某段代碼,則編譯器將它們存儲在非位帶SRAM區域中,然後觀察到正確的結果。
使用EWARM,您可以使用幾種方法放置變量。您可以使用@
放置在特定地址。從IAR's support site:
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
是編譯器特定的東西,而@
隱藏在代碼中,並沒有脫穎而出。