芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密

飞芯科技提供芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密逆向服务

芯片解密华邦W25QXX SPI Flash使用笔记

芯片解密W25Qxx系列(W25Q80, W25Q16 andW25Q32)的Flash内部是按照Page、Sector、Block的结构来划分的,一个Page为256个Byte,一个Sector为16个Page也就是4KB,一个Block为16个Sector也就是64KB。

不像上学那会一样有时间自己写驱动代码了,现在直接拿例程代码进行修改了。总的来说W25Qxx系列的Flash的SPI控制逻辑就是:

1、拉低片选引脚

2、SPI写命令字

3、SPI读/写数据

4、拉高片选引脚

5、等待完成操作

芯片解密数据擦除可以以Sector为单位也可以以Block为单位,进行Sector擦除的时候发送0x20命令字,然后跟随24位的存储地址,写入的24位地址应该是会将低12位忽略掉,不过数据手册上没有说明。进行Block(64KB)擦除的时候发送0xD8命令字,然后发送24位的地址,芯片内部同样会忽略低16位地址。擦除之后芯片内所有数据都是0xFF,这是Flash的特性,感兴趣的可以查阅资料,这里做个简单的说明。Flash存储单元中是无法写入位1的,只能写入位0,所以要写入数据的话要先将原来的数据都擦出成0xFF然后写入数据的时候遇到bit 1时不做处理,遇到bit 0时写入0即可。这就是为什么Flash进行写入之前需要进行擦除的原因。我在W25Q16上做了一个有趣的测试,在不擦除Sector的情况下写入,发现依然可以写入,读出写入的数据发现新写入的数据的0会将源数据中的对应位的1覆盖,但是新写入的1并不会覆盖原数据中对应位的0,印证了上面介绍的Flash原理。也就是说如果一个地址处的数据是0xFF,那么这个地址还可以写入任何数据,否则不可能完整写入任何数据。

数据写入的时候只能按照Page来写入,芯片解密最多一次只能写256个字节,也就是一个页的空间,写入的时候可以不从页的开始地址写入,如果一次写入字节数溢出了一个页的空间,那么多出来的会从循环到页的开始地址处覆盖原来的数据,数据手册的10.2.14节说的很明白。页写的命令字为0x02,尾随24位的地址。

有时候我们还需要读取芯片的ID号,W25Qxx系列Flash有多个ID号,Manufacturer ID、Device ID、Unique ID、JEDEC ID,W25Q16读取到的Manufacturer ID为0xEF,Device ID为0x14,Unique ID没读出来,JEDEC ID没兴趣读......我感兴趣的Unique ID却没读出来,因为这个ID是可以当做程序加密使用的。算了,反正STM32也有唯一标识ID,写入到FLASH中也可以实现程序加密。



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.taihedz.cn
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信