linu驅(qū)動(dòng)工程師面試題整理_第1頁
linu驅(qū)動(dòng)工程師面試題整理_第2頁
linu驅(qū)動(dòng)工程師面試題整理_第3頁
linu驅(qū)動(dòng)工程師面試題整理_第4頁
linu驅(qū)動(dòng)工程師面試題整理_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、字符型驅(qū)動(dòng)設(shè)備你是怎么創(chuàng)立設(shè)備文件的,就是/dev/下面的設(shè)備文件,供上層應(yīng)用程序翻開使用的文件?答:mknod命令結(jié)合設(shè)備的主設(shè)備號(hào)和次設(shè)備號(hào),可創(chuàng)立一個(gè)設(shè)備文件。答:mknod命令結(jié)合設(shè)備的主設(shè)備號(hào)和次設(shè)備號(hào),可創(chuàng)立一個(gè)設(shè)備文件。UDEV/MDEV自動(dòng)創(chuàng)立設(shè)備文件的方UDEV/MDEVdevfs共有三種方式可以創(chuàng)立設(shè)備文件。答:中斷處理例程應(yīng)當(dāng)盡量短,把能放在后半段(tasklet,等待隊(duì)列等)的任務(wù)盡量放在后半段。答:中斷處理例程應(yīng)當(dāng)盡量短,把能放在后半段(tasklet,等待隊(duì)列等)的任務(wù)盡量放在后半段。tasklet方式。也就是中斷上半部和下半部。其次:中斷效勞程序中不能有堵塞操作。為什么?大家可以爭(zhēng)論。第三:中斷效勞程序留意返回值,要用操作系統(tǒng)定義的宏做為返回值,而不是自己定義的OK,F(xiàn)AIL的是自旋鎖,緣由是在中斷處理例程中,硬中斷是關(guān)閉的,這樣會(huì)喪失可能到來的中斷。的是自旋鎖,緣由是在中斷處理例程中,硬中斷是關(guān)閉的,這樣會(huì)喪失可能到來的中斷。可能標(biāo)記資源的使用狀況?其他進(jìn)程又看不見這個(gè)變量可能標(biāo)記資源的使用狀況?其他進(jìn)程又看不見這個(gè)變量評(píng):其次句話的意思是:定義一個(gè)變量,比方intflag=0;if(flag==0){flag=1;操作臨界區(qū);flag=0;}這樣可否?}這樣可否?答:insmod調(diào)用initrmmod調(diào)用答:insmod調(diào)用initrmmod調(diào)用exit的問題。initexitioremap,定時(shí)器,留下一點(diǎn)痕跡。6、在驅(qū)動(dòng)調(diào)試過程中遇到過oops7、ioctlunlock_ioctl答:由于內(nèi)核沒有方法直接訪問物理內(nèi)存地址,必需先通過ioremap獲得對(duì)應(yīng)的虛擬地址。8答:由于內(nèi)核沒有方法直接訪問物理內(nèi)存地址,必需先通過ioremap獲得對(duì)應(yīng)的虛擬地址。9platfoem總線的匹配規(guī)章是?在具體應(yīng)用上要不要先注冊(cè)驅(qū)動(dòng)再注冊(cè)設(shè)備?有先后挨次沒?10、linux11linux存概念?12、linuxtaskletworkqueue分上半部和下半部?13、linux14、linuxspinlock15、linuxRCU16、linux17、linux18、MIPSCpuuboot19、linuxreadlinux核空間?20、linux21、linux22、linuxKmalloc Kmalloc get_free_mempool_createIRQFIQCPU上半局部執(zhí)行與硬件相關(guān)的處理要求快,而有些驅(qū)動(dòng)在中斷處理程序中又需要完成大量工作,這構(gòu)成沖突,所以Linux有所謂的上半局部執(zhí)行與硬件相關(guān)的處理要求快,而有些驅(qū)動(dòng)在中斷處理程序中又需要完成大量工作,這構(gòu)成沖突,所以Linux有所謂的bottomhalf成的,在開中斷的環(huán)境下,由底半程序隨后完成.LinuxLinux的底半機(jī)制主要有Tasklet和workqueue以及softirq2.4內(nèi)核則有BHTaskqueue,softirq,tasklet沒有workqueue),其實(shí)底半可以理解成一種工作的延遲。所以實(shí)際使用時(shí)跟timermmap函數(shù)實(shí)現(xiàn)把一個(gè)文件映射到一個(gè)內(nèi)存區(qū)域,從而我們可以像讀寫內(nèi)存一樣讀寫文件,他比單純調(diào)用read/write也要快上很多。在某些時(shí)候我們可以把內(nèi)存的內(nèi)容拷貝到一個(gè)文件中實(shí)現(xiàn)內(nèi)存?zhèn)浞?,固然,也可以把文件的?nèi)容映射到內(nèi)存來恢復(fù)某些效勞。另外,mmapmmap函數(shù)實(shí)現(xiàn)把一個(gè)文件映射到一個(gè)內(nèi)存區(qū)域,從而我們可以像讀寫內(nèi)存一樣讀寫文件,他比單純調(diào)用read/write也要快上很多。在某些時(shí)候我們可以把內(nèi)存的內(nèi)容拷貝到一個(gè)文件中實(shí)現(xiàn)內(nèi)存?zhèn)浞荩倘?,也可以把文件的?nèi)容映射到內(nèi)存來恢復(fù)某些效勞。另外,mmap實(shí)現(xiàn)共享內(nèi)存也是其主要應(yīng)用之一,mmap系統(tǒng)調(diào)用使得進(jìn)程之間通過映射同一個(gè)一般文件實(shí)現(xiàn)共享內(nèi)存。實(shí)現(xiàn)共享內(nèi)存。驅(qū)動(dòng)里面為什么要有并發(fā)、互斥的把握?如何實(shí)現(xiàn)?講個(gè)例子?自旋鎖在同一時(shí)刻只能被最多一個(gè)內(nèi)核任務(wù)持有自旋鎖在同一時(shí)刻只能被最多一個(gè)內(nèi)核任務(wù)持有l(wèi)inux中的信號(hào)量釋放后,在等待隊(duì)列中的一個(gè)任務(wù)將被喚醒,從而便可以獲得這個(gè)信號(hào)量。任務(wù)調(diào)度的機(jī)制?linuxwincelinuxtty嵌入式設(shè)備,為加快啟動(dòng)速度,可以做哪些方面的優(yōu)化?USBGetGetDeviceDescriptor。主機(jī)的第一個(gè)命令要求得到設(shè)備描述符,此SETUP包為8個(gè)字節(jié)數(shù)據(jù)〔80,06,00,01,00,00,40,00〕,發(fā)向地址0,端口0?!?0”表示返回?cái)?shù)40HDEV_DESC[8個(gè)字節(jié),用于說明設(shè)備的描述符的真實(shí)長度和設(shè)備的類型。SetAddress〔00,05,02,00,00,00,00,00〕,在主機(jī)只有一個(gè)USB設(shè)備的時(shí)候,這個(gè)地址一般會(huì)是2,狀態(tài),主機(jī)以后會(huì)在的指定地址處訪問設(shè)備。GetDeviceDescriptor。主機(jī)再次發(fā)送懇求得到設(shè)備描述符的數(shù)據(jù)包〔80,06,00,01,00,00,12,00〕,與上次不同的是,要求的數(shù)據(jù)的長度是實(shí)際的數(shù)據(jù)長度,同時(shí)是發(fā)SetAddress讀取全部ConfigurationDescriptor。接著主機(jī)要求得到設(shè)備全部的配置描述符、接口描述符和節(jié)點(diǎn)描述符〔80,06,00,02,00,00,40,00〕,由于主機(jī)不知道設(shè)備描述符64(5)SetInterface,主機(jī)發(fā)送數(shù)據(jù)包〔01,0B,00,00,00,00,00,00〕,設(shè)置接口值0。SetConifguration,確定USBU進(jìn)展后續(xù)的UUGetMaxLun操作,但是實(shí)際上對(duì)于U盤來說無視該步驟也沒有問題。generalpurposeinput/outputGPIO是相對(duì)于芯片本身而言的,如某個(gè)管腳是芯片的GPIO腳,則該腳可作為輸入或輸出高或低電平使用,固然某個(gè)腳具有復(fù)用的功能,即可做generalpurposeinput/outputGPIO是相對(duì)于芯片本身而言的,如某個(gè)管腳是芯片的GPIO腳,則該腳可作為輸入或輸出高或低電平使用,固然某個(gè)腳具有復(fù)用的功能,即可做GPIO也就是說你可以把這些引腳拿來用作任何一般用途的輸入輸出,例如用一根引腳連到led〔一些引腳連到一個(gè)傳感器上以獲得該傳感器的狀態(tài),這給cpu供給了一個(gè)便利的把握周邊設(shè)備的途經(jīng)。假設(shè)沒有足夠多的gpio管腳,在控制一些外圍設(shè)備時(shí)就會(huì)力有不逮,這時(shí)可實(shí)行的方案是使用CPLD來幫助治理。觸摸屏的主要三大種類是:電阻技術(shù)觸摸屏、外表聲波技術(shù)觸摸屏、電容技術(shù)觸摸屏。電阻觸摸屏的主要局部是一塊與顯示器外表格外協(xié)作的電阻薄膜屏,這是一種多層的復(fù)合薄膜,它以一層玻璃或硬塑料平板作為基層,外表圖有一層透亮氧化金屬觸摸屏的主要三大種類是:電阻技術(shù)觸摸屏、外表聲波技術(shù)觸摸屏、電容技術(shù)觸摸屏。電阻觸摸屏的主要局部是一塊與顯示器外表格外協(xié)作的電阻薄膜屏,這是一種多層的復(fù)合薄膜,它以一層玻璃或硬塑料平板作為基層,外表圖有一層透亮氧化金屬〔ITO的導(dǎo)電電阻〕也涂有一層ITO〔1/1000的透亮隔離點(diǎn)把兩層導(dǎo)電層隔開絕緣。當(dāng)手指觸摸屏幕時(shí),兩層導(dǎo)電層在觸摸點(diǎn)位置就有了接觸,把握器偵測(cè)到這一接觸并計(jì)算出〔X,Y〕的位置,再依據(jù)模擬鼠標(biāo)的方式運(yùn)作。這就是電阻技術(shù)觸摸屏的最根本的原理。外表聲波技術(shù)是利用聲波在物體的外表進(jìn)展傳輸換能器偵測(cè)到這個(gè)變化,反映給計(jì)算機(jī),進(jìn)而進(jìn)展鼠標(biāo)的模擬。觸摸屏外表形成以一個(gè)耦合電容,對(duì)于高頻電流來說,電容是直接導(dǎo)體,于是手指從接觸點(diǎn)吸走一個(gè)很小的電流fork創(chuàng)立一個(gè)進(jìn)程或execLinuxfork創(chuàng)立一個(gè)進(jìn)程或exec在一個(gè)只有128M內(nèi)存并且沒有交換分區(qū)的機(jī)器上,說說下面兩個(gè)程序的運(yùn)行結(jié)果11#defineMEMSIZE1024*1024intcount=0;void*p=NULL;while(1){p=(void*)malloc(MEMSIZE);if(!p)break;printf(“Currentallocation%dMB\n“,++count);}2while(1){p=(void*)malloc(MEMSIZE);ifif(!p)break;memset(p,1,MEMSIZE);printf(“Currentallocation%dMB\n“,++count);}第一道程序安排內(nèi)存但沒有填充,編譯器可能會(huì)把內(nèi)存安排優(yōu)化掉,程序死循環(huán);其次道,程序安排內(nèi)存并進(jìn)展填充,系統(tǒng)會(huì)始終安排內(nèi)存,直到內(nèi)存缺乏,退出循環(huán)。請(qǐng)定義一個(gè)宏,比較兩個(gè)數(shù)a、b的大小,不能使用大于、小于、if語句搞的比較簡(jiǎn)潔。主要思想就是a-b搞的比較簡(jiǎn)潔。主要思想就是a-b的值的最高位是否為0;但是又得考慮整數(shù)溢出的問題,所以很簡(jiǎn)潔。不知道哪位大俠有更好的方法,教育教育。#include<stdio.h>#defineZHENG(i)((i>>31)==0)#defineFU(i)((i>>31)!=0)#defineCOMPARE(a,b)((ZHENG(a)&&FU(b))||(((ZHENG(a)&&ZHENG(b))||(FU(a)&&FU(b)))&&((((a)-(b))>>31)==0)))voidmain{inta=0x80000001;intb=0x6FFFFFFF;if(COMPARE(a,b)){printf(“a>=b\n“);}else{printf(“a<b\n“);}}參考答案:155都基于TCP/IP參考答案:155都基于TCP/IPTCPSOCK和無連接的UDPSOCK。都是一個(gè)sock都是使用sockd)都具有緩沖機(jī)制。A、在Linux/mnt/test/testA、在Linux/mnt/test/testB、當(dāng)testC、當(dāng)test100假設(shè)你所擁有的資源:A、目標(biāo)機(jī)器是一臺(tái)具有標(biāo)準(zhǔn)shellCPUARM756MB16MB,軟件環(huán)境基于Linux2.6.11BusyBox1.2B11CPU2MBCPU此題是考察LINUX和嵌入式編程功底的,寫出程序來的不少,但是95%以上的人竟無視我假設(shè)的資源,不知道在重啟test程序的時(shí)候需要加上一個(gè)適當(dāng)?shù)难陲棔r(shí)間,以便資源緊急的操作系統(tǒng)有時(shí)間回收資源。85%的人不知道寫完testd之后,要在init里邊加載這個(gè)腳本,才能實(shí)現(xiàn)啟動(dòng)時(shí)自動(dòng)加載的功能。參考答案:#########################################testdisadaemonscripttostartanwatchtheprogramtest#########################################!/bin/sh#load*.sothatmayneedif[-r/sbin/ldconfig];thenldconfigfi#addthelibsPATHthatmayneedexportLD_LIBRARY_PATH=“/lib“#countisthecounterofteststartedtimescount=0#mainloopwhile[1];do#addexecutepropertyfor/mnt/test/testchmod+x/mnt/test/test#starttest/mnt/test/test#therunningtimescounterletcount=count+1echo“testrunningtimesis$count“#Istestrunningtoomanytimes?if[“$count“-gt100];thenecho“Willrebootbecauseoftestrunningtoomanytimes“rebootfi#waitforteststoping...sleepsleep3done#########################################Cdirhelloworld”字符串的文件A:A:unsignedshorti;unsignedshortindex=0;for(i=0;i<index-1;i++){ printf(“a\n”);}B:unsignedshorti;unsignedlongindex=0;for(i=0;i<index-1;i++){ printf(“b\n”);}LINUXARMbootloader輸出,硬件和軟件各應(yīng)當(dāng)去檢查什么?提示:1LINUXDRAM,一般的系統(tǒng)也常常有提示:1LINUXDRAM,一般的系統(tǒng)也常常有NOR或NANDFLASH請(qǐng)簡(jiǎn)述下面這段代碼的功能movr12,#0x0ldrr13,movr12,#0x0ldrr13,=0x30100000movr14,#4096loop:ldmiar12!,{r0-r11}stmiar13!,{r0-r11}cmpr12,r14blloop嵌入式中常用的文件系統(tǒng)有哪些?說出它們的主要特點(diǎn)和應(yīng)用場(chǎng)合?rGpioBase0x560000000~15器高八位(8~`150xc3提示:主要說字符設(shè)備的編寫過程LINUX提示:主要說字符設(shè)備的編寫過程LINUX試總結(jié)單片機(jī)底層開發(fā)與LINUX驅(qū)動(dòng)開發(fā)有哪些異同?假設(shè)是外部擴(kuò)展芯片,請(qǐng)說出你用的芯片的型號(hào)畫出上題中你選定相應(yīng)硬件模塊與CPU的主要引腳連線請(qǐng)從網(wǎng)卡、USBHOST、LCDNANDFLASH、WIFI假設(shè)是外部擴(kuò)展芯片,請(qǐng)說出你用的芯片的型號(hào)畫出上題中你選定相應(yīng)硬件模塊與CPU的主要引腳連線3)編寫上題中你選定相應(yīng)硬件模塊相應(yīng)3)編寫上題中你選定相應(yīng)硬件模塊相應(yīng)LINUX54、linuxLinuxLinux字符設(shè)備。塊設(shè)備。網(wǎng)絡(luò)設(shè)備。字符設(shè)備指那些必需以串行挨次依次進(jìn)展訪問的設(shè)備FlashLinuxLinuxBSDunix的socket機(jī)制。在系統(tǒng)和驅(qū)動(dòng)程序之間定義有特地的數(shù)據(jù)構(gòu)造(sk_buff)進(jìn)展數(shù)據(jù)的傳遞。系統(tǒng)里支持對(duì)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的緩存,供給流量把握機(jī)制,供給對(duì)多協(xié)議的支持。55、信號(hào)量與自旋鎖自旋鎖自旋鎖理器來說,防止中斷處理中的并發(fā)可簡(jiǎn)潔承受關(guān)閉中斷的方式,不需要自旋鎖。被持有)的自旋鎖,那么這個(gè)任務(wù)就會(huì)始終進(jìn)展忙循環(huán)——旋轉(zhuǎn)——等待鎖重可用。要是多于一個(gè)的內(nèi)核任務(wù)同時(shí)進(jìn)入臨界區(qū)任務(wù)競(jìng)爭(zhēng)共享資源。換的開銷。自旋鎖的根本形式如下:spin_lock(&mr_lock);//臨界區(qū)spin_unlock(&mr_lock);由于自旋鎖在同一時(shí)刻只能被最多一個(gè)內(nèi)核任務(wù)持有全剔除出內(nèi)核。成的競(jìng)爭(zhēng)。另外自旋鎖不允許任務(wù)睡眠(持有自旋鎖的任務(wù)睡眠會(huì)造成自死鎖——由于睡眠有可能造成持有鎖的內(nèi)核任務(wù)被重調(diào)度,而再次申請(qǐng)自己已持有的鎖),它能夠在中斷上下文中使用。死鎖:假設(shè)有一個(gè)或多個(gè)內(nèi)核任務(wù)和一個(gè)或多個(gè)資源,每個(gè)內(nèi)核都在等待其中的一個(gè)資源,不行能再獲得該資源,因此就自縛手腳了。遞歸使用一個(gè)自旋鎖就會(huì)消滅這種狀況。信號(hào)量信號(hào)量釋放后,在等待隊(duì)列中的一個(gè)任務(wù)將被喚醒,從而便可以獲得這個(gè)信號(hào)量。信號(hào)量根本使用形式為:staticDECLARE_MUTEX(mr_sem);//聲明互斥信號(hào)量if(down_interruptible(&mr_sem))//可被中斷的睡眠,當(dāng)信號(hào)來到,睡眠的任務(wù)被喚醒//臨界區(qū)up(&mr_sem);信號(hào)量和自旋鎖區(qū)分信號(hào)量和自旋鎖區(qū)分從嚴(yán)格意義上講,信號(hào)量和自旋鎖屬于不同層次的互斥手段,前者的實(shí)現(xiàn)有賴于后者。留意以下原則:假設(shè)代碼需要睡眠——這往往是發(fā)生在和用戶空間同步時(shí)——使用信號(hào)量是唯影響調(diào)度反響時(shí)間帶來負(fù)面影響。自旋鎖對(duì)信號(hào)量需求低開銷加鎖短期鎖定長期加鎖中斷上下文中加鎖持有鎖是需要睡眠、調(diào)度建議的加鎖方法優(yōu)先使用自旋鎖優(yōu)先使用自旋鎖優(yōu)先使用信號(hào)量使用自旋鎖使用信號(hào)量56、platform57、kmallocvmallockmallocvmalloc介紹kmalloc用于申請(qǐng)較小的、連續(xù)的物理內(nèi)存以字節(jié)為單位進(jìn)展安排,在<linux/slab.h>中void*kmalloc(size_tsize,intflags)安排的內(nèi)存物理地址上連續(xù),虛擬地址上自然連續(xù)gfp_mask———————————————————————————————-情形 相應(yīng)標(biāo)志———————————————————————————————-進(jìn)程上下文,可以睡眠GFP_KERNEL進(jìn)程上下文,不行以睡眠GFP_ATOMIC中斷處理程序GFP_ATOMIC軟中斷GFP_ATOMICTaskletGFP_ATOMICDMAGFP_DMA|GFP_KERNELDMAGFP_DMA|GFP_ATOMIC———————————————————————————————-voidkfree(constvoid*ptr)釋放由kmalloc安排出來的內(nèi)存塊vmalloc用于申請(qǐng)較大的內(nèi)存空間,虛擬內(nèi)存是連續(xù)的以字節(jié)為單位進(jìn)展安排,在<linux/vmalloc.h>中void*vmalloc(unsignedlongsize)安排的內(nèi)存虛擬地址上連續(xù),物理地址不連續(xù)一般狀況下,只有硬件設(shè)備才需要物理地址連續(xù)的內(nèi)存,由于硬件設(shè)備往往存在于MMUkmalloc,而只有在需要獲得大塊內(nèi)存時(shí)才使用vmalloc,例如當(dāng)模塊被動(dòng)態(tài)加載到內(nèi)核當(dāng)中時(shí),就把模塊裝載到由vmalloc[*]kmallocvmalloc,malloc[*]kmalloc保證安排的內(nèi)存在物理上是連續(xù)的,vmalloc保證的是在虛擬地址空間上的連續(xù),malloc[*]kmalloc,vmalloc[*]kmallocvmalloc,malloc[*]kmalloc保證安排的內(nèi)存在物理上是連續(xù)的,vmalloc保證的是在虛擬地址空間上的連續(xù),malloc[*]kmalloc,vmallocmalloc[*]內(nèi)存只有在要被DMA[*]vmallockmalloc58、module_init59、添加驅(qū)動(dòng)靜態(tài)加載和動(dòng)態(tài)加載:靜態(tài)加載和動(dòng)態(tài)加載:靜態(tài)加載是系統(tǒng)啟動(dòng)的時(shí)候由內(nèi)核自動(dòng)加載的,這個(gè)要事先將驅(qū)動(dòng)編譯進(jìn)內(nèi)核才行;動(dòng)態(tài)載入內(nèi)核,這種主要用在調(diào)試的時(shí)候,比較便利靈敏。insmodmodule.ko60、IICi2c_msg61、kernelpanic62、USBUSBurbUSBUSBUSB總線屬于一種輪詢式總線,主機(jī)把握端口初始化全部的數(shù)據(jù)傳輸。每一總線動(dòng)作最多傳送三個(gè)數(shù)據(jù)包,包括令牌(Token)、數(shù)據(jù)(Data)、聯(lián)絡(luò)(HandShake)。依據(jù)傳輸前制定好的原USB設(shè)備地址和終端號(hào)的USB(TokenPacketUSBUSBUSB把握信息供給一個(gè)入口。USBUSB1、中斷傳輸:由OUT事務(wù)和INHID2、批量傳輸:由OUT事務(wù)和IN帶寬,當(dāng)總線忙時(shí),USB3、同步傳輸:由OUT事務(wù)和ININOUT是沒有返回包階段的;其次,在數(shù)據(jù)包階段任何的數(shù)據(jù)包都為DATA04、把握傳輸:最重要〔初始配置階段、可選數(shù)據(jù)階段、狀態(tài)信息步驟〕,每一個(gè)階段能夠看成一個(gè)的傳輸,也就是說把握傳輸其實(shí)是由三個(gè)傳輸構(gòu)成的,用來于USBUSB。URB:USB〔USBrequestblock,urb〕USBUSBsk_buffUSB備通信的“電波”。63、同步和互斥同步和互斥完成的特定的任務(wù)。間不行以同時(shí)運(yùn)行,他們會(huì)相互排斥,必需等待一個(gè)線程運(yùn)行完畢,另一個(gè)才能運(yùn)行,而同〔也是一種互斥!總結(jié):無法限制訪問者對(duì)資源的訪問挨次,即訪問是無序的。同步:是指在互斥的根底上〔大多數(shù)狀況〕,通過其它機(jī)制實(shí)現(xiàn)訪問者對(duì)資源的有序訪狀況是指可以允很多個(gè)訪問者同時(shí)訪問資源答:字符設(shè)備:字符設(shè)備是個(gè)能夠像字節(jié)流〔類似文件〕一樣被訪問的設(shè)備,由字符設(shè)備open,close,readwrite答:字符設(shè)備:字符設(shè)備是個(gè)能夠像字節(jié)流〔類似文件〕一樣被訪問的設(shè)備,由字符設(shè)備open,close,readwrite調(diào)用。字符終端、串口、鼠標(biāo)、鍵盤、攝像頭、聲卡和顯卡等就是典型的字符設(shè)備。塊設(shè)備:和字符設(shè)備類似,塊設(shè)備也是通過/dev名目下的文件系統(tǒng)節(jié)點(diǎn)來訪問。塊設(shè)備上能夠容納文件系統(tǒng),如:uSD字符設(shè)備和塊設(shè)備的區(qū)分僅僅在于內(nèi)核內(nèi)部治理數(shù)據(jù)的方式之間的軟件接口,而這些不同對(duì)用戶來講是透亮的。在內(nèi)核中,和字符驅(qū)動(dòng)程序相比動(dòng)程序具有完全不同的接口答:1)查看驅(qū)動(dòng)模塊中打印信息的命令:dmesg2)查看字符設(shè)備信息可以用答:1)查看驅(qū)動(dòng)模塊中打印信息的命令:dmesg2)查看字符設(shè)備信息可以用lsmod和modproblsmodmodprobe3〕顯示當(dāng)前使用的中斷號(hào)cat/proc/interrupt66、Linux中引入模塊機(jī)制有什么好處?換句話說,模塊初始化函數(shù)的任務(wù)就是為以后調(diào)用函數(shù)預(yù)先作預(yù)備。好處:應(yīng)用程序在退出時(shí),可以不管資源的釋放或者其他的去除工作,但是模塊的退出函數(shù)卻必需認(rèn)真此撤銷初始化函數(shù)所作的一切。該機(jī)制有助于縮短模塊的開發(fā)周期。即:注冊(cè)和卸載都很靈敏便利。67、copy_to_user和copy_from_user主要用于實(shí)現(xiàn)什么功能?一般用于file_operations寫。copy_to_user:完成內(nèi)核空間到用戶空間的復(fù)制,copy_from_user:是完成用戶空間到內(nèi)核空間的復(fù)制。一般用于file_operations構(gòu)造里的read,write,ioctl等內(nèi)存數(shù)據(jù)ioctl數(shù)。答:主設(shè)備號(hào):主設(shè)備號(hào)標(biāo)識(shí)設(shè)備對(duì)應(yīng)的驅(qū)動(dòng)程序。雖然現(xiàn)代的linux內(nèi)核允很多個(gè)驅(qū)動(dòng)程則組織。次設(shè)備號(hào):次設(shè)備號(hào)由內(nèi)核使用,用于正確確定設(shè)備文件所指的設(shè)備。依靠于驅(qū)動(dòng)程序作設(shè)備本地?cái)?shù)組的索引。chartest由驅(qū)動(dòng)程序464〔感覺類似于串口終端或者字符設(shè)備終端〕。68答:主設(shè)備號(hào):主設(shè)備號(hào)標(biāo)識(shí)設(shè)備對(duì)應(yīng)的驅(qū)動(dòng)程序。雖然現(xiàn)代的linux內(nèi)核允很多個(gè)驅(qū)動(dòng)程則組織。次設(shè)備號(hào):次設(shè)備號(hào)由內(nèi)核使用,用于正確確定設(shè)備文件所指的設(shè)備。依靠于驅(qū)動(dòng)程序作設(shè)備本地?cái)?shù)組的索引。chartest由驅(qū)動(dòng)程序464〔感覺類似于串口終端或者字符設(shè)備終端〕。69、設(shè)備驅(qū)動(dòng)程序中如何注冊(cè)一個(gè)字符設(shè)備?分別解釋一下它的幾個(gè)參數(shù)的含義。答:注冊(cè)一個(gè)字符設(shè)備驅(qū)動(dòng)有兩種方法:答:注冊(cè)一個(gè)字符設(shè)備驅(qū)動(dòng)有兩種方法:voidcdev_init(structcdev*cdev,structfile_operations*fops)該注冊(cè)函數(shù)可以將cdev構(gòu)造嵌入到自己的設(shè)備特定的構(gòu)造中cdev是一個(gè)指向構(gòu)造體cdev但不限于該構(gòu)造〕的指針.intregister_chrdev(unsignedintmajor,constchar*namem,structfile)operations*fopen);該注冊(cè)函數(shù)是早期的注冊(cè)函數(shù),majorfops是默認(rèn)的file_operations〔這是只限于file_operations〕。對(duì)于register_chrdev的調(diào)用將為給定的主設(shè)備號(hào)注冊(cè)0-255作為次設(shè)備號(hào),并為每個(gè)設(shè)備建立一個(gè)對(duì)應(yīng)的默認(rèn)cdev構(gòu)造。答:1〕DMACPU機(jī)制,使用DMA可以使系統(tǒng)CPU答:1〕DMACPU機(jī)制,使用DMA可以使系統(tǒng)CPU從實(shí)際的I/O數(shù)據(jù)傳輸過程中擺脫出來,從而大大提高系統(tǒng)的吞吐率。CPUCPU轉(zhuǎn)去處理突發(fā)大事,處理完畢后CPU所以中斷和MDA的區(qū)分就是MDA不需CPU參與而中斷是需要CPU2〕中斷注冊(cè)函數(shù)和中斷注銷函數(shù)注冊(cè)中斷:intrequest_irq(unsignedintirq,irqreturn_t(*handler)

溫馨提示

  • 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)論