嵌入式軟體工程師應聘知識點

來源:互聯網
上載者:User
嵌入式軟體工程師應聘 修改瀏覽許可權 |
刪除

資料結構(C語言)部分常考的知識點:

1、局部變數能、全域變數和靜態變數

2、堆和棧

3、Const、volatile、define、typedef的用途

4、鏈表(比如鏈表的插入、刪除和排序)

5、排序(考查冒泡法的較多)

6、可重新進入函數 、malloc函數

7、指標(常考函數指標,函數指標,數組指標,指標數組和其他的應用),結構體和共用體

8、#include<filename.h>和#include“filename.h”的區別。

作業系統部分常考的知識點:

1、中斷和異常

2、進程和線程

3、進程的同步機制,進程通訊和進程的死結

4、優先順序反轉和優先順序繼承問題

5、makefile檔案

一些嵌入式開發的網址:

國外網站

Linux裝置網站,由Rick Lehrbaum建立和維護,是一個嵌入式Linux入門網站,其中包含

嵌入式Linux行業的每日新聞、完整系列的快速參考指南、由重要開發人員撰寫的大量文章

,還包括一個互動論壇。

http://www.linuxdevices.com/

下載嵌入式Linux交叉編譯工具鏈的好地方

SnapGear Embedded Linux Distribution Home Page

http://www.snapgear.org/snapgear/index.html

http://www.uclinux.org/pub/uClinux/...lf-tools/gcc-3/

嵌入式Linux聯盟(ELC),一個非盈利性的廠商中立的同業工會,其目標是在整個嵌入式

、應用和裝置市場中發展和推廣Linux。

www.embedded-linux.org

Beyond Logic公司首頁,提供了許多嵌入式Linux系統開發的資料。

http://www.beyondlogic.org

嵌入式Linux期刊(ELJ,Embedded Linux Journal),主要關注Linux和其他開源軟體在嵌

入式系統中的應用。 其中有很多業界領導者為ELJ撰寫文章。

embedded.linuxjournal.com

有幾本寫嵌入式Linux系統的書

http://www.embeddedlogic.com/ELSweb/booklinks.html

有關PowerPC體系的嵌入式

www.mvista.com

www.denx.de/e/index1.php

IXP4XX Open Source Developers Guide

http://ixp4xx-osdg.sourceforge.net/

uClinux/ARM項目

http://adam.kaist.ac.kr/~hschoe/notice.html

個人首頁

一個業餘愛好者代禮周的個人首頁,都是實踐出來的

http://www.lomx.net/index.htm

D_J嵌入式個人首頁,有很多資料!

http://staff.ustc.edu.cn/~wangzhuo/index.html

renbagshoes的個人首頁,有些資料可能你會用的到!

http://timity.nease.net

嵌入式Linux作業系統

小型化的嵌入式Linux版本

uClinux — 在沒有 MMU 的系統上啟動並執行 Linux。目前支援 Motorola 68K、MCF5206 和

  MCF5207 ColdFire 微處理器。

http://www.uclinux.org/index.html

Etlinux — 設計用於在小型工業電腦,尤其是 PC/104 模組上啟動並執行 Linux 的完全

分發版

http://www.prosa.it/etlinux/index.html

Tiny Linux ── 可以運行在 386 上的 Linux 分發版。

http://tiny.seul.org/en/

ThinLinux ── 面向專用的照相機伺服器、X-10 控制器、MP3 播放器和其它類似的嵌

入式應用的最小化的 Linux 分發版。

www.thinlinux.org

LRP(Linux Route Project)

http://www.linuxrouter.org

Peeweelinux一個小的嵌入式Linux發行版

http://freshmeat.net/projects/peeweelinux

具有即時擴充功能的嵌入式Linux版本

RT-Linux首頁

http://www.fsmlabs.com

http://www.rtlinux.com

RTAI

http://www.rtai.org

EL/IX

SRT-Linux

嵌入式GUI

Microwindows由Century Software的CEO Greg Haerr主持開發的一個公開源碼(LGPL)的

項目。Microwindows致力於為一些小型裝置和平台提供現代圖形視窗環境。Microwindow

s支援許多硬體平台,移植性很強。Microwindows的主要目的之一便是運行在嵌入式Linu

x上,並且提供了基於Win32/X的兩套API介面。

http://www.microwindows.org

http://microwindows.org

MiniGUI由原清華大學教師魏永明先生開發,是中國人做的得較好的自由軟體之一。Mini

GUI 是一種面向嵌入式系統或者即時系統的公開源碼(LGPL)的圖形化使用者介面支援系統。

它主要運行於Linux控制台,實際可以運行在任何一種具有POSIX線程支援的POSIX相容系

統上。

http://www.minigui.org

飛漫軟體的MiniGUI項目

http://www.minigui.com/company/cindex.shtml

Qt/Embedded是著名的QT庫開發商Trolltech進行中的面向嵌入式系統的QT版本。Qt/Em

bedded對於各種硬體介面到GUI工具包提供了完整的圖形棧。Qt/Embedded的API同Qt/X11

和Qt/Windows的相同,但它並不是基於X11庫的。Qt/Embedded是公開源碼(LGPL)項目。

http://www.trolltech.com

OpenGUI基於一個用彙編實現的x86圖形核心,提供了一個快速的、32位的、高層的C/C++

圖形介面。OpenGUI也是一個公開源碼(LGPL)項目。OpenGUI提供了二維繪圖原語,訊息

驅動的API和BMP檔案格式支援。

http://www.tutok.sk/fastgl

PicoGUI是一個可以工作在包括手持式裝置等各種硬體上的小型的、可移植的、基於客戶

/伺服器結構的GUI。同X Window系統一樣,它具有客戶—伺服器結構的靈活性,但又不

同於X Window系統,它將字型、BMP檔案、控制項以及一些應用程式所需要的其它的一些資

源直接整合在伺服器。雖然減少了系統的靈活性,但在速度上有了很大的提高,並且減

小了程式大小。

http://picogui.org

Tiny-X是一個為嵌入式系統而開發的緊縮型的X Window伺服器。它由SuSE贊助,由XFree

86的核心成員Keith Packard開發。Tiny-X的目標是可以在小記憶體或幾乎無記憶體的情況下

良好運行。

http://www.pps.jussieu.fr/~jch/software/kdrive.html

凹凸筆試題目(嵌入式軟體開發)

2007-02-07

Embedded Software Design Engineer

1 讀程式段,回答問題

int main(int argc,char *argv[])

{

int c=9,d=0;

c=c++%5;

d=c;

printf("d=%d\n",d);

return 0;

}

a) 寫出程式輸出

b) 在一個可移植的系統中這種運算式是否存在風險?why?

#include "stdio.h"

int a=0;

int b;

static char c;

int main(int argc,char *argv[])

{

char d=4;

static short e;

a++;

b=100;

c=(char)++a;

e=(++d)++;

printf("a=%d, b=%d, c=%d, d= %d, e=%d",a,b,c,d,e);

return 0;

}

a) 寫出程式輸出

b) 編譯器如果安排各個變數(a,b,c,d)在記憶體中的布局(eg. stack,heap,data section,bss section),最好用圖形方式描述。

2 中斷是嵌入式系統中重要的組成部分,這導致了許多編譯開發商提供一種擴充:讓標準C支援中斷,產生了一個新的關鍵字__interrupt。下面的代碼就使用了__interrupt關鍵字去定義了一個中斷服務子程式(ISR),請評論以下這段代碼。

__interrupt double compute_area(double radius)

{

double area = PI * radius *radius;

printf("nArea = %f", area);

return area;

}

3 C/C++基礎知識問題

a) 關鍵字volatile在編譯時間有什麼含義?並給出三個不同使用情境的例子(可以虛擬碼或者文字描述)。

b) C語言中static關鍵字的具體作用有哪些 ?

c) 請問下面三種變數聲明有何區別?請給出具體含義

int const *p;p是一個指向常整型變數的指標。

int* const p;p是一個指向整型變數的常數執政。

int const* const p;

4 嵌入式系統相關問題

a) 對於整形變數A=0x12345678,請畫出在little endian及big endian的方式下在記憶體中是如何儲存的。

b) 在ARM系統中,函數調用的時候,參數是通過哪種方式傳遞的?

c) 中斷(interrupt,如鍵盤中斷)與異常(exception,如除零異常)有何區別?

5 設週期性任務P1,P2,P3的周期為T1,T2,T3分別為100,150,400;執行時間分別為20,40,100。請設計一種調度演算法進行任務調度,滿足任務執行循環及任務周期。

6 優先順序反轉問題在嵌入式系統中是一中嚴重的問題,必須給與足夠重視。

a) 首先請解釋優先順序反轉問題

b) 很多RTOS提供優先順序繼承策略(Priority inheritance)和優先順序天花板策略(Priority ceilings)用來解決優先順序反轉問題,請討論這兩種策略。

參考答案:

1 5

存在風險,因為c=c++%5;這個運算式對c有兩次修改,行為未定義,c的值不確定

int a=0; // data section

int b; // data section

static char c; // BSS

int main(int argc,char *argv[])

{

char d=4; // stack

static short e; // BSS

a++;

b=100;

c=(char)++a;

e=(++d)++;

printf("a=%d, b=%d, c=%d, d= %d, e=%d",a,b,c,d,e);

return 0;

}

a=2,b=100,c=2,d=6,e=5

2 a)ISR不能返回一個值;

b)ISR不能傳遞參數;

c)浮點一般都是不可重新進入的;

d)printf函數有重入和效能上的問題。

3 a) 用volatile關鍵字定義變數,相當於告訴編譯器,這個變數的值會隨時發生變化,每次使用時都需要去記憶體裡

重新讀取它的值,並不要隨意針對它作最佳化。

建議使用volatile變數的場所:

(1) 平行裝置的硬體寄存器

(2) 一個中斷服務子程式中會訪問到的非自動變數(全域變數)

(3) 多線程應用中被幾個任務共用的變數

b) 在函數體,一個被聲明為靜態變數在這一函數被調用過程中維持其值不變。

在模組內(但在函數體外),一個被聲明為靜態變數可以被模組內所用函數訪問,但不能被模組外其它函數

訪問。它是一個本地的全域變數。

在模組內,一個被聲明為靜態函數只可被這一模組內的其它函數調用。那就是,這個函數被限制在聲明它的

模組的本地範圍內使用。

static全域變數與普通的全域變數有什麼區別:static全域變數只初使化一次,防止在其他檔案單元中被引用;

static局部變數和普通局部變數有什麼區別:static局部變數只被初始化一次,下一次依據上一次結果值;

static函數與普通函數有什麼區別:static函數在記憶體中只有一份,普通函數在每個被調用中維持一份拷貝

c) 一個指向常整型數的指標

一個指向整型數的常指標

一個指向常整型數的常指標

4

a) 0x12345678

little endian big endian 剛好反過來

高地址--〉 0x12 低地址--〉 0x12

0x34 0x34

0x56 0x56

低地址--〉 0x78 高地址--〉 0x78

b)參數<=4時候,通過R0~R3傳遞,>4的通過壓棧方式傳遞

c) 異常:在產生時必須考慮與處理器的時鐘同步,實踐上,異常也稱為同步中斷。在處理器執行到由於編程失誤而導致的錯誤指令時,或者在執行期間出現特殊情況(如缺頁),必須靠核心處理的時候,處理器就會產生一個異常。

所謂中斷應該是指外部硬體產生的一個電訊號,從cpu的中斷引腳進入,打斷cpu當前的運行;

所謂異常,是指軟體運行中發生了一些必須作出處理的事件,cpu自動產生一個陷入來打斷當前運行,轉入異常處理流程。

非同步與同步的區別`

5

6 高優先順序任務需要等待低優先順序任務釋放資源,而低優先順序任務又正在等待中等優先順序任務的現象叫做優先順序反轉

優先順序繼承策略(Priority inheritance):繼承現有被阻塞任務的最高優先順序作為其優先順序,任務退出臨界區,恢

複初始優先順序。

優先順序天花板策略(Priority ceilings):控制訪問臨界資源的訊號量的優先順序天花板。

優先順序繼承策略對任務執行流程的影響相對教小,因為只有當高優先順序任務申請已被低優先順序任務佔有的臨界資源

這一事實發生時,才抬升低優先順序任務的優先順序。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.