解决Keil 报错:CMSIS-DAP-Cortex-M ErrorCannot access Memory (@ Oxe00ffff0, Read, Acc Size: 4 Byte)
一、问题背景
开发环境:keil 5 v5.36
MCU型号:AT32F437(国产MCU,和STM32F4是一样的)
下载器:DAP-Link
二、问题现象
我在给AT32F437这个MCU成功烧录一次程序之后,后面再烧录程序就Keil 报错:CMSIS-DAP-Cortex-M ErrorCannot access Memory (@ Oxe00ffff0, Read, Acc Size: 4 Byte),如图:

三、解决办法
1.进入 AT32 原厂 Bootloader(STM32也一样)

先断电MCU,短接BOOT0到VCC 3.3V ,BOOT1到GND 0V:
2.检查下载器是否正常连接
MCU 上电,尝试用 DAP-Link (ST-LINK/Jlink等)连接,在keil的Dbug菜单查看:

3.全片擦除FLASH
执行 “全片擦除”,清除所有用户代码(理论上不用切片擦除也可以,以防万一就全片擦除)

4.重新烧录程序
找到一个配套的确定之前可以正常烧录的程序,烧录好程序后,再断开BOOT0,按下复位或者重新上点MCU,此时MCU已经恢复正常了!!

解决问题后,我经过分析发现我出现这个下载失败的根本原因:我下载了一个8M晶振的程序到我这个24M晶振的开发板上面。。。。导致的MCU系统时钟配置错误导致启动异常造成无法下载程序了。
四、常见的下载失败的原因
硬件与连接问题
-
SWDIO / SWCLK 接反或未连接
-
GND 未共地或接触不良
-
Vref 未连接或电压错误
-
目标板未上电
-
排线过长、信号质量差
-
外部电路拉死 SWD 引脚
DAPLink 本体问题
-
DAPLink 固件过旧或不支持目标 MCU
-
DAPLink 工作模式错误(MSD / CMSIS-DAP 不匹配)
-
DAPLink 被其他软件或端口占用
MCU 调试接口问题
-
程序中关闭或重映射了 SWD/JTAG
-
GPIO 复用导致 SWD 引脚失效
-
需要 “Connect under Reset” 才能连接
启动与运行状态异常
-
BOOT0 / BOOT1 配置异常
-
程序上电即死循环或 HardFault
-
系统时钟配置错误(HSE / PLL)
-
MCU 进入低功耗模式(STOP / STANDBY)
Flash / 安全相关
-
Flash 写保护开启
-
读保护(RDP Level 1 / 2)
-
Option Bytes 配置异常
下载工具配置问题
-
选择了错误的 MCU 型号
-
调试接口模式(SWD / JTAG)不匹配
-
SWD 下载频率过高
-
Keil / OpenOCD 配置错误
其他较少见问题
-
MCU 芯片已损坏
-
电源电压不稳定或上电时序异常
工程经验速记
-
优先查 Vref 和 SWD 接线
-
下载失败先降 SWD 频率
-
连不上就复位下连接
-
怀疑程序干死调试口就全片擦除
更多推荐



所有评论(0)