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

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

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

圖4-3