最近在使用STM32F105单片机做产品,使用SWD接口下载程序,遇到一些问题,得益于网上的一些文章最后得以解决,所以也想把问题解决的过程整理出来,以供出现同类问题的技术人员进行参考,本人没有系统地学习SWD接口下载程序的过程(每天的时间都在赶开发进度,很难静下心来系统地学习一项技术了,惭愧),只是提供一点经验。
问题:使用SWD模式下载程序,遇到
Cannot access Memory (@ 0xe00ffff0, Read, Acc Size: 4 Byte)
RDDI-DAP Error
等问题提示
问题发生以及解决的过程:
开始使用SWD模式下载程序都还比较顺利,
随着开发的程序增加,有一天突然不能正常下载程序了,提示信息如下:
这个问题应该是经常出现的,通常降低下载的速度即可,但是已经降到10kHz了,还是提示上述的错误
最后将频率降到5kHz,结果出现下面的错误提示,
后来在网上查了一下,感谢 夕阳西wisdom的博文,将单片机复位,可以通过硬件或设置编程器软件复位,再次以5kHz频率下载,并设置擦出整片FLASH,
经过较长时间,出现下面提示
此时可以放开复位,重新按照正常方式进行操作了,此时可以正常下载程序了。
**分析:**在我们接上SWD调试器时,STM32单片机已经上电复位并运行用户程序了,如果用户程序出现逻辑错误,会影响SWD下载程序的执行,所以会出现下载错误,用户程序可能产生的影响是,中断程序或看门狗启动影响了SWD下载程序的执行,所以通常通过降低编程速度来解决,但是如果出现严重的逻辑错误,即使以最低的速度编程也会超时,此时保持持续的复位,使得单片机上电后不能执行用户程序,这样下载程序就可以向前进行了,下载程序首先是擦除FLASH,擦除可以完成,但是后续的下载未必能正常完成,但在擦除之后再释放复位,此时上电复位后就没有用户程序的影响了,就可以正常下载程序了。