問題描述
CPU:STM32F407
MDK5軟件模擬提示沒有讀寫權限,只能一步一步運行。提示代碼如下:
*** error 65: access violation at 0x40023800 : no 'read' permission
*** error 65: access violation at 0x40023800 : no 'write' permission
*** error 65: access violation at 0x40023808 : no 'write' permission
*** error 65: access violation at 0x40023800 : no 'read' permission
*** error 65: access violation at 0x40023800 : no 'write' permission
根本原因是:map地址空間權限映射有問題。部分地址空間沒有讀寫的權限,造成程序不能自動運行。
解決方法
增加map地址空間權限映射。
根據網絡資源介紹方法大致有三種:
1.修改工程配置選項中的debug選項卡,STM32F1系列芯片驗證可以正常使用。F4系列芯片不能正常使用。
2.直接在調試頁面修改map地址權限映射,正常修改后程序可正常運行。退出調試時需要重新設置,操作不方便。
3.在工程配置選項中的debug選項卡,直接添加正確的Initialization file。(推薦使用)
方法3:
工程文件中新建“debug,ini”文件,在文件中添加map地址權限映射代碼
map 0x40000000, 0x40007FFF read write // APB1
map 0x40010000, 0x400157FF read write // APB2
map 0x40020000, 0x4007FFFF read write // AHB1
map 0x50000000, 0x50060BFF read write // AHB2
map 0x60000000, 0x60000FFF read write // AHB3
map 0xE0000000, 0xE00FFFFF read write // CORTEX-M4 internal peripherals
具體的map地址權限映射也可在調試界面中的memory Map選項中查看。
方法2:
調試頁面下,在DEBUG選項卡下選擇Memory Map 選項如下圖
可根據錯誤提示進行map地址映射添加。
方法1:
主要根據工程芯片型號配置相關參數