火龍果軟件LINUX設(shè)備驅(qū)動開發(fā)3匯編_第1頁
火龍果軟件LINUX設(shè)備驅(qū)動開發(fā)3匯編_第2頁
火龍果軟件LINUX設(shè)備驅(qū)動開發(fā)3匯編_第3頁
火龍果軟件LINUX設(shè)備驅(qū)動開發(fā)3匯編_第4頁
火龍果軟件LINUX設(shè)備驅(qū)動開發(fā)3匯編_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三天課程(kchng)FLASH設(shè)備(shbi)驅(qū)動程序 嵌入式Linux文件子系統(tǒng) 共三十一頁日程安排FLASH設(shè)備(shbi)驅(qū)動程序共三十一頁Flash芯片(xn pin)介紹Flash 芯片類型NOR Flash直接總線接口(ji ku)讀寫類似于RAM可直接執(zhí)行程序NAND Flash I/O讀寫接口讀寫類似于硬盤不能直接執(zhí)行程序,需要加載到內(nèi)存共三十一頁Flash芯片(xn pin)比較共三十一頁典型(dinxng)FLASH芯片典型(dinxng)NOR Flash芯片AMD Flash 系列Intel Strata Flash 系列典型NAND Flash 芯片芯片芯片類NA

2、ND Flash :如Samsung K9S1208 SamsungSMC 卡:SmartMediaCard SmartMediaCardDiskOnChip DiskOnChip共三十一頁NOR FLASH讀:直接按總線地址讀 讀寫: 寫:通過向特定地址寫某種序列(xli)實現(xiàn)寫功能AMD Flash ,Intel Flash 的命令序列即相應(yīng)地址有所不同不同NOR Flash 的扇區(qū)的扇區(qū)扇區(qū)類型: 啟動扇區(qū)(大小一般32K/16K/8K )普通扇區(qū)(大小一般為64K)共三十一頁NAND FLASH芯片組織:分頁和塊對K9S1208:每頁512 16 字節(jié),一塊32頁=16K+512讀寫以

3、頁為單元,擦除以塊為單位通過CLE引腳寫命令, ALE引腳寫地址讀寫方式先通過CLE發(fā)命令再通過ALE寫地址再讀寫數(shù)據(jù)(shj)詳見芯片手冊如K9S1208代碼可見JFlash或vivi 中的相應(yīng)代碼 (如arch/s3c2410/nand_read.c)共三十一頁NAND FLASHNAND Flash 壞塊工藝難以保證完全可靠型壞塊分類:固有壞塊使用時壞塊壞塊管理空閑區(qū)第6個字節(jié)不為0 xffFlash讀寫代碼(di m)需要檢測壞塊讀寫空閑區(qū):drivers/mtd/nand/smc_core.c:nand_read_oob共三十一頁MTD設(shè)備(shbi)驅(qū)動MTD技術(shù)全稱:Memory

4、 Technology Device實現(xiàn)對內(nèi)存設(shè)備支持的統(tǒng)一接口,尤其是Flash內(nèi)核源碼位置: drivers/mtd 提供Flash設(shè)備到字符設(shè)備驅(qū)動和塊設(shè)備驅(qū)動的轉(zhuǎn)換包含(bohn)對各種不同類型NOR Flash、NAND Flash等的支持共三十一頁MTD層次結(jié)構(gòu) Flash 硬件(yn jin)驅(qū)動層提供對不同F(xiàn)lash 硬件的驅(qū)動:NOR Flash在drivers/mtd/chips目錄下,NAND Flash 在drivers/mtd/nand 目錄下MTD原始設(shè)備層提供統(tǒng)一的MTD設(shè)備描述mtd_info提供對分區(qū)等的支持MTD設(shè)備層提供MTD 字符設(shè)備和塊設(shè)備應(yīng)用層設(shè)備節(jié)

5、點和建立在MTD上的文件系 上共三十一頁MTD字符(z f)設(shè)備 主設(shè)備(shbi)號均為90 ,從設(shè)備號根據(jù)分區(qū)依次為0,2,4, 奇數(shù)1,3,5 等表示只讀。設(shè)備名: /dev/mtd0, /dev/mtd1共三十一頁MTD塊設(shè)備(shbi)主設(shè)備(shbi)號均為31,從設(shè)備根據(jù)分區(qū)依次為0,1, . 。設(shè)備名: /dev/mtdblock0, /dev/ mtdblock1共三十一頁數(shù)據(jù)結(jié)構(gòu)(sh j ji u):mtd_info描述MTD原始設(shè)備,每個MTD原始設(shè)備都有一個(y )mtd_info結(jié)構(gòu),定義了關(guān)于MTD的數(shù)據(jù)和操作函數(shù)。u_char type; MTD 類型u_int

6、32_t size; MTD 大小u_int32_t t erasesize; MTD 的主擦除大小u_int32_t uoobblock; OOB塊大小,如512u_int32_t oobsize; OOB 空閑區(qū)大小,如16MTD回調(diào)函數(shù): erase:擦除函數(shù) read:讀 write:寫 read_ecc :讀ECC,位于空閑區(qū),每256字節(jié)產(chǎn)生一個ECC write_ecc :寫ECC read_oob :讀OOB 數(shù)據(jù)數(shù)據(jù) write_oob :寫OOB 數(shù)據(jù)共三十一頁數(shù)據(jù)結(jié)構(gòu)(sh j ji u)map_infoFlash映射信息結(jié)構(gòu)(include/linux/mtd/map.

7、h)char *name; Map 名稱名稱unsigned long size; Map 大小大小int int buswidth h; ; 總線(zn xin)寬度,以8為單位unsigned long map_priv_1/2; 映射的虛擬地址回調(diào)函數(shù)組: read8/16/32 等,write8/16/32映射信息由芯片驅(qū)動調(diào)用,主要目的為查找特定的芯片共三十一頁數(shù)據(jù)結(jié)構(gòu)(sh j ji u)mtd_partition表示MTD原始設(shè)備分區(qū)的結(jié)構(gòu),其中包含了mtd_info,因為每一個分區(qū)都是被看成一個MTD原始設(shè)備加在mtd_table中的。char *name;分區(qū)名u_int32

8、_t size; 分區(qū)大小u_int32_t offset; 分區(qū)相對其主MTD設(shè)備的偏移, 特殊偏移:MTDPART_OFS_APPEND (緊接上一分區(qū)),MTDPART_SIZ_FULL (直到設(shè)備尾)u_int32_t mask_flags; 屏蔽(pngb)標(biāo)志,如只讀等共三十一頁芯片(xn pin)驅(qū)動:mtd_chip_drivermtd_chip_driver 結(jié)構(gòu)struct mtd_info *(* probe)(struct map_info *map); 芯片探查函數(shù)char *name; 名稱struct list_head list; 構(gòu)成鏈表不同(b tn)的芯片

9、驅(qū)動AMD 類型flash 驅(qū)動:drivers/mtd/chips/amd_flash.c等Intel類型flash驅(qū)動:drivers/mtd/chips/cfi*等共三十一頁NOR Flash MTD 映射(yngsh)驅(qū)動功能:實現(xiàn)(shxin)Flash芯片在特定處理器上的讀寫以及Flash 分區(qū)內(nèi)核源碼位置: drivers/mtd/maps 可根據(jù)已有的程序進行修改:如sa1100-flash.c 定義Flash 起始地址和大小WINDOW_ADDR、WINDOW_SIZE ,以及總線寬BUSWIDTH。實現(xiàn)map_info 結(jié)構(gòu)確定分區(qū)結(jié)構(gòu)數(shù)組mtd_partition ,每個

10、結(jié)構(gòu)表示相應(yīng)的mtd 分區(qū)修改Config.in和 Makefile 文件以加入新增的MTD分區(qū)編譯選項共三十一頁日程安排嵌入式Linux文件(wnjin)子系統(tǒng) 共三十一頁嵌入式Linux文件(wnjin)子系統(tǒng)概述 文件系統(tǒng)指文件存在的物理空間。在Linux系統(tǒng)中,每個分區(qū)都是一個文件系統(tǒng),都有自己的目錄層次結(jié)構(gòu)。Linux的最重要特征之一就是支持多種文件系統(tǒng),這樣它更加靈活,并可以和許多其它(qt)種操作系統(tǒng)共存。由于系統(tǒng)已將Linux文件系統(tǒng)的所有細節(jié)進行了轉(zhuǎn)換,所以Linux核心的其它部分及系統(tǒng)中運行的程序?qū)⒖吹浇y(tǒng)一的文件系統(tǒng)。共三十一頁虛擬(xn)文件系統(tǒng)VFS為不同的文件系統(tǒng)提供

11、統(tǒng)一(tngy)的接口標(biāo)準(zhǔn)塊設(shè)備驅(qū)動緩沖系統(tǒng)(Cache )文件系統(tǒng)共三十一頁數(shù)據(jù)結(jié)構(gòu)(sh j ji u)-超級塊超級塊super block(include/linux/fs.h)存放(cnfng)文件信息和Inode信息一般位于塊設(shè)備起始位置共三十一頁數(shù)據(jù)結(jié)構(gòu)(sh j ji u)-inodeinode 結(jié)構(gòu)(見include/linux/fs.h)可理解為VFS內(nèi)的文件標(biāo)識通過(tnggu)Inode與具體的文件系統(tǒng)驅(qū)動程序通信共三十一頁數(shù)據(jù)結(jié)構(gòu)(sh j ji u)file_operations主要針對文件(wnjin)的讀寫等操作典型回調(diào)函數(shù)打開、關(guān)閉: open ,release

12、 讀寫: read, write控制: ioctl,fsync,fasync,lock 內(nèi)存映射:mmap共三十一頁典型(dinxng)的Linux 文件系統(tǒng)標(biāo)準(zhǔn)Linux 文件系統(tǒng):ext2,ext3 Windows下文件系統(tǒng):fat,vfat ,ntfs Flash 文件系統(tǒng):cramfs ,romfs,jffs2,yaffs內(nèi)存(ni cn)文件系統(tǒng):ramfs,tmpfs系統(tǒng)proc文件系統(tǒng):proc 設(shè)備文件系統(tǒng):devfs 的文件系統(tǒng)共三十一頁常用(chn yn)的Flash 文件系統(tǒng)Romfs 只讀文件系統(tǒng),未壓縮。多用于NOR Flash 和較低速的CPU(如無MMU CPU)

13、Cramfs 只讀文件系統(tǒng),壓縮,可用于較高速的CPU CPUJFFS2 可讀寫文件系統(tǒng),可支持壓縮或不壓縮,較適用(shyng)于Nor Flash和容量較小的Nand Flash Yaffs 可讀寫文件系統(tǒng),未壓縮。較適用于Nand Flash共三十一頁Flash文件系統(tǒng)內(nèi)核(ni h)編譯選項選擇(xunz)File systems 合適的文件系統(tǒng)合適的文件系統(tǒng)Journalling Flash File System (JFFS) support :JFFS支持Journalling Flash File System v2 (JFFS2) suppor:JFFSV2支持Compres

14、sed ROM file system support:cramfs支持持ROM file system support:romfs支持YAFFS file system support:yaffs支持共三十一頁文件系統(tǒng)構(gòu)建(u jin)先在主機上完成文件系統(tǒng)設(shè)計采用相應(yīng)的工具將其生成(shn chn)對應(yīng)的image cramfs:可采用mkcramfs工具jffs2:可采用mkfs.jffs2 工具romfs:可采用genromfs工具具yaffs :可采用mkyaffsimage 工具工具共三十一頁JFFS2文件系統(tǒng) JFFS2 是一個開放源碼的項目()。 它是在閃存上使用非常廣泛的讀/寫文件系統(tǒng)。JFFS2 是一個日志結(jié)構(gòu)的文件系統(tǒng),包含數(shù)據(jù)和原數(shù)據(jù)的節(jié)點在閃存上順序的存儲。JFFS2的缺點:掛載時間(shjin)過長磨損平衡的隨意性 很差的擴展性 共三十一頁文件(wnjin)和進程結(jié)構(gòu)struct file *file;可采用(ciyng)file-private_data來區(qū)分設(shè)備。共三十一頁謝謝(xi xie)大家問題(wnt)建議反饋共三十一頁內(nèi)容摘要第三天課程。讀:直接按總線地址讀 讀。對K9S1208:每頁512 16 字節(jié),一塊32頁=16K+512。讀寫以頁為單元,擦除以塊為單位。

溫馨提示

  • 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

提交評論