《基于Linux的驅(qū)動開發(fā)》PDF課件_第1頁
《基于Linux的驅(qū)動開發(fā)》PDF課件_第2頁
《基于Linux的驅(qū)動開發(fā)》PDF課件_第3頁
《基于Linux的驅(qū)動開發(fā)》PDF課件_第4頁
《基于Linux的驅(qū)動開發(fā)》PDF課件_第5頁
全文預覽已結(jié)束

下載本文檔

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

文檔簡介

《基于Linux的驅(qū)動開發(fā)》PDF課件遠見品質(zhì)

Linux內(nèi)核與C代碼

vLinux內(nèi)核浩大,結(jié)構(gòu)簡單

?對Linux2.4內(nèi)核的統(tǒng)計:1萬個文件,4百萬行代碼?對Linux2.6內(nèi)核的統(tǒng)計:1.5萬個文件,6百萬行代碼

vLinux內(nèi)核的主體使用GNUC,在ANSIC

上進行了擴充

?Linux內(nèi)核必需由gcc編譯編譯?gcc和Linux內(nèi)核版本并行進展,對于版本的依靠性強?Linux2.6內(nèi)核建議使用gcc3.3以上版本,C99編程風格

v內(nèi)核代碼中使用的一些編程技巧,在通常

的應(yīng)用程序中很少遇到

v學好Linux、首先要學好C語言

《基于Linux的驅(qū)動開發(fā)》PDF課件

遠見品質(zhì)

linux2.4的內(nèi)核名目結(jié)構(gòu)

/arch/arch/drivers/drivers/kernel/kernel/lib/lib/boot/boot

/arm/arm

/alpha/alpha

/m68k/m68k/kernel/kernel/lib/mm/lib/mm

/mach-s3c2410/mach-s3c2410

/Documentation/Documentation/ipc/ipc/fs/fsLinux2.4.xLinux2.4.x/include/include/mm/mm/init/init/net/net/scripts/scripts/asm-arm/asm-arm/arch-s3c2410/arch-s3c2410/linux/linux/proc-armv/proc-armv/net/net

《基于Linux的驅(qū)動開發(fā)》PDF課件

遠見品質(zhì)

Linux的驅(qū)動程序

vLinux下對外設(shè)的訪問只能通過驅(qū)動程序。uClinux下可以

在應(yīng)用層直接訪問外設(shè),操作寄存器口,但是無法處理中斷、DMA、搶占、原子操作等——不推舉使用統(tǒng)的驅(qū)動程序:?Open、Release、read、write、ioctl…

vLinux對于驅(qū)動程序有統(tǒng)一的接口,以文件的形式定義系

v驅(qū)動程序是內(nèi)核的一部分,可以使用中斷、DMA等操作v驅(qū)動程序需要在用戶態(tài)和內(nèi)核態(tài)之間傳遞數(shù)據(jù)v對于簡單的應(yīng)用可以考慮是用mmap

《基于Linux的驅(qū)動開發(fā)》PDF課件

遠見品質(zhì)

什么是MMU(Memorymanagementunit)

遠見品質(zhì)

Linux下設(shè)備和模塊的分類

根據(jù)上述系統(tǒng)內(nèi)核的功能,Linux中把系統(tǒng)的設(shè)備定義成如下三類:v字符設(shè)備v塊設(shè)備v網(wǎng)絡(luò)設(shè)備

遠見品質(zhì)

Linux下的設(shè)備

vLinux的設(shè)備以文件的形式存在于/dev名目下v設(shè)備文件是特別文件,使用ls/dev-l命令可以看到:crw-------1rootroot10,7Aug312024amigamouse1crw-------1rootroot10,134Aug312024apm_biosbrw-rw----1rootdisk29,0Aug312024aztcd

遠見品質(zhì)

主設(shè)備號和次設(shè)備號

v主設(shè)備號標識設(shè)備對應(yīng)的驅(qū)動程序v一個驅(qū)動程序可以掌握若干個設(shè)備,次設(shè)備號供應(yīng)了一種區(qū)分

它們的方法v系統(tǒng)增加一個驅(qū)動程序就要給予它一個主設(shè)備號。這一賦值過程在驅(qū)動程序的初始化過程中

intregister_chrdev(unsignedintmajor,constchar*name,structfile_operations*fops);

遠見品質(zhì)

使用devfs

v在Linux2.4的內(nèi)核里引入了devfs來

解決linux下設(shè)備文件管理的問題v在驅(qū)動程序中通過devfs_register()函數(shù)創(chuàng)建設(shè)備文件系統(tǒng)的節(jié)點v系統(tǒng)啟動的時候mount設(shè)備文件系統(tǒng)

v全部需要的設(shè)備節(jié)點都由內(nèi)核自動

管理。/dev名目下只有掛載的設(shè)備

遠見品質(zhì)

Linux2.6內(nèi)核與devfs

vLinux2.6內(nèi)核引入了sysfs文件系統(tǒng)為每個系統(tǒng)

的硬件樹進行分級處理

vDevfs在Linux2.6中被標記為舍棄的特性(在

Linux2.6.15及以后的版本則取消了對它的支持),而使用udev。

?維護動態(tài)設(shè)備?從sysfs獲得的信息,可以供應(yīng)對特定設(shè)備的固定設(shè)備名。對于熱插拔的設(shè)備,這尤其重要?udev是在用戶空間的腳本文件,這很簡單被編輯和修改?可以代替hotplug腳本

v為了保證舊應(yīng)用程序的兼容性,在嵌入式系統(tǒng)

中,是用devfs還是一個好方法。即使在Linux2.6.15內(nèi)核以后,也可以通過ndevfs(nanodevfs)補丁供應(yīng)對devfs特性的兼容。

遠見品質(zhì)

在Linux2.6內(nèi)核中使用udev

v建議,在2.6.15以后的版本中使用udevv使用ramfs作為udev的載體

?mount–tramfsnone/dev

vudev使用的規(guī)章集位于/etc/udev/*vudev的官方地址:

http://./pub/linux/utils/kernel/hotplug/udev.html

v參考文章:Writingudevrules

遠見品質(zhì)

設(shè)備驅(qū)動程序的使用與測試方法

v應(yīng)用層使用open、close、read、

write系統(tǒng)調(diào)用——需要編寫應(yīng)用程序

v使用系統(tǒng)命令可以進行最基本的測

試:

?cat/dev/urandom?echo/dev/urandom>/dev/fb0?ddif=/dev/touchscreenof=/var/tmp/testbs=16count=100

遠見品質(zhì)

一個簡潔的Linux驅(qū)動程序原理

遠見品質(zhì)

Linux驅(qū)動程序加載方式

v驅(qū)動程序直接編譯入內(nèi)核

?驅(qū)動程序在內(nèi)核啟動時就已經(jīng)在內(nèi)存中?可以保留專用存儲器空間

v驅(qū)動程序以模塊形式存儲在文件系

統(tǒng)里,需要時動態(tài)載入內(nèi)核

?驅(qū)動程序按需加載,不用季節(jié)省內(nèi)存?驅(qū)動程序相對獨立于內(nèi)核,升級敏捷

遠見品質(zhì)

Linux驅(qū)動程序模塊加載

遠見品質(zhì)

嵌入式Linux下常見的文件系統(tǒng)

vRomFS:只讀文件系統(tǒng),可以放在ROM空間,也可以在系統(tǒng)的vvvvv

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ā)送給進程供應(yīng)一種機制,可以查看系統(tǒng)模塊裝載的信息devFS:設(shè)備文件系統(tǒng)

遠見品質(zhì)

v

Linux上的Ext2fs

支持4TB存儲、文件名稱最長1012字符v可選擇規(guī)律塊v快速符號鏈接

vvv

vv

Ext2不適合flash設(shè)備是為象IDE設(shè)備那樣的塊設(shè)備設(shè)計的,規(guī)律塊大小必需是512byte、1KB、2KB等沒有供應(yīng)對基于扇區(qū)的擦除/寫操作的良好管理?假如在一個扇區(qū)中擦除單個字節(jié),必需將整個扇區(qū)復制到RAM,然后擦除,再重寫入在消失電源故障時,Ext2fs是不能防止崩潰的文件系統(tǒng)不支持損耗平衡,縮短了flash的壽命

遠見品質(zhì)

jffs/jffs2文件系統(tǒng)的優(yōu)缺點

v日志文件系統(tǒng)v供應(yīng)了更好的崩潰、掉電平安愛護vjffs2支持對flash的勻稱磨損v在扇區(qū)級別上執(zhí)行閃存擦除/寫/

讀操作要比Ext2文件系統(tǒng)好

v文件系統(tǒng)接近滿時,JFFS2會大大

放慢運行速度——垃圾收集

遠見品質(zhì)

Nand上yaffs文件系統(tǒng)的優(yōu)勢

v特地為Nandf

溫馨提示

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

評論

0/150

提交評論