有時候,我們不想讓程序存儲在起始的位置,比如我們有一段bootloader,對應的app(應用程序)存儲的位置就會有一個偏移地址。
那么,我們如何讓程序存儲在指定的偏移地址呢?
下面結合STM32,講述在Keil和IAR開發環境中設置起始地址0x08010000的方法。
1
Keil配置方法
打開工程目標選項:
Project -》 Options for Target -》 Target。
修改目標ROM起始地址。如下圖:

說明:1.勾選的IROM即對應的存儲區域;2.起始地址(Start)和大?。⊿ize)根據你實際情況進行配置;
1
IAR配置方法
類似方法,進入配置界面:
A.進入配置界面:Pooject -》 Options -》 Linker -》 Config;B.勾選上“Override default”;C.點擊“Edit”,修改ROM起始地址為;D.點擊“Save”保存(第一次修改后,xxx.icf文件名和路徑都選擇默認)。具體如下圖:

3
驗證代碼存儲地址
對于STM32芯片來說,可以直接使用STM32 ST-LINK Utility工具讀取FLASH數據驗證代碼是否存儲在相應地址位置,其他芯片也可以使用對應可以讀取FLASH數據的工具來驗證。
如下圖:

從上圖可以看見,代碼是從0x08010000 起始存儲的。查看前面的存儲區域,可以發現數據全是0xFFFF,也就是說沒有被代碼占用這些扇區。
原文標題:Keil、IAR改變代碼(程序)存儲地址的方法
文章出處:【微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
STM32
+關注
關注
2309文章
11162瀏覽量
373438 -
keil
+關注
關注
69文章
1230瀏覽量
172636
原文標題:Keil、IAR改變代碼(程序)存儲地址的方法
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
LAT1185+一個地址未對齊引起的 HardFault 異常應用筆記
飛凌嵌入式ElfBoard-文件I/O的深入學習之存儲映射I/O
在Keil5中查看棧大小
請問e203定義的地址空間是虛擬地址還是物理地址?
編譯器如何指定代碼的地址段?
在 Keil / IAR 開發環境下的 Debug 模式下,用戶是否可以在空閑 ru 期間立即添加新的斷點?
AD7745在使用中,需要進行偏移校準和系統校準嗎?
在IAR Arm開發工具鏈中--function_sections編譯選項的使用
CUEBIDE生成的APP程序,在寫入FLASH之后無法正常跳轉怎么解決?
從Keil MDK到IAR EWARM:通過工程遷移實現項目資產的更好管理
Keil、IAR中如何讓程序存儲在指定的偏移地址?
評論