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