我目前正在开发基于STM32F4的独立电路板(STM32F469)。到目前为止,一切正常。我通过ST-Link实用程序使用STM32F4-DISCOVERY ST-Link通过SWD编程我的微控制器。
星期五,当我离开工作时,一切都运转良好。今天早上,当我回到办公室时,我的计划没有在董事会上开始。当我尝试通过SWD连接到STM32F4时,STM32 ST-Link Utility显示警告说:无法读取内存!禁用读出保护并重试
我没有设置任何东西。我做了一些研究,我尝试了一些事情:
我不知道该怎么做。当我阅读STM32F4参考手册(RM0386),第87页时,我们可以阅读:
级别1:已启用读取保护。
它是选项字节擦除后的默认读保护级别。通过将任何值(分别用于设置级别0和级别2的0xAA和0xCC除外)写入RDP选项字节来激活读保护级别1。设置读保护级别1时:
- 在连接调试功能或从RAM或系统内存引导加载程序引导时,无法访问(读取,擦除,编程)闪存或备份SRAM。在读取请求的情况下会生成总线错误。
- 从闪存启动时,允许从用户代码访问(读取,擦除,编程)闪存和备份SRAM。
当级别1处于活动状态时,将保护选项字节(RDP)编程为级别0会导致闪存和备份SRAM被批量擦除。结果,在删除读取保护之前清除用户代码区域。批量擦除仅擦除用户代码区域。包括写保护的其他选项字节在批量擦除操作之前保持不变。 OTP区域不受大量擦除的影响,并保持不变。仅当级别1处于活动状态且请求级别0时才执行批量擦除。当保护水平增加(0-> 1,1-> 2,0-> 2)时,没有质量擦除。
首先,有可能RDP可能因某种超自然现象而被激活吗?我发誓,我没有设置这一点。另外,正如我可以阅读的 Level 1 描述,可以回到0级(但用户程序被删除)。对我来说,从1级到0级不起作用。所以....我担心RDP水平实际上是2,在这种情况下......好吧我死了。
无论如何要解决这个问题?我不明白周末会发生什么变化,因为一切都很好,现在一切都没有。
提前致谢。
答案 0 :(得分:1)
在擦除闪存(0xff ...)时,我在使用选项字节播放时随机设置了读/写保护。
尝试这样做:
您将看到芯片被擦除,并且在“读/写保护”选项卡上的“选项字节”屏幕中,您会看到以前被保护的相应存储体现在被自动取消选中。
答案 1 :(得分:0)
我认为这是因为您的ST-link与目标板的联系不完整。在其中一个调试引脚短路或其中一个调试引脚连接被切断之前,我已经遇到过这个问题。由于您没有自己激活RDP并且似乎无法取消保护,我相信它肯定是由于连接问题。确认电气连接,看它是否有效。