1、 文檔目標
對于在Debug模式下的Memory Map功能進行講解,該功能可以顯示當前映射的內(nèi)存范圍。地址對應(yīng)于μVision將邏輯段映射到物理段的方式。例如,0x00xxxx表示DATA、IDATA或EDATA空間中的地址;0x01xxxx表示XDATA空間中的地址,0xFFxxxx表示CODE空間中的地址。還可以查看對應(yīng)映射內(nèi)存范圍的讀寫權(quán)限。
2、 問題場景
當工程師需要清晰地查看程序中不同功能模塊或段落的內(nèi)存分布情況時,可以通過Memory Map功能去查看代碼區(qū)、數(shù)據(jù)區(qū)、堆棧區(qū)的內(nèi)存分布情況。并且還可以調(diào)整內(nèi)存中各個部分的大小和位置,以提高程序的性能和可靠性。
3、軟硬件環(huán)境
1)、軟件版本:KEIL MDK 5.38a
2)、電腦環(huán)境:Windows 11
3)、外設(shè)硬件:無
4、解決方法
1)、進入到debug模式下,找到Debug->Memory Map。(如圖4-1)

圖4-1
2)、然后在打開的Memory Map窗口中可以看到(如圖4-2),在Current Mapped中顯示出當前工程的映射的內(nèi)存范圍。地址對應(yīng)于μ Vision將邏輯段映射到物理段的方式。例如,0x00xxxx表示DATA、IDATA或EDATA空間中的地址;0x01xxxx表示XDATA空間中的地址,0xFFxxxx表示CODE空間中的地址,并且后面還有對應(yīng)內(nèi)存范圍的讀、寫、執(zhí)行權(quán)限。

圖4-2
3)、如果想要設(shè)置某一個內(nèi)存范圍的權(quán)限,可以在Map Range下面的輸入框中對應(yīng)的內(nèi)存范圍。然后,可以通過勾選下面的Read、Write、Execute來配置對應(yīng)內(nèi)存范圍的權(quán)限。然后,點擊Map Range將指定的內(nèi)存范圍添加到列表當中。(如圖4-3)

圖4-3