linux驅(qū)動面試題_第1頁
linux驅(qū)動面試題_第2頁
linux驅(qū)動面試題_第3頁
linux驅(qū)動面試題_第4頁
linux驅(qū)動面試題_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、linux驅(qū)動面試題21.什么是GPIO?general purpose input/output  GPIO是相對于芯片本身而言的,如某個管腳是芯片的GPIO腳,則該腳可作為輸入或輸出高或低電平使用,當(dāng)然某個腳具有復(fù)用的功能,即可做GPIO也可做其他用途。 也就是說你可以把這些引腳拿來用作任何一般用途的輸入輸出,例如用一根引腳連到led的一極來控制它的亮滅,也可以用一根(一些)引腳連到一個傳感器上以獲得該傳感器的狀態(tài),這給cpu提供了一個方便的控制周邊設(shè)備的途經(jīng)。如果沒有足夠多的gpio管腳,在控制一些外圍設(shè)備時就會力有不逮,這時可采取的方案是使用CPLD來幫助

2、管理。2.觸摸屏的硬件原理?觸摸屏的主要三大種類是:電阻技術(shù)觸摸屏、 表面聲波技術(shù)觸摸屏、 電容技術(shù)觸摸屏。電阻觸摸屏的主要部分是一塊與顯示器表面非常配合的電阻薄膜屏, 這是一種多層的復(fù)合薄膜,它以一層玻璃或硬塑料平板作為基層,表面圖有一層透明氧化金屬 (ITO氧化銦,透明的導(dǎo)電電阻) 導(dǎo)電層,上面在蓋有一層外表面硬化處理、光滑防擦的塑料層 、它的內(nèi)表面也涂有一層ITO涂層 、在他們之間有許多細(xì)小的(小于1/1000英寸)的透明隔離點把兩層導(dǎo)電層隔開絕緣 。當(dāng)手指觸摸屏幕時,兩層導(dǎo)電層在觸摸點位置就有了接觸,控制器偵測到這一接觸并計算出(X,Y )的位置,再根據(jù)模擬鼠標(biāo)的方式運作。這就是電阻技

3、術(shù)觸摸屏的最基本的原理。表面聲波技術(shù)是利用聲波在物體的表面進行傳輸,當(dāng)有物體觸摸到表面時,阻礙聲波的傳輸,換能器偵測到這個變化,反映給計算機,進而進行鼠標(biāo)的模擬。電容技術(shù)觸摸屏利用人體的電流感應(yīng)進行工作 。用戶觸摸屏幕時 ,由于人體電場,用戶和觸摸屏表面形成以一個耦合電容, 對于高頻電流來說,電容是直接導(dǎo)體,于是手指從接觸點吸走一個很小的電流3.在Linux C中,ls這個命令是怎么被執(zhí)行的?使用fork創(chuàng)建一個進程或exec函數(shù)族覆蓋原進程。4.在一個只有128M內(nèi)存并且沒有交換分區(qū)的機器上,說說下面兩個程序的運行結(jié)果1,#define MEMSIZE 1024*1024int count

4、= 0;void *p = NULL;while(1)   p = (void *)malloc(MEMSIZE);  if (!p) break;  printf("Current allocation %d MBn", +count);2,while(1)   p = (void *)malloc(MEMSIZE);  if (!p) break;  memset(p, 1, MEMSIZE);  printf("Current allocation %d MBn", +count

5、);第一道程序分配內(nèi)存但沒有填充,編譯器可能會把內(nèi)存分配優(yōu)化掉,程序死循環(huán);第二道,程序分配內(nèi)存并進行填充,系統(tǒng)會一直分配內(nèi)存,直到內(nèi)存不足,退出循環(huán)。5.請定義一個宏,比較兩個數(shù)a、b的大小,不能使用大于、小于、if語句搞的比較復(fù)雜。主要思想就是a-b的值的最高位是否為0;但是又得考慮整數(shù)溢出的問題,所以很復(fù)雜。不知道哪位大俠有更好的辦法,指點指點。1. #include<stdio.h>2.3. #define ZHENG(i)(i>> 31)= 0)4. #define FU(i)(i>> 31)!=&

6、#160;0)5. #define COMPARE(a,b)(ZHENG(a)&& FU(b)|(ZHENG(a)&& ZHENG(b)|(FU(a)&&FU(b)&&(a)-(b)>> 31)= 0)6.7. void main()8. 9.     int a = 0x80000001;10.     int b = 0x6FFFFFFF

7、;11.12.     if(COMPARE(a,b)13.     14.         printf("a >= bn");15.     16.     else17.     18.         printf("a < bn");19.     20.

8、   1、LINUX下的Socket套接字和Windows下的WinSock有什么共同點?請從C/C+語言開發(fā)的角度描述,至少說出兩點共同點。(10分,說得好的每點加5分,沒有上限。精通SOCK編程者破格錄用。)本題的目的就是考考應(yīng)試者的SOCK功底,以及應(yīng)用能力。答案可謂是五花八門,但是答對的少得可憐。其實答案很多,也很好回答??梢娒嬖囌吖Φ状_實一般,對SOCK編程只是一知半解。更有甚者,把TCP/IP的原理搬出來講了一大堆,卻無一條符合要求。參考答案:第1題,答中一個得5分,答出其它正確答案的,也得5分。a)都基于TCP/IP協(xié)議,都提供了面向連接的TCP S

9、OCK和無連接的UDP SOCK。b)都是一個sock結(jié)構(gòu)體。c)都是使用sock文件句柄進行訪問。d)都具有緩沖機制。2、請編寫一個標(biāo)準(zhǔn)Shell腳本testd,實現(xiàn)如下功能:A、在Linux操作系統(tǒng)啟動的時候,自動加載/mnt/test/test程序。B、當(dāng)test異常退出之后,自動重新啟動。C、當(dāng)test程序重啟次數(shù)超過100次,自動復(fù)位操作系統(tǒng)。假設(shè)你所擁有的資源:A、目標(biāo)機器是一臺具有標(biāo)準(zhǔn)shell的嵌入式計算機,CPU為ARM7 56MB,內(nèi)存16MB,軟件環(huán)境基于Linux2.6.11和BusyBox1.2構(gòu)建。B、當(dāng)前已有11個用戶進程在運行,占用了大部分的CPU時間和內(nèi)存,你

10、可使用的內(nèi)存只有2MB左右,CPU時間由系統(tǒng)分派。(本題滿分20分,程序15分,注釋5分。程序不能運行的0分,能夠運行但有BUG的10分,能夠正確無誤的運行的15分。清楚編寫注釋的5分。)本題是考查LINUX和嵌入式編程功底的,寫出程序來的不少,但是95%以上的人竟無視我假設(shè)的資源,不知道在重啟test程序的時候需要加上一個適當(dāng)?shù)难陲棔r間,以便資源緊張的操作系統(tǒng)有時間回收資源。85%的人不知道寫完testd之后,要在init里邊加載這個腳本,才能實現(xiàn)啟動時自動加載的功能。有人甚至在腳本開頭使用bash作為腳本解析器,我已經(jīng)清清楚楚說明了用“標(biāo)準(zhǔn)shell”!用sh不就完了嗎?是習(xí)慣作祟嗎?參考

11、答案:#testd is a daemon script to start an watch the program test#!/bin/sh#load *.so that may needif -r /sbin/ldconfig ; thenldconfigfi#add the libs PATH that may needexport LD_LIBRARY_PATH="/lib"#count is the counter of test started timescount=0#main loopwhile 1 ;do#add execute property for

12、 /mnt/test/testchmod +x /mnt/test/test#start test/mnt/test/test#the running times counterlet count=count+1echo "test running times is $count"#Is test running too many times?if "$count" -gt 100 ; thenecho "Will reboot because of test running too many times"rebootfi#wait

13、for test stoping.sleep 3done#  就業(yè)模擬測試題-LINUX驅(qū)動、系統(tǒng)底層工程師職位   1.你平常是怎么用C寫嵌入式系統(tǒng)的死循環(huán)的? 3分  2.寫一條命令,實現(xiàn)在dir以及其子目錄下找出所有包含“hello world”字符串的文件2分  3.下面的兩段程序中,循環(huán)能否執(zhí)行?為什么?A: unsigned short i; unsigned short index = 0; for(i = 0; i <index-1; i+)     printf

14、(“an”);                        B: unsigned short i; unsigned long index = 0; for(i = 0; i <index-1; i+)      printf(“bn”);       

15、60;           4.一個計劃跑LINUX系統(tǒng)的ARM系統(tǒng)把bootloader燒錄進去后,上電后串口上沒有任何輸出,硬件和軟件各應(yīng)該去檢查什么?    提示: 1.跑LINUX的系統(tǒng)一般都需要外擴DRAM,一般的系統(tǒng)也經(jīng)常有NOR或NAND FLASH           2.bootloader一般是由匯編和C編寫的裸奔程序

16、5分    5.列舉最少3種你所知道的嵌入式的體系結(jié)構(gòu),并請說明什么是ARM體系結(jié)構(gòu)。7分  6.請簡述下面這段代碼的功能 mov r12, #0x0        ldr r13, =0x30100000 mov r14, #4096 loop:   ldmia      r12!, r0-r11  stmia      r13!, r

17、0-r11    cmp       r12, r14   blo          loop  2分   7.嵌入式中常用的文件系統(tǒng)有哪些?說出它們的主要特點和應(yīng)用場合?5分    8.某外設(shè)寄存器rGpioBase的地址是0x56000000,寄存器的015位有效,請寫出給外設(shè)寄存器高八位(815位)設(shè)置成0xc3

18、的代碼7分  9.根據(jù)時序圖和說明編寫程序:  GPIO已經(jīng)設(shè)置好,只需要調(diào)用函數(shù)gpio_seet_level(int gpio, int level)即課使某個GPIO輸出高電平或者低電平。圖中用于產(chǎn)生時序的gpio已經(jīng)分別定義為SSP_XCS,SSP_SCLK,SSP_DIN,level的定義分別為GPIO_LO和GPIO_HI,需要編寫函數(shù)的原型為:void ssp_io_write_word(u32 command),該函數(shù)用來輸出一個字(如上圖中的A0到C0一組9位),這9個位是在參數(shù)command中的低9位. 5分  10.簡述LINUX系

19、統(tǒng)從上電開始到系統(tǒng)起來的主要流程?  提示: 1.可以uboot、內(nèi)核和文件系統(tǒng)的主要功能去總結(jié)          2.這個題主要是在筆試之后的面試,需要在35分鐘之內(nèi)表述清楚8分   11.如何編寫一個LINUX驅(qū)動? 提示:主要說字符設(shè)備的編寫過程 7分    12.簡述LINUX驅(qū)動中字符設(shè)備和塊設(shè)備的區(qū)別?5分     13.試總結(jié)單片機底層開發(fā)與LINUX驅(qū)

20、動開發(fā)有哪些異同?4分    14.請從網(wǎng)卡、USB HOST、LCD驅(qū)動器、NAND FLASH、WIFI 、音頻芯片中選擇一個或者2個(可以以具體的芯片為例),對下面的問題做答: 1.如果是外部擴展芯片,請說出你用的芯片的型號                       每空5分  15.畫出上題中你選定

21、相應(yīng)硬件模塊與CPU的主要引腳連線5分  16. 編寫上題中你選定相應(yīng)硬件模塊相應(yīng)LINUX驅(qū)動的流程?6分        int *ptr = (int *)0xaa66; *ptr = 0x67a9; 我感覺自己寫的應(yīng)該不算錯吧(自我感覺,還請達人指正),我寫的適合裸機下用,當(dāng)做寄存器用,而答案就是適合在操作系統(tǒng)下的寫法。    1. linux內(nèi)核里面,內(nèi)存申請有哪幾個函數(shù),各自的區(qū)別?  2. IRQ和FIQ有什么區(qū)別,在CPU里面是是怎么做的?  3.   int *a;  char *b;  a 和 b本身是什么類型?  a、b里面本身存放的只是一個地址,難道是這兩個地址有不同么?    4. 中斷的上半部分和下半部分的問

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論