以文本方式查看主題 - 曙海教育集團(tuán)論壇 (http://www.rfoamep.cn/bbs/index.asp) -- Linux驅(qū)動開發(fā) (http://www.rfoamep.cn/bbs/list.asp?boardid=33) ---- 嵌入式Linux的DiskOnChip設(shè)備驅(qū)動開發(fā) (http://www.rfoamep.cn/bbs/dispbbs.asp?boardid=33&id=1712) |
-- 作者:wangxinxin -- 發(fā)布時間:2010-11-24 9:43:40 -- 嵌入式Linux的DiskOnChip設(shè)備驅(qū)動開發(fā) 1 引 言 在以計(jì)算機(jī)技術(shù)、通訊技術(shù)相結(jié)合的信息時代的快速發(fā)展和互聯(lián)網(wǎng)廣泛應(yīng)用的形勢下,3C(Computer,Communication,Consumer)合一的趨勢已經(jīng)形成,其結(jié)果必然就是將計(jì)算機(jī)工業(yè)的中心從計(jì)算產(chǎn)品轉(zhuǎn)移到嵌入式信息產(chǎn)品。 然而由于嵌入式系統(tǒng)的應(yīng)用要求及成本因素決定了嵌入式系統(tǒng)在系統(tǒng)資源,包括硬件資源和軟件資源方面都是非常精簡和高效的。因此在嵌入式系統(tǒng)中的存儲設(shè)備一般不會采用硬盤等大容量高功耗設(shè)備,而改用諸如CompactFlash,EPROM等存儲介質(zhì)。因此本文就M-systems公司開發(fā)的新一代閃存FlashDiskOnChip 2000,介紹在基于嵌入式Linux系統(tǒng)上文件系統(tǒng)和塊設(shè)備的支持及驅(qū)動。 2 硬件系統(tǒng)結(jié)構(gòu) 電子盤的內(nèi)部存儲介質(zhì)Flash是近幾年來發(fā)展最快的一種存儲芯片,他具有E2PROM可擦寫的特點(diǎn),又同時具有EPROM廉價的特點(diǎn),他是一種高性能、低功耗、電可擦除的存儲器件。根據(jù)其以上一些特點(diǎn),電子盤已廣泛應(yīng)用于信息存儲、機(jī)頂盒、網(wǎng)絡(luò)計(jì)算以及嵌入式計(jì)算機(jī)等領(lǐng)域。 M-system公司推出的DiskOnChip 2000系列是新一代閃存磁盤(Flash Disk)。為標(biāo)準(zhǔn)32腳DIP封裝,他與標(biāo)準(zhǔn)的E2PROM完全兼容。一般的閃存器(FlashMemory)只包含存儲器部分,而控制器要另加。為了對閃存磁盤進(jìn)行管理,DiskOnChip中已裝有MSystem公司的閃存文件系統(tǒng)(TrueFFS)軟件。這使得他使用簡單,工作中不需要任何其他特殊復(fù)雜的算法。他的讀/寫與硬盤完全相同,因此他可以作為獨(dú)立硬盤使用,并與其他磁盤兼容。可以直接引導(dǎo)計(jì)算機(jī)系統(tǒng)而不需要其他系統(tǒng)盤。他適用于3.3 V和5 V電源,功耗很小,對于那些空間受限,小型便攜式裝置,DiskOnChip將是最佳選擇。DOC2000結(jié)構(gòu)主要由系統(tǒng)接口單元(SystemIterface)、系統(tǒng)引導(dǎo)模塊(BootBlock)、閃存控制單元(FlashControl)以及和Flash存儲介質(zhì)等組成,其結(jié)構(gòu)如圖1所示。
其中系統(tǒng)接口單元為DOC2000提供了類似SRAM的接口,使之能夠通過CPU的本地總線、ISA總線以及SRAM總線建立與操作系統(tǒng)的連接。DOC提供片選信號(CE#)、讀寫信號(WE#)、使能信號(OE#)以及13位寬的地址線(A[0:12])和8位寬的數(shù)據(jù)總線(D[0:7])。系統(tǒng)接口在主總線信號(讀、寫、地址和片選)的控制下產(chǎn)生相應(yīng)的控制信號送入閃存磁盤,其內(nèi)部的ROM提供一種IPL碼,此碼在計(jì)算機(jī)啟動過程中將閃存文件系統(tǒng)軟件裝入PC內(nèi)存。他在PC的擴(kuò)展BIOS中安排了8 kB以上的存儲區(qū)域,其地址為0C000H~0EFFFH。計(jì)算機(jī)開機(jī)自檢后,DiskOnChip作為PC的BIOS標(biāo)準(zhǔn)操作的一部分,BIOS搜尋ROM擴(kuò)展碼,找到后BIOS執(zhí)行閃存磁盤內(nèi)的初始化碼,此碼將閃存文件系統(tǒng)軟件裝入內(nèi)存。閃存磁盤也將被安裝為系統(tǒng)的一個磁盤,然后將傳輸器控制回到BIOS碼。當(dāng)操作系統(tǒng)要確認(rèn)適合系統(tǒng)的磁盤時,閃存磁盤軟件即模仿一個硬盤做出反應(yīng)。 3 TrueFFS與Linux的文件系統(tǒng) TrueFFS是M-system公司開發(fā)出來的專用于電子盤設(shè)備的專利技術(shù)。TrueFFS是Tornadoll開發(fā)環(huán)境中的一個集成的快速閃存文件系統(tǒng),通過TrueFFS對DOC塊設(shè)備的磁盤仿真功能,從而方便了嵌入式Linux系統(tǒng)對電子盤的讀寫、分區(qū)、格式化等一系列操作。通過對操作系統(tǒng)的I/O控制調(diào)用。Linux可以通過VFS訪問TureFFS的外部接口。 Linux文件系統(tǒng)最優(yōu)秀的地方是對多種文件系統(tǒng)的支持(這里的上層結(jié)構(gòu)是指VFS系統(tǒng)和具體的文件系統(tǒng),即除buffer管理系統(tǒng)以外的部分)。為了實(shí)現(xiàn)這種特色,就必須有一個抽象的層次來統(tǒng)一描述各種文件系統(tǒng),Linux中就用VFS來實(shí)現(xiàn)了這個抽象層;同時,各種具體的文件系統(tǒng)又必須有一個和VFS交互的手段,如圖2所示。
Linux文件系統(tǒng)管理的最上層模塊是文件系統(tǒng)。系統(tǒng)啟動時,必須先裝入“根”文件系統(tǒng),然后根據(jù)/etc/fstab中的指定,逐個建立文件系統(tǒng)。此外,用戶也可以通過mount,umount操作,隨時安裝或卸載文件系統(tǒng)。Linux系統(tǒng)調(diào)用操作系統(tǒng)的GetDriveHandle()函數(shù)得到驅(qū)動器的句柄,他的返回值是一個能夠供I/O控制函數(shù)調(diào)用的TrueFFS驅(qū)動的描述符。然后再調(diào)用操作系統(tǒng)中文件系統(tǒng)的IOCongtrol()函數(shù),通過VFS的支持,使TrueFFS具有通用文件系統(tǒng)的特性。當(dāng)某個進(jìn)程發(fā)布了一個面向文件的系統(tǒng)調(diào)用時,核心將調(diào)用VFS中相應(yīng)的函數(shù),這個函數(shù)處理一些與物理結(jié)構(gòu)無關(guān)的操作,并且把他重定向?yàn)檎鎸?shí)文件系統(tǒng)中相應(yīng)的函數(shù)調(diào)用,而這些函數(shù)調(diào)用則用來處理那些與物理結(jié)構(gòu)相關(guān)的操作。 4 構(gòu)建嵌入式Linux內(nèi)核DOC設(shè)備支持 DOC通過TrueFFS磁盤仿真的支持,Linux系統(tǒng)可把DOC驅(qū)動編譯成模塊(doc.o)進(jìn)行支持,并可用于系統(tǒng)加載后的輔助存儲盤使用,同時也可把DOC核心驅(qū)動加載入Linux內(nèi)核,在系統(tǒng)啟動時進(jìn)行驅(qū)動和加載。 在Linux系統(tǒng)中DOC設(shè)備被模擬為IDE塊設(shè)備進(jìn)行識別,系統(tǒng)用主設(shè)備號(MAJOR)加次設(shè)備(MINOR)號來惟一標(biāo)識一個設(shè)備。相同主設(shè)備號表示同一類設(shè)備,例如都是硬盤;次設(shè)備號標(biāo)識同類設(shè)備的個數(shù)。所有設(shè)備在適當(dāng)?shù)哪夸洠ㄍǔT冢痙ev目錄)下必須有相應(yīng)的文件,這樣字符設(shè)備和塊設(shè)備都可以通過文件操作的系統(tǒng)調(diào)用來完成。不同的是,塊設(shè)備操作經(jīng)常要和緩沖區(qū)打交道,從而更加復(fù)雜一些。系統(tǒng)設(shè)備管理的總體框圖如圖3所示。 |