下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《基于Linux的驅(qū)動(dòng)開發(fā)》PDF課件遠(yuǎn)見品質(zhì)
Linux內(nèi)核與C代碼
vLinux內(nèi)核浩大,結(jié)構(gòu)簡(jiǎn)單
?對(duì)Linux2.4內(nèi)核的統(tǒng)計(jì):1萬(wàn)個(gè)文件,4百萬(wàn)行代碼?對(duì)Linux2.6內(nèi)核的統(tǒng)計(jì):1.5萬(wàn)個(gè)文件,6百萬(wàn)行代碼
vLinux內(nèi)核的主體使用GNUC,在ANSIC
上進(jìn)行了擴(kuò)充
?Linux內(nèi)核必需由gcc編譯編譯?gcc和Linux內(nèi)核版本并行進(jìn)展,對(duì)于版本的依靠性強(qiáng)?Linux2.6內(nèi)核建議使用gcc3.3以上版本,C99編程風(fēng)格
v內(nèi)核代碼中使用的一些編程技巧,在通常
的應(yīng)用程序中很少遇到
v學(xué)好Linux、首先要學(xué)好C語(yǔ)言
《基于Linux的驅(qū)動(dòng)開發(fā)》PDF課件
遠(yuǎn)見品質(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ū)動(dòng)開發(fā)》PDF課件
遠(yuǎn)見品質(zhì)
Linux的驅(qū)動(dòng)程序
vLinux下對(duì)外設(shè)的訪問只能通過驅(qū)動(dòng)程序。uClinux下可以
在應(yīng)用層直接訪問外設(shè),操作寄存器口,但是無(wú)法處理中斷、DMA、搶占、原子操作等——不推舉使用統(tǒng)的驅(qū)動(dòng)程序:?Open、Release、read、write、ioctl…
vLinux對(duì)于驅(qū)動(dòng)程序有統(tǒng)一的接口,以文件的形式定義系
v驅(qū)動(dòng)程序是內(nèi)核的一部分,可以使用中斷、DMA等操作v驅(qū)動(dòng)程序需要在用戶態(tài)和內(nèi)核態(tài)之間傳遞數(shù)據(jù)v對(duì)于簡(jiǎn)單的應(yīng)用可以考慮是用mmap
《基于Linux的驅(qū)動(dòng)開發(fā)》PDF課件
遠(yuǎn)見品質(zhì)
什么是MMU(Memorymanagementunit)
遠(yuǎn)見品質(zhì)
Linux下設(shè)備和模塊的分類
根據(jù)上述系統(tǒng)內(nèi)核的功能,Linux中把系統(tǒng)的設(shè)備定義成如下三類:v字符設(shè)備v塊設(shè)備v網(wǎng)絡(luò)設(shè)備
遠(yuǎn)見品質(zhì)
Linux下的設(shè)備
vLinux的設(shè)備以文件的形式存在于/dev名目下v設(shè)備文件是特別文件,使用ls/dev-l命令可以看到:crw-------1rootroot10,7Aug312024amigamouse1crw-------1rootroot10,134Aug312024apm_biosbrw-rw----1rootdisk29,0Aug312024aztcd
遠(yuǎn)見品質(zhì)
主設(shè)備號(hào)和次設(shè)備號(hào)
v主設(shè)備號(hào)標(biāo)識(shí)設(shè)備對(duì)應(yīng)的驅(qū)動(dòng)程序v一個(gè)驅(qū)動(dòng)程序可以掌握若干個(gè)設(shè)備,次設(shè)備號(hào)供應(yīng)了一種區(qū)分
它們的方法v系統(tǒng)增加一個(gè)驅(qū)動(dòng)程序就要給予它一個(gè)主設(shè)備號(hào)。這一賦值過程在驅(qū)動(dòng)程序的初始化過程中
intregister_chrdev(unsignedintmajor,constchar*name,structfile_operations*fops);
遠(yuǎn)見品質(zhì)
使用devfs
v在Linux2.4的內(nèi)核里引入了devfs來(lái)
解決linux下設(shè)備文件管理的問題v在驅(qū)動(dòng)程序中通過devfs_register()函數(shù)創(chuàng)建設(shè)備文件系統(tǒng)的節(jié)點(diǎn)v系統(tǒng)啟動(dòng)的時(shí)候mount設(shè)備文件系統(tǒng)
v全部需要的設(shè)備節(jié)點(diǎn)都由內(nèi)核自動(dòng)
管理。/dev名目下只有掛載的設(shè)備
遠(yuǎn)見品質(zhì)
Linux2.6內(nèi)核與devfs
vLinux2.6內(nèi)核引入了sysfs文件系統(tǒng)為每個(gè)系統(tǒng)
的硬件樹進(jìn)行分級(jí)處理
vDevfs在Linux2.6中被標(biāo)記為舍棄的特性(在
Linux2.6.15及以后的版本則取消了對(duì)它的支持),而使用udev。
?維護(hù)動(dòng)態(tài)設(shè)備?從sysfs獲得的信息,可以供應(yīng)對(duì)特定設(shè)備的固定設(shè)備名。對(duì)于熱插拔的設(shè)備,這尤其重要?udev是在用戶空間的腳本文件,這很簡(jiǎn)單被編輯和修改?可以代替hotplug腳本
v為了保證舊應(yīng)用程序的兼容性,在嵌入式系統(tǒng)
中,是用devfs還是一個(gè)好方法。即使在Linux2.6.15內(nèi)核以后,也可以通過ndevfs(nanodevfs)補(bǔ)丁供應(yīng)對(duì)devfs特性的兼容。
遠(yuǎn)見品質(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
遠(yuǎn)見品質(zhì)
設(shè)備驅(qū)動(dòng)程序的使用與測(cè)試方法
v應(yīng)用層使用open、close、read、
write系統(tǒng)調(diào)用——需要編寫應(yīng)用程序
v使用系統(tǒng)命令可以進(jìn)行最基本的測(cè)
試:
?cat/dev/urandom?echo/dev/urandom>/dev/fb0?ddif=/dev/touchscreenof=/var/tmp/testbs=16count=100
遠(yuǎn)見品質(zhì)
一個(gè)簡(jiǎn)潔的Linux驅(qū)動(dòng)程序原理
遠(yuǎn)見品質(zhì)
Linux驅(qū)動(dòng)程序加載方式
v驅(qū)動(dòng)程序直接編譯入內(nèi)核
?驅(qū)動(dòng)程序在內(nèi)核啟動(dòng)時(shí)就已經(jīng)在內(nèi)存中?可以保留專用存儲(chǔ)器空間
v驅(qū)動(dòng)程序以模塊形式存儲(chǔ)在文件系
統(tǒng)里,需要時(shí)動(dòng)態(tài)載入內(nèi)核
?驅(qū)動(dòng)程序按需加載,不用季節(jié)省內(nèi)存?驅(qū)動(dòng)程序相對(duì)獨(dú)立于內(nèi)核,升級(jí)敏捷
遠(yuǎn)見品質(zhì)
Linux驅(qū)動(dòng)程序模塊加載
遠(yuǎn)見品質(zhì)
嵌入式Linux下常見的文件系統(tǒng)
vRomFS:只讀文件系統(tǒng),可以放在ROM空間,也可以在系統(tǒng)的vvvvv
RAM中,嵌入式linux中常用來(lái)作根文件系統(tǒng)RamFS:利用VFS自身結(jié)構(gòu)而形成的內(nèi)存文件系統(tǒng),使用系統(tǒng)的RAM空間JFFS/JFFS2:為Flash設(shè)計(jì)的日志文件系統(tǒng)Yaffs:特地為NandFlash設(shè)計(jì)proc:為內(nèi)核和內(nèi)核模塊將信息發(fā)送給進(jìn)程供應(yīng)一種機(jī)制,可以查看系統(tǒng)模塊裝載的信息devFS:設(shè)備文件系統(tǒng)
遠(yuǎn)見品質(zhì)
v
Linux上的Ext2fs
支持4TB存儲(chǔ)、文件名稱最長(zhǎng)1012字符v可選擇規(guī)律塊v快速符號(hào)鏈接
vvv
vv
Ext2不適合flash設(shè)備是為象IDE設(shè)備那樣的塊設(shè)備設(shè)計(jì)的,規(guī)律塊大小必需是512byte、1KB、2KB等沒有供應(yīng)對(duì)基于扇區(qū)的擦除/寫操作的良好管理?假如在一個(gè)扇區(qū)中擦除單個(gè)字節(jié),必需將整個(gè)扇區(qū)復(fù)制到RAM,然后擦除,再重寫入在消失電源故障時(shí),Ext2fs是不能防止崩潰的文件系統(tǒng)不支持損耗平衡,縮短了flash的壽命
遠(yuǎn)見品質(zhì)
jffs/jffs2文件系統(tǒng)的優(yōu)缺點(diǎn)
v日志文件系統(tǒng)v供應(yīng)了更好的崩潰、掉電平安愛護(hù)vjffs2支持對(duì)flash的勻稱磨損v在扇區(qū)級(jí)別上執(zhí)行閃存擦除/寫/
讀操作要比Ext2文件系統(tǒng)好
v文件系統(tǒng)接近滿時(shí),JFFS2會(huì)大大
放慢運(yùn)行速度——垃圾收集
遠(yuǎn)見品質(zhì)
Nand上yaffs文件系統(tǒng)的優(yōu)勢(shì)
v特地為Nandf
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 直筒模具設(shè)計(jì)課程設(shè)計(jì)
- 說(shuō)明文課程設(shè)計(jì)
- 課程設(shè)計(jì)宿舍供電
- 課程設(shè)計(jì)壓縮包
- 2025年度科技園區(qū)物業(yè)房屋租賃管理服務(wù)協(xié)議3篇
- 2025年小學(xué)班主任班級(jí)工作總結(jié)范文(2篇)
- 2025年事業(yè)單位年檢工作年終總結(jié)模版(2篇)
- 通信原理課程設(shè)計(jì)實(shí)驗(yàn)
- 二零二五年度數(shù)據(jù)中心電力需求響應(yīng)服務(wù)合同2篇
- 二零二五年度建筑垃圾資源化處理質(zhì)量合同3篇
- 2025年考研政治全套復(fù)習(xí)題庫(kù)及答案(全冊(cè)完整版)
- 新人教版小學(xué)英語(yǔ)五年級(jí)下冊(cè)單詞默寫版
- 3《歡歡喜喜慶國(guó)慶》說(shuō)課稿-2024-2025學(xué)年道德與法治二年級(jí)上冊(cè)統(tǒng)編版
- 蓄勢(shì)聚能籌遠(yuǎn)略揚(yáng)帆破浪啟新航-在2025年務(wù)虛會(huì)上的講話提綱
- 先進(jìn)集體發(fā)言稿
- 學(xué)生寒假心理健康教育心理調(diào)試過健康寒假課件
- 八年級(jí)地理(下冊(cè)星球版)復(fù)習(xí)提綱
- 新建3000只肉羊養(yǎng)殖基地建設(shè)項(xiàng)目可行性研究報(bào)告
- 山東省濟(jì)南市2023-2024學(xué)年高二上學(xué)期期末考試生物試題 附答案
- DB32T 3292-2017 大跨徑橋梁鋼橋面環(huán)氧瀝青混凝土鋪裝養(yǎng)護(hù)技術(shù)規(guī)程
- 形容詞副詞(專項(xiàng)訓(xùn)練)-2023年中考英語(yǔ)二輪復(fù)習(xí)
評(píng)論
0/150
提交評(píng)論