Project manager裏面增加一個編譯目標選項。如led表示正式的發行編譯方案,SRAM表示偵錯編譯選項。
把RAM空間切分成兩部分,第一部分模擬ROM儲存程式碼,第二部分作爲RAM使用。切多大呢?保險的話查編譯輸出,Code+RO-data需要放ROM裏面,劃分的ROM空間要大於這個數。也可以按照經驗,對半砍,保險的話,按照上述方法進行確認。
空間切分好之後,把參數寫入Options的Target頁,IROM要用RAM的起始地址,按照第1步劃分的大小填寫。IRAM空間緊接其後。
記住output頁設定的執行檔名稱
**C/C++**頁面,Define需要加VECT_TAB_SRAM宏,中斷向量搬移到SRAM
debug頁面,不要選擇Load
Application at Startup。在Initialization File新增檔案,檔名隨意。檔案內容參考下面 下麪的內容
FUNC void Setup (void) {
SP = _RDWORD(0x20000000); //設定堆疊指針
PC = _RDWORD(0x20000004); //設定PC指針
_WDWORD(0xE000ED08, 0x20000000); //設定中斷向量表地址
}
//工程設定選項請不要勾選"Load Application ar Startup"
LOAD Objects\led.axf INCREMENTAL //裝載程式碼到CPU內部RAM(Objects\led.axf 自己工程的路徑和檔名)
Setup(); //再呼叫Setup函數修改堆疊指針和PC指針 因爲SP的值要從目的碼中讀取
g, main //執行到main函數
檔案裏面的Objects\led.axf需要更換成你的編譯輸出目錄和檔名,參考第4步。
大家使用時遇到的問題,郵件討論[email protected].