《linux設備驅(qū)動程序設計》課程試卷B及答案_第1頁
《linux設備驅(qū)動程序設計》課程試卷B及答案_第2頁
《linux設備驅(qū)動程序設計》課程試卷B及答案_第3頁
《linux設備驅(qū)動程序設計》課程試卷B及答案_第4頁
《linux設備驅(qū)動程序設計》課程試卷B及答案_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、10/10linux設備驅(qū)動程序設計課程試卷B適用專業(yè): 考試日期: 閉卷所需時間:120分鐘 總分:100分 一、填空題(每空1分,共10分)1.在LINUX下加載程序可以采用_和_兩種方式。2.Linux設備驅(qū)動程序可以分為_、_、_三類。3.觸摸屏按照工作原理可以分為_、_、_共4類4. CAN是一種_的串行通信總線。二、簡答題(每題10分,共90分)1什么是設備驅(qū)動?請詳細說明 (10分)2. 在Linux內(nèi)核中增加程序需要完成三項工作: (10分)3. 主流的嵌入式操作系統(tǒng)包含那些?各有什么特點 (10分)4.LINUX中引入了“模塊”的概念,那么什么是“模塊”?它有什么特點? (1

2、0分)5.IIS總線是什么?它的主要用途與硬件結(jié)構(gòu)是什么?IIS總線如何操作?(10分)6. File結(jié)構(gòu)體的主要結(jié)構(gòu)是什么? 7. Devfs文件系統(tǒng)是什么?它有什么作用?8. 下面是一個比較完整的驅(qū)動程序例子,請閱讀代碼,詳細寫出每段的意義 (每空2分,共20分)頭文件 略MODULE_LICENSE(GPL); #define MAJOR_NUM 252 static ssize_t hello_read(struct file *, char *, size_t, loff_t * off);static ssize_t hello_write(struct file *, const

3、 char *, size_t, loff_t * off);static int hello_open(struct inode *inode,struct file *filp);static int hello_release(struct inode *inode,struct file *filp);struct file_operations hello_fops =open: hello_open,read: hello_read, write: hello_write,release:hello_release,; static int global_var = 0; stat

4、ic int _init hello_init(void)int ret;ret = register_chrdev(MAJOR_NUM, hello, &hello_fops);if (ret)printk(hello register failure!n);elseprintk(hello register success!n);return ret; static void _exit hello_exit(void)int ret;ret = unregister_chrdev(MAJOR_NUM, hello);if (ret)printk(hello unregister fail

5、uren!);elseprintk(hello unregister success!n); static int hello_open(struct inode *inode,struct file *filp)printk(this is hello_open!n);return 0; static int hello_release(struct inode *inode,struct file *filp)printk(this is hello_release!n);return 0; static ssize_t hello_read(struct file *filp, char

6、 *buf, size_t len, loff_t *off)printk(this is hello_read!n);if (copy_to_user(buf, &global_var, sizeof(int)return 0; return sizeof(int); static ssize_t hello_write(struct file *filp, const char *buf, size_t len, loff_t *off)printk(this is hello_write!n);if (copy_from_user(&global_var, buf, sizeof(int

7、)return 0; return sizeof(int); module_init(hello_init); module_exit(hello_exit); linux設備驅(qū)動程序設計課程試卷B答案一、填空題1 靜態(tài) 動態(tài)2. 字符設備 塊設備 網(wǎng)絡設備3 電阻式 表明聲波式 電容感應式 紅外線式4. 多主方式二,問答題1驅(qū)動程序(Device Driver)全稱為“設備驅(qū)動程序”,是一種可以使計算機和設備通信的特殊程序??梢哉f相當于硬件的接口,操作系統(tǒng)只能通過這個接口,才能控制硬件設備的工作,假如某設備的驅(qū)動程序未能正確安裝,便不能正常工作。2 將編寫的源代碼復制到Linux內(nèi)核源代碼的

8、相應目錄。在目錄的Kconfig文件中增加新源代碼對應項目的編譯配置選項。在目錄的Makefile文件中增加對新源代碼的編譯條目3主流的嵌入式操作系統(tǒng)可以有WINCE、VXWORKS、PALM OS、LINUX等等。Wince 是微軟公司開發(fā)的一種操作系統(tǒng),它功能強大,移植簡單,LINUX是開源的操作系統(tǒng),其源碼開放性好,便于移植到各個平臺。4 從代碼特征上來看,模塊就是可完成一項獨立功能的一組函數(shù)的集合。從使用特征上來看,它在被需要時可以隨時安裝,而在不需要時又可以隨時被加載??傊?,模塊是一個為內(nèi)核或其他內(nèi)核模塊提供使用功能的代碼塊。準確地說,模塊就是一個已編譯但未連接的可執(zhí)行文件5IIS是

9、一種用于傳輸音頻的總線,屬于嵌入式和工業(yè)領(lǐng)域常用的音頻總線之一。IIS有35根物理線連接。通過模擬IIS總線的時序可以對該總線進行操作。6. 文件結(jié)構(gòu)代表一個打開的文件,系統(tǒng)中每個打開的文件在內(nèi)核空間都有一個關(guān)聯(lián)的struct file。它由內(nèi)核在打開文件時創(chuàng)建,并傳遞給在文件上進行操作的任何函數(shù)。在文件的所有實例都關(guān)閉后,內(nèi)核釋放這個數(shù)據(jù)結(jié)構(gòu)。7 Devfs是由Linux2.4內(nèi)核引入的,具有如下優(yōu)點:可以通過程序在設備初始化時在/dev目錄下創(chuàng)建設備文件,卸載設備時將它刪除設備驅(qū)動程序可以指定設備名、所有者和權(quán)限位,用戶空間程序仍然可以修改所有者和權(quán)限位不再需要為設備驅(qū)動程序分配主設備號以及處理次設備號,在程序中可以直接給register_chrdev()傳遞0主設備號以動態(tài)獲得可用的主設備號,并在devfs_register()中指定次設備號8 定義主設備號 填充FILE_OPERATION結(jié)構(gòu) 初始化函數(shù),在其中注冊字符設

溫馨提示

  • 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

提交評論