国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Windows?。茫牛危牛韵拢伲粒疲疲游募到y(tǒng)NAND?。疲欤幔螅栩?qū)動(dòng)程序設(shè)計(jì)

2009-11-04 08:04徐軍化張紹軍
科技傳播 2009年18期

徐軍化 張紹軍

摘要 嵌入式系統(tǒng)中NAND文件系統(tǒng)的實(shí)現(xiàn)方式直接關(guān)系到NAND芯片的使用壽命。本文首先介紹了YAFFS文件系統(tǒng)的特點(diǎn)及其在Windows CE.Net環(huán)境下NAND Flash接口層的要求,其次介紹了SAMSUNG公司的K9K8G08U0A NAND Flash的相關(guān)技術(shù)規(guī)格,并給出了其塊設(shè)備驅(qū)動(dòng)程序的部分程序代碼。

關(guān)鍵詞Windows CE;YAFFS;NAND;驅(qū)動(dòng)開發(fā)

中圖分類號(hào) TP311.1文獻(xiàn)標(biāo)識(shí)碼A文章編號(hào) 1674-6708(2009)05-0054-02

0 引言

Windows CE是微軟公司設(shè)計(jì)的嵌入式操作系統(tǒng),具有系統(tǒng)體積小、界面友好、可擴(kuò)展、應(yīng)用程序開發(fā)上手快等特點(diǎn),目前,在手持式測(cè)量設(shè)備領(lǐng)域的應(yīng)用越來越多。手持式振動(dòng)信號(hào)測(cè)量?jī)x是一種電池供電、便于現(xiàn)場(chǎng)或野外攜帶和使用的測(cè)量設(shè)備,主要功能是對(duì)振動(dòng)信號(hào)進(jìn)行實(shí)時(shí)連續(xù)的采集、顯示、分析、處理和存儲(chǔ)。

1 YAFFS文件系統(tǒng)簡(jiǎn)介

YAFFS是一種類似于JFFS/JFFS2的專為NAND Flash設(shè)計(jì)的嵌入式文件系統(tǒng),適用于大容量的存儲(chǔ)設(shè)備。和JFFS相比,YAFFS減少了一些功能,但是速度更快、占用的內(nèi)存更少、NAND Flash的使用壽命也更長(zhǎng)。YAFFS文件系統(tǒng)采用層次結(jié)構(gòu)設(shè)計(jì),可分為三層:文件系統(tǒng)管理接口層、YAFFS內(nèi)部實(shí)現(xiàn)層和NAND Flash接口層。

2 YAFFS NAND Flash接口層

YAFFS NAND Flash接口層的主要功能就是為文件系統(tǒng)管理接口層、YAFFS內(nèi)部實(shí)現(xiàn)層提供一個(gè)與具體NAND Flash硬件無關(guān)的訪問服務(wù),提高了代碼的可移植性和通用性。在對(duì)NAND Flash接口層相關(guān)代碼進(jìn)行深入的分析后,我們發(fā)現(xiàn)為了使YAFFS能夠?qū)AND Flash進(jìn)行訪問,必須為NAND Flash提供一個(gè)塊設(shè)備驅(qū)動(dòng)程序。與NAND Flash物理訪問相關(guān)的代碼全部由其實(shí)現(xiàn),而YAFFS則是通過給該設(shè)備驅(qū)動(dòng)程序發(fā)送IOControl請(qǐng)求來實(shí)現(xiàn)對(duì)NAND Flash的讀、寫、擦除等具體操作,具體來說,主要有以下幾個(gè)操作請(qǐng)求:

1)IOCTL_DISK_NAND_INIT 功能是命令NAND Flash驅(qū)動(dòng)程序?qū)lash芯片進(jìn)行初始化。

2) IOCTL_DISK_NAND_GETSIZE 功能是獲取NAND Flash的存儲(chǔ)容量(磁盤空間)。

3) IOCTL_DISK_NAND_GETNAME 功能是獲取設(shè)備在Windows CE中顯示的文件夾名稱。

4) IOCTL_DISK_NAND_GETPARTITIONS 功能是獲取NAND Flash中的分區(qū)表。

5) IOCTL_DISK_NAND_WRITE 功能是將緩沖區(qū)中的數(shù)據(jù)寫到NAND Flash中的指定頁中。

6) IOCTL_DISK_NAND_READ 功能是讀取指定的頁的數(shù)據(jù)。

7) IOCTL_DISK_NAND_ERASE 功能是從NAND Flash中的指定塊擦除。

3 Samsung K9K8G08U0A Flash

目前,在嵌入式系統(tǒng)領(lǐng)域廣泛使用的Flash主要有兩種:一種是采用NOR技術(shù)的NOR Flash,另一種是采用NAND技術(shù)的NAND Flash。這里重點(diǎn)介紹一下NAND Flash,首先,從內(nèi)部存儲(chǔ)器的組織形式上看,NAND Flash的內(nèi)部可分為若干個(gè)塊,塊又分為頁,頁而由數(shù)據(jù)存儲(chǔ)區(qū)和備用區(qū)兩部分組成;其次,NAND Flash不能按照字節(jié)進(jìn)行訪問,而是以頁為單位進(jìn)行讀、寫,以塊為單位進(jìn)行擦除;第三,NAND Flash的地址、數(shù)據(jù)、命令端口復(fù)用,讀、寫、擦除等操作都是相應(yīng)的命令來完成的。

SAMSUNG的K9K8G08U0A NAND Flash內(nèi)部共有8192個(gè)塊,每個(gè)塊有64個(gè)頁,每頁包含2048字節(jié)的存儲(chǔ)空間和64字節(jié)的備用空間,總?cè)萘繛?G字節(jié)。K9K8G08U0A的以頁為單位進(jìn)行讀和寫,以塊為單位擦除,其典型的隨機(jī)頁讀時(shí)間為25us、順序頁讀時(shí)間為25ns、頁寫時(shí)間為200us、塊擦除時(shí)間為1.5ms。

4 K9K8G08U0A塊設(shè)備驅(qū)動(dòng)程序的實(shí)現(xiàn)

Windows CE.Net環(huán)境下的塊設(shè)備驅(qū)動(dòng)程序一般都實(shí)現(xiàn)為流接口驅(qū)動(dòng)的形式,即流接口驅(qū)動(dòng)需要的XXX_Close、XXX_Deinit、XXX_Init、XXX_IOControl、XXX_Open、XXX_PowerDown、XXX_PowerUp、XXX_Read、XXX_Seek 、XXX_Write都要實(shí)現(xiàn),XXX表示設(shè)備名前綴,這里可以是“DSK”。由于YAFFS的NAND Flash接口主要是通過IOControl的形式實(shí)現(xiàn)的,所以,相應(yīng)的與K9K8G08U0A讀、寫、擦除等操作相關(guān)代碼也都在DSK_IOControl函數(shù)內(nèi)實(shí)現(xiàn)。下面給出DSK_IOControl的部分程序代碼:

DSK_IOControl的部分程序代碼如下:

BOOL DSK_IOControl(……)

{

switch (dwIoControlCode)

{

case IOCTL_DISK_NAND_WRITE:

NandRePage(pDisk,pBufData,pBufSpare,ifData->chunk);break;

case IOCTL_DISK_NAND_READ:

NandReadPage(pDisk,pBufData,pBufSpare,ifData->chunk);break;

case IOCTL_DISK_NAND_ERASE:

NandEraseBlock(pDisk,*BlockNumber);break;

}

}

具體的讀、寫、擦除等操作分別由NandReadPage、NandWritePage、NandEraseBlock三個(gè)函數(shù)按照Samsung公司K9K8G08U0A的時(shí)序規(guī)范來實(shí)現(xiàn)。

5 結(jié)論

本文在深入研究YAFFS文件系統(tǒng)的NAND Flash接口后,給出了Windows CE.Net環(huán)境下Samsung的K9K8G08U0A NAND Flash塊設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)方法,并給出了關(guān)鍵程序代碼。

本文創(chuàng)新點(diǎn)在于以手持式振動(dòng)信號(hào)測(cè)量?jī)x為背景,給出了Windows CE.Net環(huán)境下YAFFS文件系統(tǒng)NAND Flash塊驅(qū)動(dòng)程序的一種實(shí)現(xiàn)方法。