1 问题描述
MDK软件模拟仿真提示没有读写权限,只能单步运行。error提示:
*** error 65: access violation at 0x40023C00 : no 'read' permission
原因:map地址空间权限映射有问题。部分地址空间没有读写的权限,造成程序不能自动运行。
2 解决方法
2.1 方法一
修改工程配置选项中的debug选项卡,STM32F1系列芯片验证可以正常使用。F4系列芯片不能正常使用。
2.2 方法二
直接在调试页面修改map地址权限映射,正常修改后程序可正常运行。退出调试时需要重新设置,操作不方便。
调试页面下,在DEBUG选项卡下选择Memory Map 选项如下图:
可根据错误提示进行map地址映射添加,选中Read
和Write
,然后点击Map Range
2.3 方法三
在工程配置选项中的debug选项卡,添加自定义的Initialization file
。(推荐使用)
工程文件中新建debug.ini
文件,在文件中添加map地址权限映射代码
map 0x40000000, 0x400077FF read write // APB1
map 0x40010000, 0x40014BFF read write // APB2
map 0x40020000, 0x4007FFFF read write // AHB1
map 0x50000000, 0x50060FFF read write // AHB2
map 0x60000000, 0xA0000FFF read write // AHB3
map 0xE0000000, 0xFFFFFFFF read write // CORTEX-M4 internal peripherals
参考:
- STM32F4 MDK5软件仿真 error : no ‘read’ permission
- UVISION DEBUGGER: Simulation of Cortex-M Devices
- UVISION DEBUGGER: Error 65: Access Violation
END