91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶(hù)?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>存儲(chǔ)設(shè)備>閃存卡>

各分區(qū)宏定義 - NAND Flash嵌入式存儲(chǔ)系統(tǒng)設(shè)計(jì)

2011年04月25日 11:10 本站整理 作者:Spring 用戶(hù)評(píng)論(0
2.2 各分區(qū)宏定義

  #define FLASH_BLOCK_SIZE 0x40000 //16 KB/Block

  #define FLASH_PAGE_SIZE 0x200 //512 B/Page

  #define FLASH_SECTOR_SIZE 0x200

  //1Page=1Sector(only K9F2808U0C)

  #define FLASH_BLOCKS_TABLE 3//壞塊映射表存放塊數(shù)

  #define FLASH_SWAP_BLOCKS 5 //交換區(qū)的塊數(shù)

  #define FLASH_BAD_BLOCKS_REMAP 50

  //壞簇重映區(qū)的塊數(shù)

  #define FLASH_MAX_ADDR 0xFFFFFF

  //Flash最大字節(jié)地址

  各分區(qū)首地址計(jì)算公式:

  FLASH_BLOCK_TABLE_ADDR=FLASH_MAX_ADDR+

  1-3*FLASH_BLOCK_SIZE);

  FLASH_SWAP_BLOCK_ADDR=(FLASH_BLOCK_

  TABLE_ADDR-5*FLASH_BLOCK_SIZE);

  FLASH_BAD_BLOCK_REMAP_ADDR=(FLASH_SWAP_

  BLOCK_ADDR-50*FLASH_BLOCK_SIZE);

  FLASH_MAX_SECTOR_ADDR=(FLASH_MAX_ADDR-

  3*FLASH_BLOCK_TABLE_ADDR-5*FLASH_SWAP_

  BLOCK_ADDR-50*FLASH_BAD_BLOCK_REMAP_ADDR);

  文件系統(tǒng)管理的最大字節(jié)地址。

  任意地址Addr:

  所在塊地址:Addr&(~(FLASH_BLOCK_SIZE-1));

  塊內(nèi)偏移地址:Addr&(FLASH_BLOCK_SIZE-1);

  塊中的頁(yè):(Addr&(FLASH_BLOCK_SIZE-1))/FLASH_

  PAGE_SIZE;

  2.3 分區(qū)功能設(shè)計(jì)

  壞塊映射區(qū)存放復(fù)制3份的壞塊信息BBI(Bad Block Information)表。復(fù)制3份是預(yù)防系統(tǒng)突然斷電,造成BBI表數(shù)據(jù)丟失。選擇最后3個(gè)塊,主要是出于固件設(shè)計(jì)。當(dāng)Flash首次上電,固件程序通過(guò)讀取Flash ID,獲得設(shè)備的容量等信息,然后從Flash的最后一塊中尋找BBI表,如果最后一塊沒(méi)有發(fā)現(xiàn)BBI表,則認(rèn)為此塊為壞塊,繼續(xù)前移尋找,依此類(lèi)推,直到在預(yù)留的3個(gè)塊中找到,并將其數(shù)據(jù)讀入到在主控芯片為其開(kāi)設(shè)的RAM中。如果還找不到,則固件認(rèn)為該片F(xiàn)lash沒(méi)有BBI表。

  交換塊區(qū)是對(duì)NAND Flash進(jìn)行擦除或?qū)懖僮鲿r(shí)用來(lái)臨時(shí)存放數(shù)據(jù),共分配5個(gè)塊。選取5塊是出于可靠性設(shè)計(jì)。用一個(gè)數(shù)組FlashSwapBlockStatus[FLASH_SWAP_BLOCKS]記錄交換塊狀態(tài):有效還是已經(jīng)損壞。初始化時(shí),固件認(rèn)為所有的交換塊都是有效塊,在隨后對(duì)其進(jìn)行擦除或?qū)懖僮鲿r(shí),通過(guò)讀Flash狀態(tài)寄存器判斷該交換塊的真實(shí)狀態(tài),并記錄在數(shù)組中。交換塊的管理圍繞固件請(qǐng)求返回當(dāng)前可用交換塊地址或當(dāng)前正在使用的交換塊地址,并判斷標(biāo)記當(dāng)前使用的交換塊狀態(tài)為壞。

  壞塊映射區(qū)是當(dāng)主機(jī)向數(shù)據(jù)區(qū)寫(xiě)數(shù)據(jù)時(shí),檢測(cè)到當(dāng)前塊(數(shù)據(jù)區(qū))為壞塊時(shí),將數(shù)據(jù)寫(xiě)到壞塊映射區(qū)中的相應(yīng)好塊中,并且將這兩個(gè)塊的塊地址記錄到BBI表中,以后主機(jī)若要對(duì)當(dāng)前塊(數(shù)據(jù)區(qū))訪問(wèn)時(shí),只需讀BBI表就可以找到相應(yīng)映射塊,從而代替壞塊的訪問(wèn)。這樣就使文件系統(tǒng)所見(jiàn)邏輯塊地址LBA(Logical Block Address)變成連續(xù)的,但實(shí)際上物理塊地址PBA(Physical Block Address)可能并不連續(xù)。上述方法就是壞塊管理的精髓。出于保守設(shè)計(jì)本文共選50塊作為重映塊。用數(shù)組FlashRemapBlockStatus[FLASH_BAD_BLOCKS_REMAP]標(biāo)識(shí)壞塊映射區(qū)的狀態(tài):未使用、已使用還是已經(jīng)損壞。初始化時(shí)認(rèn)為壞塊映射區(qū)中所有塊都是好塊。

  目前市場(chǎng)上閃存芯片主要有兩類(lèi),即NAND Flash(Not And Flash ROM)和NOR Flash(Not Or Flash ROM)。前者具有容量大、讀寫(xiě)速度快、芯片面積小、單元密度高、擦除速度快、成本低等特點(diǎn),更適合于大批量數(shù)據(jù)存儲(chǔ)的嵌入式系統(tǒng)。如今Windows仍是桌面系統(tǒng)的主流,對(duì)FAT文件系統(tǒng)提供了天然的支持。然而就技術(shù)而言,F(xiàn)AT文件系統(tǒng)并不適合Flash,因?yàn)镕lash設(shè)備并不是塊設(shè)備[1],為了不破壞兼容性,并在NAND型閃存中應(yīng)用FAT文件系統(tǒng),國(guó)際上提出了閃存轉(zhuǎn)譯層FTL(Flash Translation Layer)的解決方案。

非常好我支持^.^

(1) 100%

不好我反對(duì)

(0) 0%

( 發(fā)表人:Spring )

      發(fā)表評(píng)論

      用戶(hù)評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?