嵌入式linux面試題解析——ARM部分
1、FIQ比IRQ快的原因:
A、FIQ模式的R8--R14暫存器是獨有的,FIQ處理程式可以不必執行儲存和恢復中斷現場的指令。
B、FIQ可以將ISR直接放在FIQ後面的地址空間,不需要跳轉。
2、中斷與異常有何區別
異常在處理的時候必須考慮與處理器的時鐘同步,實際上異常也稱為同步中斷,在處理器執行到因編譯錯誤而導致的錯誤指令時,或者在執行期間出現特殊錯誤,必須靠核心處理的時候,處理器就會產生一個異常;所謂中斷是指外部硬體產生的一個電訊號從CPU的中斷引腳進入,打斷CPU的執行。所謂異常是指軟體執行過程中發生了一些必須作出處理的事件,CPU自動產生一個陷入來打斷CPU的執行。
3、
當引數小於等於4的時候是通過r0-r3暫存器來進行傳遞的,當引數大於4的時候是通過壓棧的方式進行傳遞。
4、簡述SPI,UART,I2C三種傳輸方式
SPI:高速同步序列口,首發獨立,可同步進行
SPI介面主要應用在EEPROM,Flash,實時時鐘,A/D轉化器,數字訊號處理,是一種全雙工同步通訊匯流排,該介面一般使用四條線:序列時鐘線(sck),主出從入線,主入從出線,低電平有效地的從機選擇線。
I2C協議:是微控制器與其他晶片進行通訊的協議:
A、只要求兩條匯流排線路,一條是序列時鐘線,一條是序列資料線;
B、
C、是一個多主機匯流排,如果兩個或更多主機同時初始化資料傳送可通過沖突檢測和仲裁防止資料破壞;
D、I2C匯流排傳輸的是資料的總高位
UART:主要是由一個modem(調變解調器),可以將模擬訊號量轉化成數字訊號量。
5、嵌入式系統中斷服務子程式(ISR)
中斷是嵌入式系統中重要的組成部分,導致了很多編譯開發商提供一種擴充套件—讓標準C支援中斷。具體代表是,產生了一個新的關鍵字 __interrupt。下面的程式碼就使用了__interrupt關鍵字去定義了一箇中斷服務子程式(ISR),請評論一下這段程式碼的。
__interrupt double compute_area (double radius)
{
double area = PI * radius * radius;
printf("Area = %f", area);
return area;
}
A、ISR 不能返回一個值。
B、ISR 不能傳遞引數。
C、在許多的處理器/編譯器中,浮點一般都是不可重入的。有些處理器/編譯器需要讓額處的暫存器入棧,有些處理器/編譯器就是不允許在ISR中做浮點運算。此外,ISR應該是短而有效率的,在ISR中做浮點運算是不明智的。
D、printf()經常有重入和效能上的問題。
6、在ARM的彙編程式中,有如下幾種偽指令:_____、______、______、______、______。
答案:符號定義偽指令、資料定義偽指令、彙編控制偽指令、巨集指令、其他偽指令
7、協處理器主要控制:______、______、______。
答案:片內的MMU、指令和資料快取(IDC)、寫緩衝(Write Buffer)
8、當一個異常出現以後,ARM微處理器會執行哪幾步操作?
答:當一個異常出現以後,ARM微處理器會執行以下幾步操作。
A、將下一條指令的地址存入相應連線暫存器LR,以便程式在處理異常返回時能從正確的位置重新開始執行。若異常是從ARM狀態進入,則LR暫存器中儲存 的是下一條指令的地址(當前PC+4或PC+8,與異常的型別有關);若異常是從Thumb狀態進入,則在LR暫存器中儲存當前PC的偏移量,這樣,異常 處理程式就不需要確定異常是從何種狀態進入的。例如:在軟體中斷異常SWI,指令 MOV PC,R14_svc總是返回到下一條指令,不管SWI是在ARM狀態執行,還是在Thumb狀態執行。
B、將CPSR複製到相應的SPSR中。
C、根據異常型別,強制設定CPSR的執行模式位。
D、強制PC從相關的異常向量地址取下一條指令執行,從而跳轉到相應的異常處理程式處。
9、ARM微處理器在較新的體系結構中支援兩種指令集:______、______。
答案:ARM指令集、Thumb指令集
10、ARM處理器有9種基本定址方式,分別是:______、______、______、______、______、______、______、______、______。
答案:暫存器定址、立即定址、暫存器偏移定址、暫存器間接定址、基址定址、多暫存器定址、堆疊定址、塊拷貝定址、相對定址
11、ARM指令集可以分為6類,分別是:______、______、______、______、______、______。
答案:跳轉指令、資料處理指令、程式狀態暫存器(PSR)傳輸指令、Load/Store指令、協處理器指令、異常中斷產生指令
12、表示遞增和遞減的滿堆疊和空堆疊有哪幾種組合,請比較它們的特點。
答:有4種類型的堆疊,表示遞增和遞減的滿堆疊和空堆疊的各種組合。
滿遞增:堆疊通過增大儲存器的地址向上增長,堆疊指標指向內含有效資料項的最高地址。指令如LDMFA,STMFA等。
空遞增:堆疊通過增大儲存器的地址向上增長,堆疊指標指向堆疊上的第一個空地址。指令如LDMEA,STMEA等。
滿遞減:堆疊通過減小儲存器的地址向下增長,堆疊指標指向內含有效資料項的最低地址。指令如LDMFD,STMFD等。
空遞減:堆疊通過減小儲存器的地址向下增長,堆疊指標指向堆疊下的第一個空地址。指令如LDMED,STMED等。
13、ARM協處理器指令包括哪3類,請描述它們的功能。
答:ARM協處理器指令包括以下3類:
用於ARM處理器初始化ARM協處理器的資料處理操作。
用於ARM處理器的暫存器和ARM協處理器的暫存器間的資料傳送操作。
用於在ARM協處理器的暫存器和記憶體單元之間傳送資料。
14、可執行映像檔案通常由幾部分構成,它們有什麼特點?
答:可執行映像檔案通常由以下幾部分構成。
一個或多個程式碼段,程式碼段的屬性為只讀。
零個或多個包含初始化資料的資料段,資料段的屬性為可讀寫。
零個或多個不包含初始化資料的資料段,資料段的屬性為可讀寫。
15、ARM嵌入式系統主要由______、______和______構成。
答案:嵌入式處理器、相關支撐硬體、嵌入式軟體系統
16、匯流排通常包括______、______和______。
答案:資料匯流排、地址匯流排、控制匯流排
17、復位後,ARM處理器處於(B)模式,(D)狀態
A、user B、SVC C、system D、ARM E、Thumb
18、ARM9 處理器總共有(E)個暫存器,system模式下使用(A)個暫存器,SVC模式下使用(B)個暫存器
A、17 B、18 C、32 D、36 E、37
19、ARM處理器中優先級別最高的異常為(E)
A、FIQ B、SWI C、IRQ D、SVC E、RESET
20、ARM出局處理指令中有效的立即數是(ACEGH)
A、0x00AB0000 B、0x0000FFFF C、0xF000000F D、0x08000012
E、0x00001F80 F、0xFFFFFFFF G、0 H、0xFF000000
21、ATPCS規定中,推薦子函式引數最大為(D)個
A、1 B、2 C、3 D、4
22、ATPCS規定中,棧是(B)
A、滿加 B、滿減 C、空加 D、空減
23、ARM彙編程式設計中,通常PC是指(D),LR是指(C),SP是指(B)
A、R12 B、R13 C、R14 D、R15
24、CPU復位後執行MOV R0,PC指令後,R0暫存器的值為(C)
A、0x0 B、0x4 C、0x8 D、0xC
25、ARM中可以訪問狀態暫存器的指令是(D),能夠訪問記憶體的指令是(B)
A、MOV B、LDR C、MCR D、MRS
26、ARM7TDMI使用3級流水線,分3個階段,分別為取指、譯碼和執行。
27、ARM9的五級流水線分別是取指、譯碼、執行、緩衝資料、回寫。
28、ARM的異常型別有復位異常、未定義指令異常、軟體中斷、指令預取中止、資料中止異常、IRQ、FIQ
29、描述一下嵌入式基於ROM的執行方式基於RAM的執行方式有什麼區別。
基於RAM的執行方式:需要把硬碟和其他介質的程式碼先載入到ram中,載入過程中一般有重定位的操作;
基於ROM:沒有上面的操作。
基於ROM:速度較基於RAM的慢,因為會有一個把變數,部分程式碼等從儲存器(硬碟,flash)搬移到RAM的過程;可用RAM資源比基於RAM的多;
基於RAM:速度較基於ROM的快,可用RAM比基於ROM的少,因為所有的程式碼,資料都必須存放在RAM中。
30、嵌入式作業系統和通用作業系統有什麼差別?
答案:多優先順序,搶佔型,實時作業系統。嵌入式作業系統一般沒有UI,體積小,實時性強,對穩定性要求更高。嵌入式作業系統強調實時性,並且可裁減。要求系統資源的消耗要儘可能的小。
31、在ARM體系結構中,要從主動使用者模式(User)切換到超級使用者模式(Supervisor),應採用何種方法?C A、直接修改CPU狀態暫存器(CPSR)對應的模式 B、先修改程式狀態備份暫存器(SPSR)到對應的模式,再更新CPU狀態 C、使用軟體中斷指令(SWI) D、讓處理器執行未定義指令
32、在ARM Linux體系中,用來處理外設中斷的異常模式是__C____ A、軟體中斷(SWI) B、未定義的指令異常 C、中斷請求(IRQ) D、快速中斷請求(FIQ)
33、在ARM Linux系統中,中斷處理程式進入C程式碼以後,ARM的處於__A__工作模式 A、超級使用者(SVC) B、中斷(IRQ) C、快速中斷(IRQ) D、和進入中斷之前的狀態有關係
34、在ARM體系構建的嵌入式系統中,由電平模式觸發的中斷,其對應的中斷標準應該在何時被清除?A A、當中斷處理程式結束以後,才可以清除 B、進入相應的中斷處理程式,即可以清除 C、產生IRQ中斷的時候,處理器自動清除 D、任何時候都可以清除
35、在下列ARM處理器的各種模式中,只有__A___模式不可以自由地改變處理器的工作模式。 A、使用者模式(User) B、系統模式(System) C、終止模式(Abort) D、中斷模式(IRQ)
36、ARM嵌入式系統中,PC指向的是正在(C )的指令地址。 A 執行 B 譯碼 C 取指 D 都不是
37、同CISC相比,下面哪一項不屬於RISC處理器的特徵___D_____ A、採用固定長度的指令格式,指令規整、簡單、基本定址方式有2~3種。 B、減少指令數和定址方式,使控制部件簡化,加快執行速度。 C、資料處理指令只對暫存器進行操作,只有載入/儲存指令可以訪問儲存器,以提高指令的執行效率,同時簡化處理器的設計。 D、RISC處理器都採用哈佛結構
38、在ARM體系結構中,要從主動使用者模式(User)切換到超級使用者模式(Supervisor),應採用何種方法?C A、直接修改CPU狀態暫存器(CPSR)對應的模式 B、先修改程式狀態備份暫存器(SPSR)到對應的模式,再更新CPU狀態 C、使用軟體中斷指令(SWI) D、讓處理器執行未定義指令
39、在ARM系統結構中,MMU對映最小的單元空間是__D__ A、64KB B、16KB C、4KB D、1KB
40、在ARM Linux啟動的過程中,開啟MMU的時候,如何實現從實地址空間到虛擬地址空間的過度?D A、開啟MMU,在記憶體中建立頁表(對映核心到3G以上的虛擬地址空間)並繼續執行。 B、開啟MMU,在記憶體中建立頁表(對映核心到3G以上的虛擬地址空間),跳轉到虛擬地址空間繼續執行。 C、在記憶體中建立頁表(對映核心到3G以上的虛擬地址空間),開啟MMU,跳轉到虛擬地址空間繼續執行。 D、在記憶體中建立頁表(對映核心到3G以上的虛擬地址空間,同時把核心所在的前1MB空間到和其實地址相同的虛擬地址空間),開啟MMU,跳轉到虛擬地址空間繼續執行。
41、在ARM Linux體系中,用來處理外設中斷的異常模式是_C_____ A、軟體中斷(SWI) B、未定義的指令異常 C、中斷請求(IRQ) D、快速中斷請求(FIQ)
42、指令ADD R2,R1,R1,LSR #2中,LSR的含義是(B)。 A 邏輯左移 B 邏輯右移 C 算術右移 D迴圈右移
43、哈佛結構和馮諾依曼結構的區別是( A) A 指令和資料分開儲存 B 不需要程式計數器 C 統一編址 D 單一資料匯流排
44、ARM9和ARM7的重要區別是(A ) A ARM9帶有MMU功能 B ARM9支援Thumb指令集 C ARM9帶有Cache功能 D ARM9是哈佛結構
45、當系統工作負載增加時,CPU的 A 將佔很大比重 A) 使用者時間 B)系統時間 C)空閒時間 D) 程序時間
46、嵌入式微控制器相比嵌入式微處理器的的最大特點(B )。 A、體積大大減小 B、單片化 C、功耗低 D、成本高
47、同CISC相比,下面哪一項不屬於RISC處理器的特徵__D______ A、採用固定長度的指令格式,指令規整、簡單、基本定址方式有2~3種。 B、減少指令數和定址方式,使控制部件簡化,加快執行速度。 C、資料處理指令只對暫存器進行操作,只有載入/儲存指令可以訪問儲存器,以提高指令的執行效率,同時簡化處理器的設計。 D、RISC處理器都採用哈佛結構
48、中斷向量是指(C )。 A、中斷斷點的地址 B、中斷向量表起始地址 C、中斷處理程式入口地址 D、中斷返回地址
49、在ARM系統結構中,MMU對映最大的單元空間是___A_ A、1MB B、128KB C、64KB D、4KB