Linux存儲器接口軟硬件設(shè)計_第1頁
Linux存儲器接口軟硬件設(shè)計_第2頁
Linux存儲器接口軟硬件設(shè)計_第3頁
Linux存儲器接口軟硬件設(shè)計_第4頁
Linux存儲器接口軟硬件設(shè)計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Linux存儲器接口軟硬件設(shè)計1.嵌入式系統(tǒng)上常用的存儲媒體Flash芯片F(xiàn)lash媒質(zhì)存儲器:SD/MMC卡、CF卡、SM卡、U盤、DOCIC卡、SIM卡硬盤:CF接口、IDE接口…2.Linux對存儲設(shè)備的管理塊設(shè)備->文件系統(tǒng)字符設(shè)備也可以完成簡單的存儲工作嵌入式Linux的存儲通常通過MTD設(shè)備3.MTD設(shè)備驅(qū)動MTD(memorytechnologydevice)是用于訪問memory設(shè)備〔ROM、flash〕的Linux子系統(tǒng)在硬件和上層之間提供了一個抽象的接口,MTD把文件系統(tǒng)和Flash設(shè)備相隔離4.MTD與文件系統(tǒng)5.Flash硬件驅(qū)動層在init時驅(qū)動Flash硬件,NAND型Flash的驅(qū)動程序那么位于

/drivers/mtd/nand子目錄下MTD原始設(shè)備有兩局部組成MTD原始設(shè)備的通用代碼,各個特定的Flash的數(shù)據(jù),例如分區(qū)。mtd_info、mtd_table〔mtdcore.c〕、mtd_part〔mtd_part.c〕MTD設(shè)備層linux系統(tǒng)定義出MTD的塊設(shè)備〔主設(shè)備號31〕和字符設(shè)備〔設(shè)備號90〕。設(shè)備節(jié)點:通過mknod在/dev子目錄下建立MTD字符設(shè)備節(jié)點〔主設(shè)備號為90〕和MTD塊設(shè)備節(jié)點〔主設(shè)備號為31〕,通過訪問此設(shè)備節(jié)點即可訪問MTD字符設(shè)備和塊設(shè)備。根文件系統(tǒng)在Bootloader中將文件系統(tǒng)映像燒錄到flash的某一個分區(qū)中,在啟動的時候,將該分區(qū)作為根文件系統(tǒng)掛載。文件系統(tǒng):內(nèi)核啟動后,mount6.NAND和NOR——性能比較NOR和NAND是現(xiàn)在市場上兩種主要的非易失閃存技術(shù)NOR的讀速度比NAND稍快一些NAND的寫入速度比NOR快很多NAND的擦除速度遠比NOR的快大多數(shù)寫入操作需要先進行擦除操作NAND的擦除單元更小,相應(yīng)的擦除電路更少7.接口差異NORflash帶有SRAM接口,線性尋址,可以很容易地存取其內(nèi)部的每一個字節(jié)NANDflash使用復(fù)用接口和控制IO屢次尋址存取數(shù)據(jù)NAND讀和寫操作采用512字節(jié)的塊,這一點有點像硬盤管理此類操作易于取代硬盤等類似的塊設(shè)備8.容量和本錢NANDflash生產(chǎn)過程更為簡單,本錢低常見的NORflash為128KB~16MB,而NAND

flash通常有8~128MBNOR主要應(yīng)用在代碼存儲介質(zhì)中,NAND適合于數(shù)據(jù)存儲NAND在CompactFlash、SecureDigital、PCCards和MMC存儲卡市場上所占份額最大9.可靠性和耐用性在NAND中每塊的最大擦寫次數(shù)是100萬次,而NOR的擦寫次數(shù)是10萬次位交換的問題NANDflash中更突出,需要

ECC糾錯NANDflash中壞塊隨機分布,需要通過軟件標(biāo)定——產(chǎn)品量產(chǎn)的問題10.更新MTD設(shè)備驅(qū)動程序MTD的補丁:///新的MTD驅(qū)動程序針對Linux2.6支持2kpageflash、DOC、SSDFC等新特性參考:TheLinuxMTD,JFFSHOWTO11.NandFlash連接原理12.PXA270上擴展Nandflash13.移植代碼建議先給內(nèi)核打補丁有的linux內(nèi)核帶的MTD驅(qū)動程序有嚴重的問題nandflash相關(guān)代碼在/drivers/mtd/nand/目錄下添加自己的驅(qū)動程序,可以從/drivers/mtd/nand/spia.c派生〔pxa27x_nand.c〕修改drivers/mtd/nand/config.in配置菜單修改/drivers/mtd/nand/Makefile添加

obj-$(CONFIG_MTD_NAND_ARM) +=pxa27x_nand.o14.解讀pxa27x_nand.c模塊入口:pxa27x_init函數(shù)ioremap的作用pxa27x_IO_init,初始化Nandflash所用端口module_init宏定義了linux加載的模塊——啟動的時候加載或者通過模塊加載nand_scan確定設(shè)備及其類型,掛載相應(yīng)的驅(qū)動程序add_mtd_partitions函數(shù)注冊MTD分區(qū),add_mtd_device注冊MTD設(shè)備15.MTD上的Norflash驅(qū)動使用CFI接口的flashIntelAMD驅(qū)動程序自動掛接、自動檢測16.PXA270上Norflash設(shè)備驅(qū)動添加驅(qū)動程序

drivers/mtd/maps/uptechpxa27x-flash.c主要的工作在pxa27x_flash_probe函數(shù)中完成。查找分區(qū)17.測試MTD設(shè)備〔1〕正確加載了設(shè)備,使用命令

cat/proc/mtd,可以顯示MTD設(shè)備信息:dev:sizeerasesizenamemtd0:00e0000000004000"Nandflashpartition“創(chuàng)立節(jié)點〔如果不是用devfs〕在hostlinux上的romfs/dev目錄創(chuàng)立

@mtd0,c,90,0、@mtdblock0,b,31,0文件用mkfs.jffs2〔或者mkfs.yaffs〕生成文件系統(tǒng)映象〔比方j(luò)ffs2.img〕18.測試MTD設(shè)備〔2〕目標(biāo)板啟動以后cpjffs2.img/dev/mtd0注意:這里使用的/dev/mtd0是字符設(shè)備mount–tjffs2/dev/mtdblock0/var/jffs2需要在編譯內(nèi)核的時候包含jffs2文件系統(tǒng)使用塊設(shè)備在文件系統(tǒng)上進行其他測試:[/var/jffs2]cp/root/hello.19.嵌入式linux下常見的文件系統(tǒng)RomFS:只讀文件系統(tǒng),可以放在ROM空間,也可以在系統(tǒng)的RAM中,嵌入式linux中常用來作根文件系統(tǒng)RamFS:利用VFS自身結(jié)構(gòu)而形成的內(nèi)存文件系統(tǒng),使用系統(tǒng)的RAM空間JFFS/JFFS2:為Flash設(shè)計的日志文件系統(tǒng)Yaffs:專門為NandFlash設(shè)計proc:為內(nèi)核和內(nèi)核模塊將信息發(fā)送給進程提供一種機制,可以查看系統(tǒng)模塊裝載的信息devFS:設(shè)備文件系統(tǒng)20.Linux上的Ext2fs支持4TB存儲、文件名稱最長1012字符可選擇邏輯塊快速符號鏈接Ext2不適合flash設(shè)備是為象IDE設(shè)備那樣的塊設(shè)備設(shè)計的,邏輯塊大小必須是512byte、1KB、2KB等沒有提供對基于扇區(qū)的擦除/寫操作的良好管理如果在一個扇區(qū)中擦除單個字節(jié),必須將整個扇區(qū)復(fù)制到

RAM,然后擦除,再重寫入在出現(xiàn)電源故障時,Ext2fs是不能防止崩潰的文件系統(tǒng)不支持損耗平衡,縮短了flash的壽命21.jffs/jffs2文件系統(tǒng)的優(yōu)缺點日志文件系統(tǒng)提供了更好的崩潰、掉電平安保護jffs2支持對flash的均勻磨損在扇區(qū)級別上執(zhí)行閃存擦除/寫/讀操作要比Ext2文件系統(tǒng)好文件系統(tǒng)接近滿時,JFFS2會大大放慢運行速度——垃圾收集22.Nand上yaffs文件系統(tǒng)的優(yōu)勢專門為Nandflash設(shè)計的日志文件系統(tǒng)jffs/jffs2不適合大容量的Nandflashjffs的日志通過jffs_node建立在RAM中,占用

RAM空間:對于128MB的Nand大概需要4MB的空間來維護節(jié)點啟動的時候需要掃描日志節(jié)點,不適合大容量的NandflashFAT系統(tǒng)沒有日志23.編譯yaffs文件系統(tǒng)mtd的最新補丁升級?接口更新,適合與yaffs與原有的mtd驅(qū)動程序不兼容,需要重寫如果使用舊mtd驅(qū)動需要定義Makefile中MTD_OLD=-DCONFIG_YAFFS_USE_OLD_MTD參考文檔:yaffs-rootfs-howto最新版的yaffs網(wǎng)站:

://aleph1.co.uk/armlinux/projects/yaffs24.使用yaffs文件系統(tǒng)通過cat/proc/yaffs命令可以看到y(tǒng)affs系統(tǒng)的相關(guān)信息mount-tyaffs/dev/mtdblock/0/mnt/yaffsyaffs做root的問題,如何處理壞塊?25.IDE接口軟硬件設(shè)計26.IDE接口簡介IntegratedDriveElectronics〔IDE〕本意是指把控制器與盤體集成在一起的硬盤驅(qū)動器。通常說的IDE接口,稱之為ATA〔AdvancedTechnologyAttachment〕接口分類:ATA-1〔IDE〕、ATA-2〔EIDE〕、ATA-3〔FastATA-2〕、UltraATA、UltraATA/33、UltraATA/66、UltraATA/100及SerialATA27.IDE接口標(biāo)準(zhǔn)CSEL電纜主從選擇DMARQDMA請求CS0片選0INTRQ中斷請求CS1片選1IOR讀取IO口D[15:0]數(shù)據(jù)線IORDYIO就緒DASP驅(qū)動器有效IOW寫入IO口A[2:0]地址PDIAG通過檢測DMACKDMA應(yīng)答RESET復(fù)位低電平有效28.IDE設(shè)備存放器CS1CS0A2A1A0讀取寫入位10000數(shù)據(jù)寄存器數(shù)據(jù)寄存器1610001錯誤寄存器特征寄存器810010扇區(qū)數(shù)寄存器扇區(qū)數(shù)寄存器810011扇區(qū)號寄存器扇區(qū)號寄存器810100柱面號(低字節(jié))柱面號(低字節(jié))810101柱面號(高字節(jié))柱面號(高字節(jié))810110驅(qū)動器/磁頭驅(qū)動器/磁頭810111狀態(tài)寄存器命令寄存器801110可選狀態(tài)寄存器設(shè)備控制寄存器801111驅(qū)動器地址寄存器保留829.嵌入式處理器上

擴展IDE接口的考慮電平標(biāo)準(zhǔn)是否滿足?IDE接口為5V邏輯,與3.3V邏輯如何接口總線時序如何滿足?讀寫時序和SRAM類似,通過組合邏輯即可滿足30.UP-NETARM2410-S上IDE接口邏輯原理圖FPGA內(nèi)部邏輯nGCSF信號地址譯碼的結(jié)果偏移地址0x80000031.IDE接口的驅(qū)動程序在driv

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論