迅维网

标题: 论BIOS芯片的代换(SPI芯片OTP区块作用)与JEDEC标准之SFDP [打印本页]

作者: linglongx    时间: 2018-4-5 01:21
标题: 论BIOS芯片的代换(SPI芯片OTP区块作用)与JEDEC标准之SFDP
本帖最后由 linglongx 于 2018-4-5 01:31 编辑

先说一说Flash芯片的OTP区块.这是Flash芯片中单独设计的一个独立的区块(注:早前的Flash芯片是不带OTP分区的),一般大小为8192比特位,按每8比特位存储一个字节计算可以存储1KB的数据。这个区块需要单独的读取与写入指令。(所以有些不带OTP操作的编程器无法读取与烧录它)它还有个重要特性即每个存储位只能进行一次性烧录,之后里面保存的数据无法再次改变。这个区块的设计起初是为了让硬件开发商能存储少量永久性的数据。



什么是SFDP? SFDP是Serial Flash Discoverable Parameters的简称,翻译成中文就是“串行Flash芯片的参数”。它是JEDEC标准的一个子集。这个标准出台的原因是因为现在出产的串行Flash芯片型号越来越多;各型号芯片的工作频率、读写速度、擦除与刷写方式不尽相同,在程序设计人员设计针对Flash芯片读写等操作的程序时就需要针对不同的型号的芯片查询芯片手册并进行不同的设计。有了这个标准之后就可以使用统一的接口来读写芯片了。

SFDP与OTP区块的关系是SFDP数据通常都由硬件开发厂商写入OTP区块的。

现在新型Flash芯片工作频率越来越高,通常工作频率越高的芯片读写速度也越快。但使用Flash芯片的器件并不知道Flash芯片的最佳工作频率。怎么办呢?JEDEC标准规定先统一使用50MHz的频率读取Flash芯片OTP区块中的SFDP信息,然后根据SFDP信息重新调整Flash芯片的读写。

既然是标准,那么SFDP信息就有一个规范的数据结构,那到底这个数据结构中储存的都是些什么玩意呢?请看下图:






看完你是不是瞬时明白了,BIOS芯片OTP区块中保存的SFDP信息跟主板是哪家的、什么芯片组、BIOS加密等没有半毛钱半系。(当然不能排除以后不会加入其它功能)它就是一个实实在在的芯片自身的参数信息。



现在我们讨论一下为什么现在有些新款的主板(包括笔记本电脑)更换BIOS芯片后出现不能开机的情况?说到这儿可能有些朋友心想我早就知道该怎么干了“我把旧的BIOS芯片中的OTP数据读出来烧录到新的BIOS芯片的OTP区块中”。 但是有些朋友写了OTP还是不行。这是为什么呢! 因为换的不是同型号的芯片。前面不是说了么,OTP中保存的是SFDP,这个SFDP是什么!是串行Flash芯片自身的工作参数。所以针对这种不同型号BIOS芯片的代换,只要刷入对应本芯片的SFDP数据就可以正常工作了.





换了BIOS芯片不正常都是因为新主板的桥与EC等使用Flash的芯片开始支持JEDEC标准了。如果找不到SFDP信息或是SFDP信息与Flash芯片的自身工作参数不匹配,都会造成无法读取BIOS.





下面提供一下几个常用的BIOS芯片的SFDP数据, 希望大家碰到不同型号的BIOS芯片带有SFDP信息的以芯片型号为名备份一下,在下面跟贴时上传。我会分类整理以供大家下载。
SFDP数据:
25Q32FV_1.rar (135 Bytes, 下载次数: 20)