[BIOS] Flash ROM introduction

A.學習目標( FlashROM introduction)
a.瞭解Flash ROM的歷史以及知道如何存取Flash ROM

B.大綱
1. What is a FlashROM
1.1. History of ROM
1.2. Communication interface
1.3. Type of Flash Memory
2. FlashROM limitations
3. ICH7 Dependent Setting
4. System Memory Map
5. Software Command Sequence

C. FlashROM introduction
C.1. What is a FlashROM
FlashROM為一種非揮發性的儲存設備,也就是電源消失,資料仍舊被保留,其應用的範圍非常包括數位相機的記憶卡、USB隨身碟等,都可見到FlashROM的蹤影。

C.1.1. History of ROM
以下各種記憶體解釋擷取自Wiki [1][2]
■ 唯讀記憶體(Read-Only Memory
是一種只能讀取資料的記憶體。在製造過程中,將資料以一特製光罩mask)燒錄於線路中,其資料內容在寫入後就不能更改,所以有時又稱為「光罩式唯讀記憶體」(mask ROM)。
        此記憶體的製造成本較低,常用於電腦中的開機啟動。

■ 可程式唯讀記憶體(Programmable ROMPROM
其內部有行列式的鎔絲,可依使用者(廠商)的需要利用電流將其燒斷,以寫入所需的資料及程式,一經燒錄便無法再更改。

■ 可抹除可編程唯讀記憶體(Erasable Programmable Read Only MemoryEPROM
可利用高電壓將資料編程寫入,抹除時將線路曝光於紫外線下,則資料可被清空,並且可重複使用。通常在封裝外殼上會預留一個石英透明窗以方便曝光。

■ 電子式可抹除可編程唯讀記憶體(Electrically Erasable Programmable Read Only MemoryEEPROM
運作原理類似EPROM,但是抹除的方式是使用高電場來完成,因此不需要透明窗。

■ 快閃記憶體(Flash Memory)
是一種電子清除式可程式唯讀記憶體的形式,允許在操作中被多次擦或寫的記憶體。這種科技主要用於一般性資料儲存,以及在電腦與其他數位產品間交換傳輸資料,如記憶卡與隨身碟。
        快閃記憶體是一種特殊的、以大區塊抹寫的EEPROM。早期的快閃記憶體進行一次抹除掉就會清除掉整顆晶片上的資料。

C.1.2. Communication interface
FlashROM封裝晶片的形式有很多,包括TSOPPLCCSOICSDIP等。但這僅僅是封裝的方式不同而已,對於同一種型號的晶片,不論是什麼封裝形式,其管腳的功能是一一對應的。
現今FlashROM封裝方式的主流是SPI(Serial Peripheral Interface),原因在於SPI只有8pin腳,成本也較低。

C.1.3. Type of Flash Memory
Flash Memory目前有二種規格,分別是NORNAND。其差別在於是否具有Random Access的特性,由於BIOS是需要隨機存取的,因此會使用NOR型態的Flash Memory
另外,NAND型態的Flash Memory較常用在數位相機的記憶卡等儲存設備。

        
        圖7.1 Type of Flash Memory

C.2. FlashROM limitations
在讀寫FlashROM時,分為三個步驟:
A. Erasable
Flash ROM讀寫時,是以一個Block為單位Block的大小有可能是64k32k等,這是根據FlashROM的支援程度。
舉例來說,若FlashROM一次讀寫的單位是64k,而只想寫入4k的資料,必須先將ROM裡的資料複製出來並更改,再一起寫到ROM裡,這樣可確保其他資料不被破壞。
B. Programmed
開始將資料寫入到FlashROM裡。
C. Verify
    驗證是否資料有寫入進去。

C.3. ICH7 Dependent Setting
由於FlashROM與南橋(ICH7)有關,可在ICH7BIOS Control Register (LPC I/FD31:F0)中的bit 0 可以設定ROM是否可讀寫。
        
        
         圖7.2 BIOS Control Register [3]

C.4. System Memory Map
FlashROM解碼到System Memory時,會從4G的最頂端開始開下存放,每一個Block64k。以FWH 4Mbit為例,Block76放的是BootBlock
7.3 System Memory Map

C.5. Software Command Sequence
          
          
        圖7.4 SOFTWARE COMMAND SEQUENCE [4]

SST39SF010A / SST39SF020A / SST39SF040為例,若要寫入資料至ROM裡則必須依照以下步驟:
    
        
        圖7.5 BYTE-PROGRAM ALGORITHM [4]

其他如Chip-EraseSector-Erase等流程請參照Spec

參考資料
[1] http://zh.wikipedia.org/zh-tw/ROM
[2] http://zh.wikipedia.org/zh-tw/Flash_memory
[3] Intel® I/O Controller Hub 7 (ICH7) Family
[4] SST39SF010A / SST39SF020A / SST39SF040 DATASHEET

留言