Linux驅(qū)動(dòng)程序開發(fā)_第1頁
Linux驅(qū)動(dòng)程序開發(fā)_第2頁
Linux驅(qū)動(dòng)程序開發(fā)_第3頁
Linux驅(qū)動(dòng)程序開發(fā)_第4頁
Linux驅(qū)動(dòng)程序開發(fā)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、準(zhǔn)備 Linux的安裝及基本操作 C語言語法 Gcc開發(fā)工具鏈的使用與調(diào)試批呈生成用戶LDV z并限制組空間為2G學(xué)生可以在服務(wù)器上開發(fā)linux驅(qū)動(dòng),但必須拿到具有全部權(quán)限的機(jī)器上進(jìn)行測(cè)試 學(xué)生可自行安裝windows xp與linux(debian或utunbu )參考文獻(xiàn) Linux設(shè)備歩動(dòng)3 LDD3中文版.pdf-Linux驅(qū)動(dòng)開發(fā)第三版(英文原版)第2頁/共24頁設(shè)備驅(qū)動(dòng)程序的作用直接進(jìn)入內(nèi)核,對(duì)系統(tǒng)的任何東西逬行操作Linux設(shè)備驅(qū)動(dòng)程序完全是以文件的形式出現(xiàn)的 Linux設(shè)備驅(qū)動(dòng)程序后綴2.6為ko , 26以前為0第3頁/共24頁開發(fā)環(huán)境的搭建對(duì)于Linux驅(qū)動(dòng)程序開發(fā)而言,

2、除了編譯器gcc之外,內(nèi)核源碼是必須的,而且源碼必須經(jīng)過正確的編譯, 安裝正確的模塊,即通過make (編譯),make modules (模塊編譯),make modulesnstall (安裝 模塊)。第4頁/共24頁安裝內(nèi)核源碼 apt-get install linux-tree-2.6.18 apt-get install linux-kernel-headers apt-get install install linux-headers-vuname內(nèi)核開發(fā)頭文件的正確安裝也是很重要的,否則如果沒有正確安裝則在驅(qū)動(dòng)程序編譯時(shí)會(huì)出現(xiàn)Vlib/modules/'uname -r

3、'/build can't exist.p的錯(cuò)誤提示。配置內(nèi)核以root身份進(jìn)入內(nèi)核源碼的目錄,執(zhí)行以下命令: make mrproper make mepuconfig(如果沒有安裝ncurses庫,此命令將不能 被正確執(zhí)行,可以通過命令apt-get install Iibncurses5-dev 安裝ncurses庫乏后再癡行此配晝命令) make prepare make modules_prepare(如果不執(zhí)行此命令在編譯驅(qū)動(dòng)程序 時(shí)將會(huì)出現(xiàn)"/bin/sh: line 1: scripts/modpost: No such file or directo

4、ry, in stage 2”的錯(cuò)誤)內(nèi)核的任務(wù)逬程管理(*)內(nèi)存管理(*)文件系統(tǒng)設(shè)備控制網(wǎng)絡(luò)第7頁/共24頁內(nèi)核模塊可加載驅(qū)動(dòng)程序是模塊化的KemdJ=s=lw_& OXMumoryConsoles,etc.Networkinterfaces第9頁/共24頁驅(qū)動(dòng)程序可根據(jù)要求逬行加載與卸載 insmodrmmod第10頁/共24頁驅(qū)動(dòng)程序分類設(shè)備在/dev目錄下都有專門的設(shè)備文件名,對(duì)驅(qū)動(dòng)程序的操作是通過這些設(shè)備文件來進(jìn)行的字符設(shè)備一次讀寫少臺(tái)數(shù)據(jù),如串口設(shè)備塊設(shè)備一次讀寫大星數(shù)據(jù),如硬盤網(wǎng)絡(luò)接口與其他驅(qū)動(dòng)程序不同,專門分為一類第12頁/共24頁個(gè)例子 Hello, driver-

5、world第笛頁/共24頁內(nèi)核 Makefile與傳統(tǒng)的應(yīng)用程序Makefile有很大不同,內(nèi)核編譯系統(tǒng)將會(huì)多做一些工作 obj-m := hello.o有一個(gè)模塊hello.ko將從hello.o中產(chǎn)生如果模塊依賴于非默認(rèn)的產(chǎn)生方式 obj-m := module.o module-objs := filel.o file2.o make -C /kernel-26 M =、pwd、modules-C /kernel-2.6改變目錄,其目錄是為了找到內(nèi)核的頂層Makefile M Jpwd、,回到生成模塊的目錄第14頁/共24頁scull這是一字符驅(qū)動(dòng)程序,通過它來學(xué)習(xí)字符驅(qū)動(dòng)程序的開發(fā)方法

6、 Simple Character Utility for Loading Localities的縮寫這是一個(gè)不需要額外硬件設(shè)備支持的驅(qū)動(dòng)程序,使用一塊內(nèi)存作為設(shè)備可以使用cp cat以及io重走向操作命令第15頁/共24頁驅(qū)動(dòng)程序主數(shù)與次數(shù)Major主數(shù)(是系統(tǒng)分配給加載驅(qū)動(dòng)程序的數(shù)據(jù)),minor次數(shù)(由用戶定義的驅(qū)動(dòng)程序的附本號(hào))字符驅(qū)動(dòng)程序在/dev目錄下有對(duì)應(yīng)的文件,所有與驅(qū)動(dòng)相關(guān)的操作都轉(zhuǎn)化成對(duì)這個(gè)文件的操作。此文件的 屬性為c ,同時(shí)擁有主數(shù)與次數(shù)二個(gè)特征第16頁/共24頁分配設(shè)備號(hào)_ 驅(qū)動(dòng)程序使用函數(shù)int registerchrdev_region(dev_t first,

7、unsigned int count,char name);來獲得系統(tǒng)分配的主號(hào)一一一First主號(hào)分配的范圍,count分配的數(shù)星,name為驅(qū)動(dòng)程序名-如果成功返回值為0另一個(gè)函數(shù)int alloc_chdev_region(dev_t *devf unsigned int firstminocunsigned int count, char *name);第17頁/共24頁釋放設(shè)備號(hào) void unregister_chrdev_region(dev_t first, unsigned int count);模塊卸載時(shí)使用第18頁/共24頁系統(tǒng)已經(jīng)加載的模塊 Cat /proc/devices加載模塊后根據(jù)這個(gè)文件中的內(nèi)容來創(chuàng)建關(guān)聯(lián)的驅(qū)動(dòng)文件第19頁/共24頁sculljoad是一個(gè)scull的安裝腳本-分析只需將變呈名更改便可以用于其他驅(qū)動(dòng)的安裝第20頁/共24頁scull_ unload這是scull的卸載腳本分析第21頁/共24頁scull.init支持參數(shù)的腳本,類似系統(tǒng)服務(wù)操作可完成load , unload等操作分析第22頁/共24頁文件操作對(duì)驅(qū)動(dòng)程序的操作都可轉(zhuǎn)化成對(duì)文件的操作在內(nèi)核中共有三種相關(guān)的數(shù)據(jù)結(jié)構(gòu) file_operations# filejnode第23頁/共24頁File Operation

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論