Intel TE28F320C3BA100 Flash讀寫函數的實現

JX44B0-1B教學實驗板上用的是一塊48引腳TSOP封裝的Intel TE28F320C3BA100的Flash存儲器,2M×16bit,Flash地址範圍從0x00000000~0x003FFFFF共4MB,其扇區劃分是sector00~07爲8KB,sector08~70爲64KB,8KB×8+64KB×63/1024=4MB,在Intel的數據手冊上該Flash的容量用32-Mbit來描述。

這塊Flash的特點在於所謂的3 Volt Advanced+ Boot Block,具有不對稱的扇區劃分(asymmetrically blocked)結構,Flash內部存在兩種類型的block——8KB大小的parameter blocks和64KB大小的main blocks,因此也衍生出兩種memory map——Top Boot Block(parameter blocks映射到高地址)和Bottom Boot Block(parameter blocks映射到低地址)。TE28F320C3BA100即屬於Bottom Boot Block,由字母B指示。

Flash可以使用2.7V~3.6V的電壓(Vpp)對其進行在系統(in-system)的讀、擦除和編程,因爲它的總線週期完全符合標準的微控制器的總線週期(All bus cycles to or from the flash memory conform to standard microcontroller bus cycles)。工作溫度範圍在-40~+85之間。

還值得一提的是該Flash靈活的存儲塊鎖定(Flexible Block Locking)機制,對於任一存儲塊都可以提供2級的保護(鎖定),第1級塊鎖定由軟件控制,而第2級塊鎖定還需要硬件的參與。The Intel Advanced+ Boot Block Flash Memory(C3) device offers an instant, individual block locking scheme that allows any block to be locked or unlocked with no latency, enabling instant code and data protection.

根據JX44B0-1B教學實驗板的原理圖可以知道該Flash和Samsung S3C44B0X微控制器的連接方式爲:S3C44B0X的ADDR1~ADDR21引腳接到Flash的A0~A20引腳,用以傳送地址;S3C44B0X的DATA0~DATA15引腳接到Flash的DQ0~DQ15引腳,用以傳送數據;S3C44B0X的nRESET引腳接到Flash的RP#引腳,用以復位;S3C44B0X的nOE引腳接到Flash的OE#引腳,用以使能輸出;S3C44B0X的nWE引腳接到Flash的WE#引腳,用以使能寫操作;S3C44B0X的nGCS0引腳接到Flash的CE#引腳,用以片選。

這塊Flash使用Command User Interface(CUI)和內置的自動化算法(automated algorithms)來簡化對Flash的編程和擦除操作。該Flash具有4種讀模式Read Array、Read Identifier、Read Status和Read Query;2種寫模式Program和Block Erase。對於Flash的各種操作和狀態切換都通過向CUI寫入相應的命令碼來實現。

Flash中內置了一個狀態寄存器(Status Register,SR)來指示Flash的當前工作狀態和各種操作是否成功。要讀取SR的當前值需要向CUI發送讀狀態寄存器命令(Read Status Register),命令碼爲0x70,SR中的內容將在DQ[7:0]上輸出。The Read Status Register (0x70)command causes subsequent reads to output data from the SR until another command is issued. The SR bits are output on DQ[7:0].

CUI Command Codes and Descriptions

Code(HEX)       Device Mode

FF                         Read Array

40                          Program Set-up

20                          Erase Set-up

D0                         Erase Confirm

                               Program/Erase Resume

                               Unlock Block

B0                          Program Suspend

                               Erase Suspend

70                           Read Status Register

50                           Clear Status Register

90                           Read Identifier

60                           Block Lock Set-up

                                Block Unlock Set-up

                                Block Lock-Down Set-up

01                            Lock-Block

2F                            Lock-Down

98                            CFI Query

C0                           Protection Program Set-up 

10                            Alternative Program Set-up

00                            Invalid / Reserved

to be continued...

FAQ

參考資料:

Intel Advanced+ Boot Block Flash Memory(C3) datasheet

blob-2.0.5-pre2/src/blob/intel16.c source code

Understanding the Linux Kernel 2rd Edition

Programming Embedded Systems in C and C++

ARM System Developer's Guide:Designing and Optimizing System Software

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章