嵌入式常見面試題總結(5)
35,什麼是GPIO? 答:general purpose input/output GPIO是相對於晶片本身而言的,如某個管腳是晶片的GPIO腳,則該腳可作為輸入或輸出高或低電平使用,當然某個腳具有複用的功能,即可做GPIO也可做其他用途。 也就是說你可以把這些引腳拿來用作任何一般用途的輸入輸出,例如用一根引腳連到led的一極來控制它的亮滅,也可以用一根(一些)引腳連到一個感測器上以獲得該感測器的狀態,這給cpu提供了一個方便的控制周邊裝置的途經。如果沒有足夠多的gpio管腳,在控制一些外圍裝置時就會力有不逮,這時可採取的方案是使用CPLD來幫助管理。36,觸控式螢幕的硬體原理? 答:觸控式螢幕的主要三大種類是:電阻技術觸控式螢幕、 表面聲波技術觸控式螢幕、 電容技術觸控式螢幕。 電阻觸控式螢幕的主要部分是一塊與顯示器表面非常配合的電阻薄膜屏, 這是一種多層的複合薄膜,它以一層玻璃或硬塑料平板作為基層,表面圖有一層透明氧化金屬 (ITO氧化銦,透明的導電電阻) 導電層,上面在蓋有一層外表面硬化處理、光滑防擦的塑料層 、它的內表面也塗有一層ITO塗層 、在他們之間有許多細小的(小於1/1000英寸)的透明隔離點把兩層導電層隔開絕緣 。當手指觸控式螢幕幕時,兩層導電層在觸控點位置就有了接觸,控制器偵測到這一接觸並計算出(X,Y )的位置,再根據模擬滑鼠的方式運作。這就是電阻技術觸控式螢幕的最基本的原理。
表面聲波技術是利用聲波在物體的表面進行傳輸,當有物體觸控到表面時,阻礙聲波的傳輸,換能器偵測到這個變化,反映給計算機,進而進行滑鼠的模擬。
電容技術觸控式螢幕利用人體的電流感應進行工作 。使用者觸控式螢幕幕時 ,由於人體電場,使用者和觸控式螢幕表面形成以一個耦合電容, 對於高頻電流來說,電容是直接導體,於是手指從接觸點吸走一個很小的電流。
37,在Linux C中,ls這個命令是怎麼被執行的? 答:使用fork建立一個程序或exec函式族覆蓋原程序。38,在一個只有128M記憶體並且沒有交換分割槽的機器上,說說下面兩個程式的執行結果?
答:1,#define MEMSIZE 1024*1024 int count = 0; void *p = NULL; 2,while(1) { p = (void *)malloc(MEMSIZE); if (!p) break; printf("Current allocation %d MB\n", ++count); } while(1) { p = (void *)malloc(MEMSIZE); if (!p) break; memset(p, 1, MEMSIZE); printf("Current allocation %d MB\n", ++count); } 第一道程式分配記憶體但沒有填充,編譯器可能會把記憶體分配優化掉,程式死迴圈;第二道,程式分配記憶體並進行填充,系統會一直分配記憶體,直到記憶體不足,退出迴圈。39
sleep 3 done #########################################42.你平常是怎麼用C寫嵌入式系統的死迴圈的?
答:While(1);for(;;)
43,寫一條命令,實現在dir以及其子目錄下找出所有包含“hello world”字串的檔案?
答:grep -r "hello world" ./dir或者grep -rHn "hello world" ./44,下面的兩段程式中,迴圈能否執行?為什麼? A: unsigned short i; unsigned short index = 0; for(i = 0; i <index-1; i++){ printf(“a\n”); } B: unsigned short i; unsigned long index = 0; for(i = 0; i <index-1; i++){ printf(“b\n”); } 45,一個計劃跑LINUX系統的ARM系統把bootloader燒錄進去後,上電後串列埠上沒有任何輸出,硬體和軟體各應該去檢查什麼? 提示: 1.跑LINUX的系統一般都需要外擴DRAM,一般的系統也經常有NOR或NAND FLASH 46,列舉最少3種你所知道的嵌入式的體系結構,並請說明什麼是ARM體系結構。
答:ARM7/ARM9/ARM11
47,請簡述下面這段程式碼的功能?
mov r12, #0x0
ldr r13, =0x30100000
mov r14, #4096
loop:
ldmia r12!, {r0-r11}
stmia r13!, {r0-r11}
cmp r12, r14
bl loop
答案:藉助r0~r11,將記憶體地址0x0開始的4KB資料拷貝到0x30100000
48,嵌入式中常用的檔案系統有哪些?說出它們的主要特點和應用場合?
答:只讀檔案系統 cramfs: 壓縮的只讀檔案系統 特點: 啟動快,檔案最大支援256MB,單個檔案最大16MB squashfs: 只讀檔案系統 特點: 壓縮比最大,啟動比cramfs慢 案例:路由器,ubuntu的發行光碟 可結合LZMA壓縮演算法 可讀寫的檔案系統: JFFS2: 支援NOR 和NAND FLASH (對NAND的支援天生不足)
49,某外設暫存器rGpioBase的地址是0x56000000,暫存器的0~15位有效,請寫出給外設暫存器高八位(8~`15位)設定成0xc3的程式碼?
答:#define rGpioBase (*((volatile unsigned int *)0x56000000)) rGpioBase &= ~0xff00; rGpioBase |= 0xc300;