little_white321 2023-01-29 17:36 采纳率: 66.7%
浏览 48

如何解除s25系列FLASH的写保护

在完成通过网口的远程更新过程中,我在sdk中将例程srec spi bootloader引导程序跑通可以成功加载功能程序后,无法再用spi相关指令对s25fl256s FLASH进行擦除读写,调试中发现读id正确,读FLASH发现readbuffer中均为0xcc,用vivado读flash数据发现对应区域均为0xff,但是用vivado可以向flash中烧写程序,如下图所示:

img

在这之前调试flash发送相关指令进行擦除读写时均正确,我猜测是bootloader跑通之后将flash的写保护打开了,需要解保护才能对flash操作,根据s25fl256s数据手册,我尝试过将SR1的BP2、BP1、BP0这三位修改为0以及CR1寄存器的BPNV位设置为1来解除写保护,不仅没有解决问题,反而遇到了更大的错误,原先可以用vivado向flash中烧写文件现在用vivado烧写也失败,报错如下图:

img

仔细阅读flash数据手册发现CR1的BPNV位是OTP(One Time Program)类型的,即设备出厂后只能更改一次,CR1的BPNV位出厂状态下是0,被改为1后flash每次掉电重新上电后全局写保护始终开启,且无法再次将BPNV位改回去(目前我没找到办法),所以目前我遇到的问题就是如何解除s25fl256sFLASH的写保护,以及srec spi bootloader引导程序是如何给flash加上保护的,我给代码打断点实在没看出来。
想问下大家有没有遇到过这种情况,以及怎么解决的,先谢谢各位了。

  • 写回答

2条回答 默认 最新

  • 「已注销」 2023-01-29 22:34
    关注

    你用的什么厂家的

    评论

报告相同问题?

问题事件

  • 创建了问题 1月29日

悬赏问题

  • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
  • ¥20 网站后台使用极速模式非常的卡
  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)