




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、linux驅(qū)動(dòng)面試題21.什么是GPIO?general purpose input/output GPIO是相對(duì)于芯片本身而言的,如某個(gè)管腳是芯片的GPIO腳,則該腳可作為輸入或輸出高或低電平使用,當(dāng)然某個(gè)腳具有復(fù)用的功能,即可做GPIO也可做其他用途。 也就是說(shuō)你可以把這些引腳拿來(lái)用作任何一般用途的輸入輸出,例如用一根引腳連到led的一極來(lái)控制它的亮滅,也可以用一根(一些)引腳連到一個(gè)傳感器上以獲得該傳感器的狀態(tài),這給cpu提供了一個(gè)方便的控制周邊設(shè)備的途經(jīng)。如果沒(méi)有足夠多的gpio管腳,在控制一些外圍設(shè)備時(shí)就會(huì)力有不逮,這時(shí)可采取的方案是使用CPLD來(lái)幫助
2、管理。2.觸摸屏的硬件原理?觸摸屏的主要三大種類是:電阻技術(shù)觸摸屏、 表面聲波技術(shù)觸摸屏、 電容技術(shù)觸摸屏。電阻觸摸屏的主要部分是一塊與顯示器表面非常配合的電阻薄膜屏, 這是一種多層的復(fù)合薄膜,它以一層玻璃或硬塑料平板作為基層,表面圖有一層透明氧化金屬 (ITO氧化銦,透明的導(dǎo)電電阻) 導(dǎo)電層,上面在蓋有一層外表面硬化處理、光滑防擦的塑料層 、它的內(nèi)表面也涂有一層ITO涂層 、在他們之間有許多細(xì)小的(小于1/1000英寸)的透明隔離點(diǎn)把兩層導(dǎo)電層隔開(kāi)絕緣 。當(dāng)手指觸摸屏幕時(shí),兩層導(dǎo)電層在觸摸點(diǎn)位置就有了接觸,控制器偵測(cè)到這一接觸并計(jì)算出(X,Y )的位置,再根據(jù)模擬鼠標(biāo)的方式運(yùn)作。這就是電阻技
3、術(shù)觸摸屏的最基本的原理。表面聲波技術(shù)是利用聲波在物體的表面進(jìn)行傳輸,當(dāng)有物體觸摸到表面時(shí),阻礙聲波的傳輸,換能器偵測(cè)到這個(gè)變化,反映給計(jì)算機(jī),進(jìn)而進(jìn)行鼠標(biāo)的模擬。電容技術(shù)觸摸屏利用人體的電流感應(yīng)進(jìn)行工作 。用戶觸摸屏幕時(shí) ,由于人體電場(chǎng),用戶和觸摸屏表面形成以一個(gè)耦合電容, 對(duì)于高頻電流來(lái)說(shuō),電容是直接導(dǎo)體,于是手指從接觸點(diǎn)吸走一個(gè)很小的電流3.在Linux C中,ls這個(gè)命令是怎么被執(zhí)行的?使用fork創(chuàng)建一個(gè)進(jìn)程或exec函數(shù)族覆蓋原進(jìn)程。4.在一個(gè)只有128M內(nèi)存并且沒(méi)有交換分區(qū)的機(jī)器上,說(shuō)說(shuō)下面兩個(gè)程序的運(yùn)行結(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)存但沒(méi)有填充,編譯器可能會(huì)把內(nèi)存分配優(yōu)化掉,程序死循環(huán);第二道,程序分配內(nèi)存并進(jìn)行填充,系統(tǒng)會(huì)一直分配內(nèi)存,直到內(nèi)存不足,退出循環(huán)。5.請(qǐng)定義一個(gè)宏,比較兩個(gè)數(shù)a、b的大小,不能使用大于、小于、if語(yǔ)句搞的比較復(fù)雜。主要思想就是a-b的值的最高位是否為0;但是又得考慮整數(shù)溢出的問(wèn)題,所以很復(fù)雜。不知道哪位大俠有更好的辦法,指點(diǎn)指點(diǎn)。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有什么共同點(diǎn)?請(qǐng)從C/C+語(yǔ)言開(kāi)發(fā)的角度描述,至少說(shuō)出兩點(diǎn)共同點(diǎn)。(10分,說(shuō)得好的每點(diǎn)加5分,沒(méi)有上限。精通SOCK編程者破格錄用。)本題的目的就是考考應(yīng)試者的SOCK功底,以及應(yīng)用能力。答案可謂是五花八門(mén),但是答對(duì)的少得可憐。其實(shí)答案很多,也很好回答??梢?jiàn)面試者功底確實(shí)一般,對(duì)SOCK編程只是一知半解。更有甚者,把TCP/IP的原理搬出來(lái)講了一大堆,卻無(wú)一條符合要求。參考答案:第1題,答中一個(gè)得5分,答出其它正確答案的,也得5分。a)都基于TCP/IP協(xié)議,都提供了面向連接的TCP S
9、OCK和無(wú)連接的UDP SOCK。b)都是一個(gè)sock結(jié)構(gòu)體。c)都是使用sock文件句柄進(jìn)行訪問(wèn)。d)都具有緩沖機(jī)制。2、請(qǐng)編寫(xiě)一個(gè)標(biāo)準(zhǔn)Shell腳本testd,實(shí)現(xiàn)如下功能:A、在Linux操作系統(tǒng)啟動(dòng)的時(shí)候,自動(dòng)加載/mnt/test/test程序。B、當(dāng)test異常退出之后,自動(dòng)重新啟動(dòng)。C、當(dāng)test程序重啟次數(shù)超過(guò)100次,自動(dòng)復(fù)位操作系統(tǒng)。假設(shè)你所擁有的資源:A、目標(biāo)機(jī)器是一臺(tái)具有標(biāo)準(zhǔn)shell的嵌入式計(jì)算機(jī),CPU為ARM7 56MB,內(nèi)存16MB,軟件環(huán)境基于Linux2.6.11和BusyBox1.2構(gòu)建。B、當(dāng)前已有11個(gè)用戶進(jìn)程在運(yùn)行,占用了大部分的CPU時(shí)間和內(nèi)存,你
10、可使用的內(nèi)存只有2MB左右,CPU時(shí)間由系統(tǒng)分派。(本題滿分20分,程序15分,注釋5分。程序不能運(yùn)行的0分,能夠運(yùn)行但有BUG的10分,能夠正確無(wú)誤的運(yùn)行的15分。清楚編寫(xiě)注釋的5分。)本題是考查L(zhǎng)INUX和嵌入式編程功底的,寫(xiě)出程序來(lái)的不少,但是95%以上的人竟無(wú)視我假設(shè)的資源,不知道在重啟test程序的時(shí)候需要加上一個(gè)適當(dāng)?shù)难陲棔r(shí)間,以便資源緊張的操作系統(tǒng)有時(shí)間回收資源。85%的人不知道寫(xiě)完testd之后,要在init里邊加載這個(gè)腳本,才能實(shí)現(xiàn)啟動(dòng)時(shí)自動(dòng)加載的功能。有人甚至在腳本開(kāi)頭使用bash作為腳本解析器,我已經(jīng)清清楚楚說(shuō)明了用“標(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è)模擬測(cè)試題-LINUX驅(qū)動(dòng)、系統(tǒng)底層工程師職位 1.你平常是怎么用C寫(xiě)嵌入式系統(tǒng)的死循環(huán)的? 3分 2.寫(xiě)一條命令,實(shí)現(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.一個(gè)計(jì)劃跑LINUX系統(tǒng)的ARM系統(tǒng)把bootloader燒錄進(jìn)去后,上電后串口上沒(méi)有任何輸出,硬件和軟件各應(yīng)該去檢查什么? 提示: 1.跑LINUX的系統(tǒng)一般都需要外擴(kuò)DRAM,一般的系統(tǒng)也經(jīng)常有NOR或NAND FLASH 2.bootloader一般是由匯編和C編寫(xiě)的裸奔程序
16、5分 5.列舉最少3種你所知道的嵌入式的體系結(jié)構(gòu),并請(qǐng)說(shuō)明什么是ARM體系結(jié)構(gòu)。7分 6.請(qǐng)簡(jiǎn)述下面這段代碼的功能 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)有哪些?說(shuō)出它們的主要特點(diǎn)和應(yīng)用場(chǎng)合?5分 8.某外設(shè)寄存器rGpioBase的地址是0x56000000,寄存器的015位有效,請(qǐng)寫(xiě)出給外設(shè)寄存器高八位(815位)設(shè)置成0xc3
18、的代碼7分 9.根據(jù)時(shí)序圖和說(shuō)明編寫(xiě)程序: GPIO已經(jīng)設(shè)置好,只需要調(diào)用函數(shù)gpio_seet_level(int gpio, int level)即課使某個(gè)GPIO輸出高電平或者低電平。圖中用于產(chǎn)生時(shí)序的gpio已經(jīng)分別定義為SSP_XCS,SSP_SCLK,SSP_DIN,level的定義分別為GPIO_LO和GPIO_HI,需要編寫(xiě)函數(shù)的原型為:void ssp_io_write_word(u32 command),該函數(shù)用來(lái)輸出一個(gè)字(如上圖中的A0到C0一組9位),這9個(gè)位是在參數(shù)command中的低9位. 5分 10.簡(jiǎn)述LINUX系
19、統(tǒng)從上電開(kāi)始到系統(tǒng)起來(lái)的主要流程? 提示: 1.可以u(píng)boot、內(nèi)核和文件系統(tǒng)的主要功能去總結(jié) 2.這個(gè)題主要是在筆試之后的面試,需要在35分鐘之內(nèi)表述清楚8分 11.如何編寫(xiě)一個(gè)LINUX驅(qū)動(dòng)? 提示:主要說(shuō)字符設(shè)備的編寫(xiě)過(guò)程 7分 12.簡(jiǎn)述LINUX驅(qū)動(dòng)中字符設(shè)備和塊設(shè)備的區(qū)別?5分 13.試總結(jié)單片機(jī)底層開(kāi)發(fā)與LINUX驅(qū)
20、動(dòng)開(kāi)發(fā)有哪些異同?4分 14.請(qǐng)從網(wǎng)卡、USB HOST、LCD驅(qū)動(dòng)器、NAND FLASH、WIFI 、音頻芯片中選擇一個(gè)或者2個(gè)(可以以具體的芯片為例),對(duì)下面的問(wèn)題做答: 1.如果是外部擴(kuò)展芯片,請(qǐng)說(shuō)出你用的芯片的型號(hào) 每空5分 15.畫(huà)出上題中你選定
21、相應(yīng)硬件模塊與CPU的主要引腳連線5分 16. 編寫(xiě)上題中你選定相應(yīng)硬件模塊相應(yīng)LINUX驅(qū)動(dòng)的流程?6分 int *ptr = (int *)0xaa66; *ptr = 0x67a9; 我感覺(jué)自己寫(xiě)的應(yīng)該不算錯(cuò)吧(自我感覺(jué),還請(qǐng)達(dá)人指正),我寫(xiě)的適合裸機(jī)下用,當(dāng)做寄存器用,而答案就是適合在操作系統(tǒng)下的寫(xiě)法。 1. linux內(nèi)核里面,內(nèi)存申請(qǐng)有哪幾個(gè)函數(shù),各自的區(qū)別? 2. IRQ和FIQ有什么區(qū)別,在CPU里面是是怎么做的? 3. int *a; char *b; a 和 b本身是什么類型? a、b里面本身存放的只是一個(gè)地址,難道是這兩個(gè)地址有不同么? 4. 中斷的上半部分和下半部分的問(wèn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 門(mén)店店員激勵(lì)政策方案
- 園藝技巧面試題及答案
- 淘寶店考試題及答案
- 單位物業(yè)勞務(wù)外包方案
- 傳媒行業(yè)提成方案
- 采購(gòu)合同績(jī)效評(píng)估與改進(jìn)培訓(xùn)協(xié)議
- 湘江小學(xué)面試題及答案
- 中醫(yī)精神病護(hù)理
- 鐵路維護(hù)工程招標(biāo)方案
- 政企沙龍面試題及答案
- 2024年廣東血液凈化護(hù)理知識(shí)競(jìng)賽考試題庫(kù)(含答案)
- 基層供電所安全課件
- 2020-2024年五年高考地理真題分類匯編專題02 宇宙中的地球-(解析版)
- 瑜伽說(shuō)課課件
- 2024年上海復(fù)旦大學(xué)附中自主招生數(shù)學(xué)試卷真題(含答案詳解)
- 骨質(zhì)疏松性椎體壓縮骨折診治專家共識(shí)
- 人教部編版九年級(jí)歷史上冊(cè)第一單元測(cè)試卷三套含答案
- 會(huì)診制度培訓(xùn)課件
- 廣東省安全生產(chǎn)管理臺(tái)賬表格與說(shuō)明
- 【公開(kāi)課】植物體的結(jié)構(gòu)層次2024-2025學(xué)年人教版生物七年級(jí)上冊(cè)
- 重癥醫(yī)學(xué)質(zhì)量控制中心督查評(píng)價(jià)標(biāo)準(zhǔn)及評(píng)分細(xì)則
評(píng)論
0/150
提交評(píng)論