嵌入式筆試題比較經典題(拓盛電子)

2021-09-06 13:14:24 字數 2845 閱讀 2806

1. 寫出函式執行的結果:

void

join

(int x)

//遞迴運算

intmian()

}printf

("over!");

}

654ok

x = 2,y = 0

x = 2,y = 1

x = 1,y = 0

x = 1,y = 1

over!

2. 分析電路 根據輸入波形畫出輸出波形,並解釋

4. 寫出嵌入式中經常使用的死迴圈有幾種

while(1){};for(;?{}

5. volatile 的含義,寫出3中使用方式

volatile提醒編譯器它後面所定義的變數隨時都有可能改變,因此編譯後的程式每次需要儲存或讀取這個變數的時候,都會直接從變數位址中讀取資料。如果沒有volatile關鍵字,則編譯器可能優化讀取和儲存,可能暫時使用暫存器中的值,如果這個變數由別的程式更新了的話,將出現不一致的現象。

一般說來,volatile用在如下的幾個地方:

(1)、中斷服務程式中修改的供其它程式檢測的變數需要加volatile;

(2)、多工環境下各任務間共享的標誌應該加volatile;

(3)、儲存器對映的硬體暫存器通常也要加volatile說明,因為每次對它的讀寫都可能由不同意義

6. 給定一整型變數a寫兩段**:第乙個設定a的bit3,第二個清除a的bit3

#define bit3 (0x1<<3)

static

int a;

void

set_bit3

(void

)void

clear_bit3

(void

)

7. 某工程中要設定乙個絕對位址為0x67a9整形變數值為0xaa66,編譯器是純ansi編譯器。

int

*ptr;

ptr =

(int*)

0x67a9

;*ptr =

0xaa55

;

__interrupt double compute_area (

double radius)

1). isr 不能返回乙個值。如果你不懂這個,那麼你不會被雇用的。

2). isr 不能傳遞引數。如果你沒有看到這一點,你被雇用的機會等同第一項。

3). 在許多的處理器/編譯器中,浮點一般都是不可重入的。有些處理器/編譯器需要讓額處的暫存器入棧,有些處理器/編譯器就是不允許在isr中做浮點運算。此外,isr應該是短而有效率的,在isr中做浮點運算是不明智的。

4). 與第三點一脈相承,printf()經常有重入和效能上的問題。如果你丟掉了第三和第四點,我不會太為難你的。不用說,如果你能得到後兩點,那麼你的被雇用前景越來越光明了。

不能傳引數 不能有返回值 不能有列印語句 不應該使用浮點運算

9. 利用heap動態使用記憶體的過程,碎片如何形成?

動態分配將不可避免會產生記憶體碎片的問題,那麼什麼是記憶體碎片?記憶體碎片即「碎片的記憶體」描述乙個系統中所有不可用的空閒記憶體,這些碎片之所以不能被使用,是因為負責動態分配記憶體的分配演算法使得這些空閒的記憶體無法使用,這一問題的發生,原因在於這些空閒記憶體以小且不連續方式出現在不同的位置。因此這個問題的或大或小取決於記憶體管理演算法的實現上。

詳見:10. 訊號量最常用的兩個功能

訊號量是用來調協程序對共享資源的訪問的。

用於程序中傳遞訊號的乙個整數值。

11. uclinux 和linux的區別

對uclinux來說,其設計針對沒有mmu的處理器,不能使用處理器的虛擬記憶體管理技術。uclinux仍然採用儲存器的分頁管理,系統在啟動時把實際儲存器進行分頁。在載入應用程式時程式分頁載入。但是由於沒有mmu管理,所以實際上uclinux採用實儲存器管理策略。uclinux系統對於記憶體的訪問是直接的,所有程式中訪問的位址都是實際的實體地址。作業系統對記憶體空間沒有保護,各個程序實際上共享乙個執行空間。

12. norflash和nandflash 的基本區別

快閃儲存器晶元讀寫的基本單位不同。應用程式對nor晶元操作以「字」為基本單位。應用程式對nand晶元操作是以「塊」為基本單位。

2)nor快閃儲存器是隨機儲存介質,用於資料量較小的場合;nand快閃儲存器是連續儲存介質,適合存放大的資料。

嵌入式系統中經常將nor晶元做啟動晶元使用,而直接將nand晶元做啟動晶元比較難。

在處理小資料量的i/o操作的時候的速度要快與nand的速度。

5)nand快閃儲存器的容量比較大,目前最大容量己經達到 8g位元組。

6)nor快閃儲存器的可靠性要高於nand快閃儲存器

7)nand flash一般位址線和資料線共用,對讀寫速度有一定影響;而nor flash快閃儲存器資料線和位址線分開,所以相對而言讀寫速度快一些。

13. linux移植arm的基本步驟和完成的任務

14. linux圖形系統有哪些?

x window、svgalib、framebuffer、libggi

15. linux驅動的基本結構

嵌入式筆試題

考查逗號表示式 main 這段程式的輸出是 a c 3 d 3 b c 5 d 3 c c 3 d 5 d c 5 d 5 應該選c。c語言提供一種特殊的 運算子,逗號運算子,優先級別最低,它將兩式聯接起來,如 3 5,6 8 稱為逗號表示式,其求解過程先表示式1,後表示式2,整個表示式值是表示式2...

嵌入式 筆試題

指出下列程式的執行結果 int main memcpy a 3,a,5 for int i 0 i 10 i return 0 解答 0 1 2 0 1 5 6 7 8 9 注意 1 陣列a作為引數時,轉化為普通指標 a 3 按照char長度計算 2 memcpy的原型是 void memcpy v...

嵌入式筆試題(3)

1 設float a 2,b 4,c 3 以下c語言表示式與代數式 a b c計算結果不一致的是 a.a b c 2 b.1 2 a b c c.a b c 1 2 d.c 2 a b 2 為了向二進位制檔案尾部增加資料,開啟檔案的方式應採用 a.ab b.rb c.wb d.wb 參 d r代表r...