嵌入式系統(tǒng)第九講嵌入式Linux設(shè)備驅(qū)動程序開發(fā)_第1頁
嵌入式系統(tǒng)第九講嵌入式Linux設(shè)備驅(qū)動程序開發(fā)_第2頁
嵌入式系統(tǒng)第九講嵌入式Linux設(shè)備驅(qū)動程序開發(fā)_第3頁
嵌入式系統(tǒng)第九講嵌入式Linux設(shè)備驅(qū)動程序開發(fā)_第4頁
嵌入式系統(tǒng)第九講嵌入式Linux設(shè)備驅(qū)動程序開發(fā)_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、系統(tǒng)調(diào)用接口文件子系統(tǒng)I/o設(shè)備字符、塊設(shè)備設(shè)備驅(qū)動程序進程間通信進程控制進程調(diào)度內(nèi)存管理硬件控制程序內(nèi)核簡略結(jié)構(gòu):設(shè)備驅(qū)動是位于應用和物理設(shè)備之間的軟件層,負責完成二者間的I/O操作;在LINUX系統(tǒng)里,對用戶程序,設(shè)備驅(qū)動隱藏了設(shè)備的具體細節(jié),為不同設(shè)備提供了一致的接口;設(shè)備驅(qū)動是嵌入式系統(tǒng)開發(fā)的重要內(nèi)容之一通常有字符設(shè)備、塊設(shè)備、網(wǎng)絡設(shè)備三種字符設(shè)備 字符設(shè)備是能夠像字節(jié)流一樣被訪問的設(shè)備,例如字符終端、串口、鍵盤、聲卡、LCD、觸摸屏、掃描儀、打印機、并口、鼠標、游戲桿等。塊設(shè)備 塊設(shè)備是指支持面向塊訪問的設(shè)備,每塊包含2的N次冪字節(jié)數(shù)據(jù),例如IDE設(shè)備(磁盤)、floppy disk

2、 、CD-ROM、Ramdisk等。 塊設(shè)備接口必須支持掛裝文件系統(tǒng)。網(wǎng)絡設(shè)備即能夠和其他主機交換數(shù)據(jù)的設(shè)備接口。LINUX系統(tǒng)中,設(shè)備由一個主設(shè)備號和一個次設(shè)備號來標識;主設(shè)備號唯一標識了設(shè)備類型,即設(shè)備驅(qū)動程序類型,它是塊設(shè)備表或字符設(shè)備表中設(shè)備表項的索引。次設(shè)備號僅由設(shè)備驅(qū)動程序解釋,一般用于識別在若干可能的硬件設(shè)備中,I/O請求所涉及到的那個設(shè)備。安裝驅(qū)動模塊insmod driver_name.o卸載驅(qū)動模塊rmmod driver_name瀏覽系統(tǒng)中的模塊lsmodint init_module(void)硬件初始化;注冊設(shè)備;注冊中斷;void cleanup_module(vo

3、id)釋放中斷資源;釋放該設(shè)備;釋放其他的系統(tǒng)資源;module_init(新入口函數(shù)名稱); 原有的入口函數(shù)失效module_exit(新出口函數(shù)名稱); 原有的出口函數(shù)失效file_operations結(jié)構(gòu)struct file_operations driver_fops = open: driver_open,release: driver_release,read: driver_read,write:driver_write,poll: driver_poll,ioctl: driver_ioctl,fasync: driver_fasync, ;file_operations結(jié)構(gòu)

4、 open: 用于打開文件設(shè)備 release: 在關(guān)閉文件的調(diào)用 read: 用于從設(shè)備中讀取數(shù)據(jù) write: 向設(shè)備發(fā)送數(shù)據(jù) poll: 查詢設(shè)備是否可讀或可寫 ioctl: 提供執(zhí)行設(shè)備特定命令的方法 fasync: 用于設(shè)備的異步通知操作字符設(shè)備注冊:result = register_chrdev(0, MOD_NAME, &keypad_fops); if ( result 0 )return -ENODEV; 然后可以手工添加設(shè)備節(jié)點:mknod /dev/ MOD_NAME, C, MAJOR,MINOR字符設(shè)備注銷:unregister_chrdev(Major,

5、MOD_NAME);手工刪除設(shè)備節(jié)點:rm /dev/ MOD_NAME字符設(shè)備注冊:result = devfs_register_chrdev(0, MOD_NAME, &keypad_fops);/申請主設(shè)備號 if ( result 0 ) return -ENODEV;devfs_handle = devfs_register(NULL, MOD_NAME, ,result, 0,&keypad_fops, NULL); 該方法的優(yōu)點:無需手工創(chuàng)建設(shè)備節(jié)點,由系統(tǒng)自動完成。devfs_unregister_chrdev(MAJOR, MOD_NAME);devfs_unregister(devfs_handle);申請:request_irq(irq , irq_handler, flag, dev_name, dev_id);Flag 中斷還是快速中斷dev_id 用于共享中斷信號線。釋放:free_irq(irq, dev_id); 方法一:copy_to_user(void *to, const void *from,unsigned long count);copy_from_user(void *to, const void *from,unsign

溫馨提示

  • 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

提交評論