色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

NAND Flash嵌入式存儲系統(tǒng)設計 - 全文

2011年04月25日 11:10 本站整理 作者:Spring 用戶評論(0

  如今Windows仍是桌面系統(tǒng)的主流,對FAT文件系統(tǒng)提供了天然的支持。然而就技術而言,F(xiàn)AT文件系統(tǒng)并不適合Flash,因為Flash設備并不是塊設備[1],為了不破壞兼容性,并在NAND型閃存中應用FAT文件系統(tǒng),國際上提出了閃存轉(zhuǎn)譯層FTL(Flash Translation Layer)的解決方案。

  1 NAND Flash嵌入式存儲系統(tǒng)結構

  基于NAND Flash的存儲系統(tǒng)的設計首先要解決壞塊問題。由于NAND Flash自身存在固有壞塊并在擦除和編程中又隨機產(chǎn)生壞塊,因此為了提高設備的可靠性應該將這兩種操作分散在閃存不同的塊中,以避免對某塊的過度操作。

  一般的基于NAND Flash嵌入式存儲系統(tǒng)驅(qū)動結構分為三個層次:最底層是硬件操作接口,負責將主控芯片與Flash的控制管腳相連,這方面的固件主要實現(xiàn)對NAND Flash的物理操作;中間層是閃存轉(zhuǎn)譯層NFTL(NAND FTL),是封裝在Flash驅(qū)動中的軟件模塊,其作用是將Flash模擬成與磁盤相類似的塊設備,使對上層操作系統(tǒng)而言,NAND Flash就像普通磁盤一樣被訪問。這一層主要是封裝一些特殊的復雜管理控制功能;最上面的層就是文件管理層,功能類似于普通磁盤上的通用文件系統(tǒng),向上層提供標準的文件操作接口?;贜AND Flash的嵌入式系統(tǒng)存儲結構原理圖如圖1所示。

  

?

  根據(jù)以上兩個方面,既要在驅(qū)動中實現(xiàn)壞塊管理,又要進行塊模擬,所以可用的方法有兩種[2]:一是在上層文件系統(tǒng)中解決壞塊問題,驅(qū)動層只實現(xiàn)本身的功能,文件系統(tǒng)為驅(qū)動層提供不變的接口,為上層應用程序提供可靠透明的服務。這種方法較簡單,開發(fā)周期比較短,但只對特定應用的嵌入式系統(tǒng)有很強的適應性;第二種方法是在驅(qū)動層的NFTL中解決壞塊問題,將不可靠的NAND Flash虛擬成可靠的存儲設備,為上層文件系統(tǒng)提供可靠透明服務,這種方法較第一種更復雜,但是此法具有較強的可移植性并能徹底斷絕與文件系統(tǒng)的聯(lián)系,其他文件系統(tǒng)也同樣適用。

  本文是以Samsung的NAND Flash K9F2808U0C作為存儲芯片,設計了一種在NFTL上實現(xiàn)壞塊管理并且實現(xiàn)連續(xù)數(shù)據(jù)讀取的方法。

  2 設計思想

  2.1 閃存空間劃分

  K9F2808U0C是16 MB×8 bit的NAND Flash,共有1 024個Block,1 Block=16 KB,32 Page/Block,1 Page=528 B=(512 B+16 B),其中16 B為備用區(qū),主要存放NAND Flash出廠壞塊標記、ECC校驗碼以及用戶自定義區(qū)。K9F2808U0C地址空間是24 bit,分三個周期依次送入NAND Flash的地址鎖存器。本文使用的地址均為字節(jié)地址,數(shù)據(jù)類型為DWORD(4 B)。

  將K9F2808U0C的存儲空間劃分為四個區(qū):壞塊映射表存放區(qū)、交換塊區(qū)、壞塊映射區(qū)和實際數(shù)據(jù)存放區(qū)。文件系統(tǒng)管理的空間就是實際的數(shù)據(jù)存放空間,如圖2所示。

  

?

  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ū)首地址計算公式:

  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);

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

  PAGE_SIZE;

  2.3 分區(qū)功能設計

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

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

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

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

上一頁12全文

非常好我支持^.^

(1) 100%

不好我反對

(0) 0%

( 發(fā)表人:Spring )

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關規(guī)定!

      ?
      主站蜘蛛池模板: 亚洲偷偷自拍免费视频在线 | 第一次处破女18分钟免费 | yellow日本动漫高清 | 三级网址在线观看 | 四虎永久在线精品国产免费 | 一级片mp4 | 在线成 人av影院 | 久久婷婷五月综合色丁香花 | 亚洲人成伊人成综合网久久久 | 亚洲精品一本之道高清乱码 | 抽插妇女疯狂视频 | 草莓视频在线免费观看 | 亚洲精品AV中文字幕在线 | 被同桌摸出水来了好爽的视频 | 永久免费精品精品永久-夜色 | 免费精品美女久久久久久久久 | 99久久精品全部 | 热久久视久久精品2015 | 野花韩国中文版免费观看 | WWW国产亚洲精品久久 | 亚洲午夜久久久无码精品网红A片 | 蜜芽国产在线精品欧美 | 花蝴蝶高清观看免费 | 在线看片韩国免费人成视频 | ppypp午夜限制不卡影院私人 | 激情内射亚州一区二区三区爱妻 | 久久婷婷五月综合色丁香花 | 成人影院午夜久久影院 | 国产免费不卡 | 亚洲第一页视频 | 欧美一区二区视频在线观看 | av天堂电影网在线观看 | 少妇精品无码一区二区三区 | 日韩亚洲视频一区二区三区 | 日日摸夜夜嗷嗷叫日日拍 | 快播av种子 | 国产久爱青草视频在线观看 | 美女胸网站 | 強姧伦久久久久久久久 | 帝王被大臣们调教高肉 | 久青草国产观看在线视频 |