实验背景
在https://blog.csdn.net/sinat_25428663/article/details/143027011?spm=1001.2014.3001.5501分享中说到,当前板子是无法下载程序到片外flash的。本次分享介绍解除flash芯片的写保护。
实验目的
解除板子上flash芯片的写保护。
实验步骤
板子上用到的flash型号如下:
flash芯片有对应的状态寄存器(status register)来说明当前该芯片的一些设置和状态。
其中BP4-BP0和CMP共同决定flash芯片哪些block被保护。如下表
首先我们来读取状态寄存器,来确认flash的哪些block被设置了保护,读状态寄存器的指令如下:
读取的状态寄存器的值如下:
S15-S8
S7-S0
可以知道CMP的值为0,BP4-BP0的值为5'b01010,则如下的flash block被设置了写保护:
解除写保护的方法就是重写状态寄存器,将BP4-BP0的值写为5'b00000。写状态寄存器的指令如下:
这里需要注意的是,在写状态寄存器指令(WRSR)执行之前,需要执行写使能(WREN)指令。
写状态寄存器之后,再读取状态寄存器,如下:
可以看到BP4-BP0的值已经被成功设置为5'b00000, 说明所有的flash block的写保护都被解除了。测试一下,固化一个程序到片外flash,固化成功,打印信息如下:
至此,解除板子上flash芯片写保护的内容介绍完毕。