k60 NANDFLASH控制器(NFC)

NANDflash控制器提供標準NAND flash存儲器設備的接口。由不同的控制邏輯單元和一個9KB 的SRAM buffer組成。提供一個8-和16位的nand flash設備的無縫接口,nand flash 的頁大小可以是512字節、2KB、4KB和8KB。

Block — (specified by device) NAND device最小的擦除單元, 由許多頁組成。

Page — (specified by device) unit of flash data containing main and spare areas
• Main area of a page — stores data
• Spare area of a page — stores ECC and other software information
Sector — 一個基本的傳輸單元
• 對於設備的頁是 2KB甚至更小,與頁一樣大小;
• 對於設備的頁大於2KB, 頁被分解爲許多虛擬頁,這種情況下,sector size就是virtual page大小
• Virtual page — is the physical page size divided by the splitting factor,
NFC_CFG[PAGECNT]

ECC — error-correcting code
• BCH (Bose Chaudhuri Hocquenghem) — cyclic error-correcting code that corrects
multi-bit errors

32.1.2 功能

NAND flash控制器有以下功能:

8位或者16位NAND flash接口

9 KB RAM buffer
• Memory-mapped registers and SRAM buffer

支持flash device指令, such as page read, page program, reset, block
erase, read status, read ID, copy-back, multiplane read/program, interleaved read/
program, random input/output, read in EDO mode.
• Integrated DMA engine
• Two configurable DMA channels
• Use DMA channel 1 only to read/write a page for main and spare area of a
page
• Use DMA channel 1 to read/write the main area of a page, and DMA
channel 2 for the spare area
• ECC mode
• In ECC mode, NFC supports 4/6/8/12/16/24/32-bit error correction.
• ECC mode 可以被繞過.

32.2 外部信號描述

Table 32-1. NFC Signal Properties
Name                                                  Function                                             I/O                        Reset
NFC_ALE                                     Flash address 鎖存使能                             O                               1
NFC_CE                                           Flash chip enable                                  O                               1
NFC_CLE                                        Flash command鎖存使能                        O                               1
NFC_R/B                                          Flash ready/busy                                    I                           Pull up
NFC_RE                                             Flash read enable                                O                               1
NFC_WE                                           Flash write enable                                 O                               1
NFC_IO[15:0]                                     Flash data bus                                     I/O                              —

Need to configure both PE and PS bit to 1'b1 of pin control register PORTC_PCR18 to make NFC_R/B pull up, when  PTC18 is configured to MUX=6 (NFC_R/B).

32.3 Memory Map/Register Definition

32.3.1 Flash command 1 (NFC_CMD1)

定義可能會被傳送到flash設備的第二第三指令字節。

31-24 BYTE2

23-16 BYTE3

32.3.2 Flash command 2 (NFC_CMD2)

31-24 BYTE1 定義可能會被傳送到flash設備的第一指令字節。

23-8 CODE 用戶定義的flash操作順序

每一位代表一個行爲。如果位被設置,相應的行爲在寫1來開始後就會被執行。

0111_1110_1110_0000 (0x7EE0) 讀數據(BYTE1, 5x Address, BYTE2, R/ B , read data)
1111_1111_1101_1000 
(0xFFD8) 寫頁 (DMA,BYTE1, 5x Address, write data, BYTE2, R/ B , BYTE3, read

status)
0100_1110_1101_1000 (0x4ED8) 塊刪除(BYTE1, 3x Address, BYTE2, R/ B , BYTE3, read status)
0100_1000_0000_0100 (0x4804) 讀 ID (BYTE1, 1x Address, read ID)
0100_0000_0100_0000 Reset (0x4040) (BYTE1, R/ B )
0111_1110_0000_0000 CMD+address (0x7E00) (BYTE1, 5xaddress)
1111_1111_1100_0000 Write page burst (0xFFC0) (DMA,BYTE1,5xAddress, write data, BYTE2,R/ B )

0 BUSY_START還有一個忙指示器和開始指令BUSY_START

值爲0 在讀的過程中,flash控制器空閒並且可以傳送下一條指令。在寫過程,無行爲。

值爲1 在讀過程中,指令執行是忙狀態。在寫過程,開始指令執行。

32.3.3 Column address (NFC_CAR)

列地址的第二字節與第一字節column

15-8 BYTE2 

7-0   BYTE1

32.3.4 Row address (NFC_RAR)

29 CS1  1是使能。

28 CS0

25 RB1

Ready/busy  1使能

決定是否NFC_R/B正在等待R/B指令。如果NFC_CE與NFC_R/B線數相等,則CSn與RBn區域必須保持相等的值。如果只有NFC_R/B正在使用,則CSn決定真正的片選,並且該區域一直是0.

RB0

。。。。。。。。。。。。則CSn決定真正的片選,並且該區域一直是1.

行地址的第一、第二、第三字節。ROW

23-16 BYTE3

15-8   BYTE2

7-0     BYTE1

32.3.5 Flash command repeat (NFC_RPT)

15-0 COUNT

 16-bit repeat count
確定 NFC_CMD2[CODE] 被執行
多少次。 If 0 or 1, flash command 被執行了一次。

32.3.6 Row address increment (NFC_RAI)

行地址增量

23-16 INC3 行地址的第三字節增量

15-8   INC2 行地址的第二字節增量

7-0     INC1 行地址的第一字節增量

32.3.7 Flash status 1 (NFC_SR1)

read ID command返回的第一、第二、第三、第四字節。

31-24 read ID指令返回的第一字節

23-16 。。。。。。。。。二。。

15-8  。。。。。。。。。三。。

7-0   。。。。。。。。。四。。

32.3.8 Flash status 2 (NFC_SR2)

read ID command返回第五字節。由讀狀態指令返回的字節。

31-24 read ID返回的第五字節

23-8保留

7-0  由讀狀態指令返回的字節。

32.3.9 DMA channel 1 address (NFC_DMA1)

31-0 ADDRESS   DMA 通道1 地址. 8-byte aligned.

32.3.10 DMA configuration (NFC_DMACFG)

被DMA通道傳輸的字節數,8字節倍數。DMA通道的狀態(被激活,當觸發就會開始傳輸;不被激活)。

31-20 count1 DMA通道1

19-13 COUNT2 DMA通道2

12-9  OFFSET2 DMA通道2的256字節偏移。

8-2 保留

ACT1 DMA通道1狀態  0是未被激活 ;1激活

ACT2 DMA通道2 狀態 0是未被激活; 1 激活

32.3.11 Cach swap (NFC_SWAP)

當DMA傳輸數據從或去NFC cache (NFC SRAM buffer),或者當CPU讀或者寫數據來自或者去NFC cache通過內部總線,所有的到達nfc_swap[addr1]的通道都直接到達nfc_swap[addr2]。類似的,所有到達nfc_swap[addr2[的通道也直接到達nfc_swap[addr1].

這個功能可以允許壞塊標記在頁空餘空間的第一個位置。因爲flash控制器的交織數據和頁大小大於2KB的flash設備上的ECC字節方式,壞塊標記的位置被轉移了,並且不在頁的空餘空間的第一位置出現。cache swap功能可以讓壞塊標記在希望出現的位置上。

27-17 ADDR1 低的交換地址

11-1  ADDR2 高的交換地址

32.3.12 Sector size (NFC_SECSZ)

12-0  如果只有頁的部分被編程或者讀,SIZE可以被設置爲affected bytes, 不是頁的大小.然後ECC和DMA(data bytes)在指定的字節數上操作,由SIZE表明。

對於16位數據寬度的flash設備,只有odd SIZE被支持。實時的大小是SIZE-1.

當用到ECC功能,確保SIZE等於默認的值(data+ECC字節)。

32.3.13 Flash configuration (NFC_CFG)

31 STOPWERR     錯誤停止位 0 寫錯誤時不停止

30-22 ECCAD[11:3]  ECC狀態在SRAM中的字節地址

21 ECCSRAM  0 不將ECC狀態寫入SRAM ;1 將ECC狀態寫入SRAM

20 DMAREQ  0 在ECC執行後不傳輸sector;1 在ECC執行後使用DMA傳輸sector

19-17 ECCMODE 

000 No correction, ECC bypass
001 4-error correction (8 ECC bytes)
010 6-error correction (12 ECC bytes)
011 8-error correction (15 ECC bytes)
100 12-error correction (23 ECC bytes)
101 16-error correction (30 ECC bytes)
110 24-error correction (45 ECC bytes)
111 32-error correction (60 ECC bytes)

16 FAST 快速1、慢速 0  flash timing

15-13 IDCNT 讀id指令的讀的字節數

12-8 timeout

7 位寬BITWIDTH 0是8位寬flash mode;1是16位flash mode

5 AIAD  1自動增加flash行地址 ;0不自動增加行地址

4 AIBN  1自動增加buffer number;0不自動增加。。

3-0 PAGECNT

虛擬頁來編程或者讀的數量。

32.3.15 Interrupt status (NFC_ISR)

寫錯誤中斷、結束中斷、指令空閒中斷、忙等。。。

31 WERR      寫錯誤中斷

30 DONE      完成中斷

29 IDLE        指令空閒中斷

28 保留

27 WERRNS   寫錯誤狀態

26 CMDBUSY  指令忙

25 RESBUSY   residue engine busy

24 ECCBUSY   ECC engine 忙

23 DMABUSY   DMA engine忙

22 WERREN     NFC_ISR[WERR]使能

21 DONEEN      Enable bit for NFC_ISR[DONE]

20 IDLEEN        Enable bit for NFC_ISR[IDLE]

19 WERRCLR  寫1清除NFC_ISR[WERR].

18 DONECLR  寫1清除NFC_ISR[DONE].

17 IDLECLR    寫1清除NFC_ISR[IDLE].

5-4 RESBN     Residue buffer number

3-2 ECCBN     ECC buffer number

1-0  DMABN    DMA buffer number

32.4 功能描述

NFC在單個或者一堆外部NAND flash芯片上執行命令。操作包括讀、編程、復位、擦除、狀態讀、讀ID。

NFC塊包含一個DMA engine和build-in ECC logic。對於每一個讀和寫,NFC執行ECC計算on-the-fly。兩個DMA通道被配置成每一個讀和寫:一個爲了main area,一個爲了spare area。可以把第二個DMA通道失能,只用第一個DMA通道來傳輸main和spare數據。

有8種ECC設置:0,4,6,8,12,16,24,32位錯誤。使用0,8,12,15,23,30,45和60ECC字節。The ECC works on page sizes of 512+spares bytes, 1K+spares bytes, 2K+spares bytes. The ECC algorithm used is a BCH code.

error corrector可以將ECC狀態寫入spare area,因爲讀是流水線的。

ECC狀態被寫入sector的輔助區,並且傳送到存儲器,It's up to the CPU to inspect the ECC
result in memory, and act appropriately.

讀是流水線型. 寫是 flow-through;在寫過程中沒有提前操作被執行. 在寫過程中發現了問題,指令序列就會被中斷,CPU被告知。

32.4.1 NFC Buffer Memory Space

存儲器大小是1152 X 64位,被分成4個緩衝區,在non-boot模式下,地址範圍是

• Buffer 0: 0x0000 – 0x08FF
• Buffer 1: 0x1000 – 0x18FF
• Buffer 2: 0x2000 – 0x28FF
• Buffer 3: 0x3000 – 0x38FF

32.4.5  NAND Flash中的數據組織

在flash上的頁可以被分解成很多虛擬的ECC/DMA頁。控制參數是NFC_CFG[PAGECNT]。參數給出了虛擬ECC/DMA頁的數量在一個flash 頁中。

虛擬頁被分解爲用戶(主要)區域和ECC(spare)區域。在用戶區域的數據可以被應用設置或使用,在ECC區域的數據被ECC設置和使用。

32.4.6 Flash Command Code Description

在NFC_CMD2[CODE]16位指令代碼,有一位被設置,行爲就會執行,指令重複的次數根據NFC_RPT[COUNT]的值。如果值是1或者0,指令執行一次。

32.4.7 Interrupts

有兩種標識指令執行結束的中斷:

1、執行完中斷NFC_ISR[DONE].標誌着當一個新的指令被分配。結束中斷在flash數據被改正和送入存儲器之前被給出,因爲ECC engine和DMA engine的操作是流水線的。

2、指令空閒中斷NFC_ISR[IDLE].如果你想使用在接下來的過程中產生的數據就使用該中斷。

當使用1完成中斷,可以假定當done中斷被接收寫頁面傳輸結束。當done被讀頁面接收,數據可能還在DMA或者ECC中。爲了檢查這個,CPU應該記住與指令聯繫的緩存的號碼(NFC_CMD2[BUFNO]),並且等待直到DMA和ECC有一個空閒或者都在不同緩存號碼上忙。(The ECC buffer

number and DMA buffer number fields do not match the BUFNO specified with
command.)可以檢查任意done中斷或者查詢寄存器。


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