IAR嵌入式工作台IDE _ (__no_init)


 
IAR嵌入式工作台IDE用於編程基於MAXQ核的微控制器。IAR™ C編譯器(用於MAXQ微控制器)提供用於定義閃存或SRAM位置中數據對象或變量的選項。編譯器具有特殊關鍵詞pragma location和pragma required;通過使用關鍵詞,可將存儲器分配給絕對地址的數據對象或變量。必須用IAR關鍵詞__no_init或const (標准C關鍵詞)聲明這些變量或數據對象。請參見下文中__no_init、const、pragma location和pragma required的關鍵詞說明。
 
關鍵詞說明
pragma location
#pragma location用於定義絕對地址的單個全局或靜態變量或數據對象。變量或數據對象必須聲明為__no_init或const。這對於必須位於固定地址的個體數據對象非常有用,例如變量、帶有外部或內部接口的數據對象或增加的硬件表項。
pragma required
#pragma required確保鏈接輸出中包括某個符號所需的另一個符號。該指令必須放在緊鄰第二個符號的前邊。如果符號在應用中不可見,使用該指令。例如,如果僅通過某個變量所在的段對其進行間接引用,必須使用#pragma required。
__no_init
正常情況下,應用程序啟動時,IAR運行時環境將全部全局和靜態變量初始化為0。IAR C編譯器支持聲明不初始化的變量,使用__no_init類型限定符。聲明為__no_init的變量在啟動時被禁止。不可能為__no_init對象賦予初始值。
例如:__no_init char MaximChar @ 0x0200;
本例中,聲明為__no_init的變量被放在默認數據存儲器(SRAM)的一個絕對地址。
const
const關鍵詞意味着對象為只讀。這類限定符用於表示直接或通過指針存取的數據對象,不可寫。當const隨關鍵詞#pragma location和#pragma required一起使用時,IAR分配#pragma location定義的位置的存儲器。這對於配置從外部接口進行存取的參數非常有用。這樣的閃存數據只能由固定用途ROM函數讀或寫。
IAR默認存儲器模型中,不可存取絕對地址的常量。利用選項Place constants in CODE (在IAR Project


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM