嵌入式工程師筆試題

2021-06-07 09:40:29 字數 1371 閱讀 4307

1. linux核心裡面,記憶體申請有哪幾個函式,各自的區別?

kmalloc 連續物理記憶體

vmalloc 虛擬記憶體連續 物理上非連續

2. irq和fiq有什麼區別,在cpu裡面是是怎麼做的?

irq 普通中斷

fiq 快速中斷 有自己的暫存器,省去暫存器內容儲存的時間。

3. int *a;

char *b;

a 和 b本身是什麼型別?

本身應該為無符號長整個型

a、b裡面本身存放的只是乙個位址,難道是這兩個位址有不同麼? 

只是乙個位址,只是指向的內容不同,乙個指向整型,乙個指令字串

4. 中斷的上半部分和下半部分的問題:

講下分成上半部分和下半部分的原因,為何要分?講下如何實現?

5. 核心函式mmap的實現原理,機制?

mmap函式實現是把乙個檔案對映到乙個記憶體區域,從而我們可以像讀寫記憶體一樣讀寫檔案,他比單純呼叫read/write也要快上許多。在某些時候我們可以把記憶體的內容拷貝到乙個檔案中實現記憶體備份,當然,也可以把檔案的內容對映到記憶體來恢復某些服務。另外,mmap實現共享記憶體也是其主要應用之一,mmap系統呼叫使得程序之間通過對映同乙個普通檔案實現共享記憶體。

6. 驅動裡面為什麼要有併發、互斥的控制?如何實現?講個例子?

併發(concurrency

)指的是多個執行單元同時、並行被執行,而併發的執行單元對共 享資源(硬體資源和軟體上的全域性變數、靜態變數等)的訪問則很容易導致競態(

race conditions)。

解決競態問題的途徑是保證對共享資源的互斥訪問,所謂互斥訪問就是指乙個執行單元 在訪問共享資源的時候,其他的執行單元都被禁止訪問。

訪問共享資源的**區域被稱為臨界區,臨界區需要以某種互斥機 制加以保護,中斷遮蔽,原子操作,自旋鎖,和訊號量都是linux

裝置驅動中可採用的互斥途徑。

7. spinlock自旋鎖是如何實現的?

自旋鎖在同一時刻只能被最多乙個核心任務持有,所以乙個時刻只有乙個執行緒允許存在於臨界區中。這點可以應用在多處理機器、或執行在單

處理器上的搶占式核心中需要的鎖定服務。

8. 任務排程的機制?

9 framebuffer機制? 

linux抽象出framebuffer這個裝置來供使用者態程序實現直接寫屏。framebuffer機制模仿顯示卡的功能,將顯示卡硬體結構抽象掉,可以通過framebuffer的讀寫直接對視訊記憶體進行操作。使用者可以將framebuffer看成是顯示記憶體的乙個映像,通過mmap將其對映到程序位址空間之後,就可以直接進行讀寫操作,而寫操作可以立即反應在螢幕上。這種操作是抽象的,統一的。使用者不必關心物理視訊記憶體的位置、換頁機制等等具體細節,這些都是由framebuffer裝置驅動來完成的。通過mmap呼叫把顯示卡的物理記憶體空間對映到使用者空間 

嵌入式軟體工程師筆試題

一 選擇題 1 定義函式 時,預設函式的型別宣告,則函式型別取預設型別 a.void b.char c.float d.int 參 d 二 簡答 1 多型類中的虛函式表是compile time,還是run time時建立的?參 虛函式表是在編譯期就建立了,各個虛函式這時被組織成了乙個虛函式的入口位...

嵌入式工程師需要mysql 嵌入式工程師的發展路線

最近遇到很多處於迷茫中的新手,在糾結要不要去學嵌入式,主要問題在於嵌入式的門檻非常高,經驗少 或者非電子專業投身嵌入式行業能否發展下去。現在嵌入式開發行業的確發展很好,大多數從業者都是科班出身,但我們也看到很多非科班的人分享了自己的從業過程,也許起初知識不如科班的多,但他們經過持續數年學習實踐,也成...

嵌入式工程師step by step

近來嵌入式挺火,於是大家都往這裡擠。我想提醒大家的是,嵌入式馬上也會成為如今的軟體業。在你進來之前請先考慮清楚。但只要我們真的學精了一樣東西,不管它將來變成什麼樣,哪怕最後只剩下乙個人,那個人也一定就是你自己。很多人以為搞嵌入式就是隨便找本書看看,在電腦上編幾個程式就完事。非也,其實嵌入式的門檻是比...