BIOS开发笔记 8 – SPI Flash

简介

SPI Flash是一种使用SPI接口的非易失性存储器,常在PC中被用于存储BIOS固件,所以也把它称为BIOS ROM。BIOS ROM是PC中必要的元件之一,它通过SPI接口连接到CPU中,CPU上电复位后,会从Flash执行BIOS代码,开始整个初始化流程。

生产ROM芯片的厂家很多,主要有Winbond、Intel、ATMEL、SST、MXIC等品牌。由于Winbond(华邦)生产BIOS ROM芯片时间较早,与主板的原始设计相兼容,因而市场占用量较大。

参数

以Winbond W25Q128JV为例,来了解下SPI Flash相关的参数。

从规格书中可知道,该ROM大小为128Mb(16MB),由65536个Page组成,其中,每个Page大小为256 byte,每16个Page组成一个Sector(4KB),每16个Sector组成一个Block(64KB)。要注意一下的是,每个厂商的Flash可能对这些概念的定义有所差异,需以实际为准。

Flash中一般有8个PIN,其定义如下图示:

从图中可看到,除了SPI中定义的CS、CLK、DI和DO 4个标准的信号外,还有IO的定义,它的作用是什么呢?

这里涉及到了三种SPI ROM的传输指令,分别是Standard SPI Instructions,Dual SPI Instructions和Quad SPI Instructions。当SPI ROM以Standard SPI Instructions传输时,DI用于向设备写地址、地址或数据等,DO用于从设备读取数据或状态,也就是只能进行单向传输。当SPI ROM以Dual SPI Instructions传输时,DI和DO信号将变为IO功能(IO0、IO1),即两个信号都可以收发数据,传输速度相比第1种模式有较大提升。当SPI ROM以Quad SPI Instructions传输时,DI和DO变为IO0和IO1,同时IO2和IO3可以进行传输数据,比模式2多了2个IO,传输速度又得到了提升。综上,IO信号是在SPI Flash处于Dual/Quad模式时作为IO功能的,当处于标准SPI模式时,它们是无效的。

如前文所述,CPU复位后,会从SPI ROM执行或读取代码,如果SPI ROM支持的速度越高,读取将越快,开机时间则越短,所以读取速度是衡量一个SPI ROM性能的重要指标。

最后再提一下另一个我们需要关心的参数,Vendor ID和Device ID。这两个ID可以说是每个Flash型号的身份,用于让固件区分当前使用的是哪种Flash,以便加载相应的配置信息。

烧录接口

烧录固件的时候,必须将SPI ROM与烧录器连接起来,连接的方法跟随着硬件的设计而有些差异。

1.调试阶段使用Socket的方式,当需要烧录的时候,可直接将flash从座子取下来,再放到烧录器的座子上刷入。

2.设计线路时自定义排线或插针接口。此方法的Flash是直接贴在板子上的,可以通过排线与烧录器连接,然后刷入固件。

3.使用测试夹。这种方法对于硬件来说是最方便的,因为无需做多余的预留,只需要一个测试夹,便可以让flash与烧录器连接起来。但有一个缺点,测试夹与flash接触的引脚容易磨损变得光滑,会造成夹不稳接触不良问题。

仿真

仿真即通过仿真器来模拟硬件设备,我们所使用的SPI ROM同样也可以用仿真实现。仿真器可以给开发提供快速的测试和调试环境,几秒钟便可以将固件下载到仿真器中,大大提高了开发效率。

仿真器可以模拟出指定某种SPI ROM型号,然后可以将固件快速“写入”其中,此时仿真器相当于一个SPI ROM,只需将仿真器的排线接到主板的仿真器接口(有些大厂在设计主板时,除了预留烧录接口,还会预留仿真接口),便可以进行调试。

目前我所知道的仿真器是DediProg生产的EM-100,价格比较昂贵,淘宝上原装的售价六七千。

版权声明:
作者:bin
链接:https://ay123.net/mystudy/bios/1560/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
BIOS开发笔记 8 – SPI Flash
简介 SPI Flash是一种使用SPI接口的非易失性存储器,常在PC中被用于存储BIOS固件,所以也把它称为BIOS ROM。BIOS ROM是PC中必要的元件之一,它通过SPI接口连接……
<<上一篇
下一篇>>
文章目录
关闭
目 录