有時(shí)候,我們不想讓程序存儲(chǔ)在起始的位置,比如我們有一段bootloader,對(duì)應(yīng)的app(應(yīng)用程序)存儲(chǔ)的位置就會(huì)有一個(gè)偏移地址。
那么,我們?nèi)绾巫尦绦虼鎯?chǔ)在指定的偏移地址呢?
下面結(jié)合STM32,講述在Keil和IAR開發(fā)環(huán)境中設(shè)置起始地址0x08010000的方法。
1
Keil配置方法
打開工程目標(biāo)選項(xiàng):
Project -》 Options for Target -》 Target。
修改目標(biāo)ROM起始地址。如下圖:

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

3
驗(yàn)證代碼存儲(chǔ)地址
對(duì)于STM32芯片來(lái)說(shuō),可以直接使用STM32 ST-LINK Utility工具讀取FLASH數(shù)據(jù)驗(yàn)證代碼是否存儲(chǔ)在相應(yīng)地址位置,其他芯片也可以使用對(duì)應(yīng)可以讀取FLASH數(shù)據(jù)的工具來(lái)驗(yàn)證。
如下圖:

從上圖可以看見,代碼是從0x08010000 起始存儲(chǔ)的。查看前面的存儲(chǔ)區(qū)域,可以發(fā)現(xiàn)數(shù)據(jù)全是0xFFFF,也就是說(shuō)沒有被代碼占用這些扇區(qū)。
原文標(biāo)題:Keil、IAR改變代碼(程序)存儲(chǔ)地址的方法
文章出處:【微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
STM32
+關(guān)注
關(guān)注
2309文章
11162瀏覽量
373474 -
keil
+關(guān)注
關(guān)注
69文章
1230瀏覽量
172649
原文標(biāo)題:Keil、IAR改變代碼(程序)存儲(chǔ)地址的方法
文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
LAT1185+一個(gè)地址未對(duì)齊引起的 HardFault 異常應(yīng)用筆記
飛凌嵌入式ElfBoard-文件I/O的深入學(xué)習(xí)之存儲(chǔ)映射I/O
在Keil5中查看棧大小
請(qǐng)問e203定義的地址空間是虛擬地址還是物理地址?
編譯器如何指定代碼的地址段?
N76E0003調(diào)試器驅(qū)動(dòng)程序在keil中失敗了的原因?
在 Keil / IAR 開發(fā)環(huán)境下的 Debug 模式下,用戶是否可以在空閑 ru 期間立即添加新的斷點(diǎn)?
請(qǐng)問如何在 Keil μVision 或 IAR EWARM 中使用觀察點(diǎn)進(jìn)行調(diào)試?
AD7745在使用中,需要進(jìn)行偏移校準(zhǔn)和系統(tǒng)校準(zhǔn)嗎?
在IAR Arm開發(fā)工具鏈中--function_sections編譯選項(xiàng)的使用
CUEBIDE生成的APP程序,在寫入FLASH之后無(wú)法正常跳轉(zhuǎn)怎么解決?
從Keil MDK到IAR EWARM:通過(guò)工程遷移實(shí)現(xiàn)項(xiàng)目資產(chǎn)的更好管理
Keil、IAR中如何讓程序存儲(chǔ)在指定的偏移地址?
評(píng)論