嵌入式系統開發
- 嵌入式系統概述
- ARM技術及體系結構
- ARM7TDMI指令系統
嵌入式系統概述
1.什麼是嵌入式系統?有何特點?
嵌入式系統是以應用為中心,以計算機技術為基礎,且軟、硬體可裁剪的,
适用于系統對功能、可靠性、體積、功能、功耗成本具有嚴格要求的計算機系統,
他一般由嵌入式微處理器。外圍硬體裝置,嵌入式作業系統和使用者應用程式組成。
用于實作對其他裝置的控制,監視、處理的功能。
特點:技術先進,系統核心小,專用性強,系統精簡,實時性高,
軟體開發标準化,不具備二次開發的能力
2、嵌入式系統可以分為幾層,每一層完成哪些功能?
I/O接口,組成嵌入式系統的基礎,實作邏輯運算和算術運算;
中間層:相關底層硬體的備至和初始化,裝置驅動程式
軟體層:主要由RTOS,檔案系統,圖形使用者接口,網絡系統和通用元件子產品組成,是軟體開發的基礎;
功能層:完成被控制對象的控制功能。
3嵌入式作業系統中硬體抽象層有什麼特點?
硬體抽象層又稱為中間層,是介于硬體層和軟體層之間的,
它将硬體層和軟體層分開。具有硬體相關性和作業系統相關性。
4.嵌入式處理器分為哪幾類?他們有何特點?
嵌入式微處理器,嵌入式微控制器,嵌入式DSP處理器,嵌入式片上系統
嵌入式微處理器:處理能力強,具有較高的性能,價格相應較高
嵌入式微控制器:單片化,體積小,功耗小,成本低,可靠性提高,價格低廉,功能優良,品種數量多;
嵌入式DSP處理器:專用于信号處理,在系統結構和指令算法方面有特殊設計,具有較高的程式設計效率和指令執行速度。
嵌入式片上系統:實作軟硬體的無縫結合,具有較高的綜合性,
絕大部分系統構件在系統内部,系統簡介,減少了系統的體積和功耗,提高了系統的設計效率和可靠性。
5.簡述嵌入式系統的開發過程。
嵌入式系統的開發過程可以分為需求分析、體系結構設計、軟體設計、硬體設計、系統內建和系統優化與測試6個階段。
自下而上和自上而下的設計流程
ARM技術及體系結構
1.什麼是哈佛結構?與普林斯頓結構有何差別?
哈佛結構是一種将程式中指令和資料分開存儲的存儲器結構。
即哈佛結構中程式存儲器和資料存儲器是兩個獨立的存儲器,每個存儲器獨立編址、獨立通路。
普林斯頓結構(馮·諾伊曼結構)是一種将程式指令存儲器和資料存儲器合并在一起的存儲器結構。
程式指令存儲位址和資料存儲位址指向同一個存儲器的不同實體位置。這便是。這便是兩種結構的差別。
2.什麼是RSIC?什麼是CSIC?簡述他們的特點與差别。
RSIC是精簡指令集計算機,CISC是複雜指令集計算機。兩者的差別在于不同的CPU設計理念和方法。
對于CISC:
⑴ 在CSIC結構的指令系統中,各種指令的使用頻率相差懸殊。有80%的指令隻在20%的運作時間内才會用到。
⑵ CISC結構指令系統的複雜性帶來了計算機體系結構的複雜性,這不僅增加了研制時間和成本,而且還容易造成設計錯誤。
⑶ 在CISC結構指令系統中,由于各條指令的功能不均衡性,不利于采用先進的計算機體系結構技術來提高系統的性能。
對于RISC:
⑴ 簡化指令集,隻保留常用的基本指令;
⑵ 設計大量的通用存儲器,減少訪存的次數;
⑶ 采用簡單的指令格式、規整的指令字長和簡單的尋址方式。
3.ARM7處理器是幾級流水線?在ARM7處理器中,“PC指向的是下一條要執行的指令”,這句話對嗎?為什麼?
ARM7處理器采用三級流水線。
“PC指向的是下一條要執行的指令”,這句話不對。在ARM處理器中将PC程式計數器定義到R15寄存器,
無論處理器處于何種狀态,PC總是指向“正在取值”指令的位址,
一般來說,人們習慣性的約定将“正在執行的指令作為參考點”,成為目前第一條指令,那麼PC總是指向随後的第三條指令,或者說PC總是指向目前正在執行的指令位址再加上2條指令的位址,即指向正在執行指令的下下一條指令,而不是指向下一條要執行的指令。
4.ARM處理器的工作狀态分為哪二種?ARM處理器又是怎麼定義和标志的?
ARM處理器的工作狀态分為ARM狀态和Thumb狀态.
這兩種狀态有程式狀态字CPSR中T标志位确定,為0時處理器工作在ARM狀态,為1時處理器工作在Thumb狀态。
5.ARM處理器的工作狀态分為ARM狀态和Thumb狀态,這兩種狀态有程式狀态字CPSR中T标志位确定,為0時處理器工作在ARM狀态,為1時處理器工作在Thumb狀态。
ARM7TDMI處理器核心包含2套指令系統,分别為ARM指令集和Thumb指令集,兩種指令集的特點是:
ARM指令集:處理器執行32位字對齊方式的ARM指令,每條ARM指令長度為32位,指令的功能強大。
Thumb指令集:處理器執行16位字對齊方式的Thumb指令,每條Thumb指令長度為16位,是ARM指令功能的子集。
ARM7TDMI指令系統
1.ARM指令的尋址方式有幾種?并指出下列指令中的尋址方式。
ARM指令的尋址方式有8種
分别為立即尋址、寄存器尋址、寄存器移位尋址、寄存器間接尋址、
基址變址尋址、相對尋址、多寄存器尋址、堆棧尋址。
⑴ SUB R0, R1, R2 ;寄存器尋址
⑵ LDR R0, [R2] ;寄存器間接尋址
⑶ MVN R0, #0x0F2 ;立即尋址
⑷ LDMIA R0, {R1-R5} ;多寄存器尋址
⑸ STR R2, [R4, #0x02]! ;基址變址尋址
⑹ LDR R1, [R2, R3] ;基址變址尋址
⑺ MOV R1, R1, ROR #2 ;寄存器移位尋址
⑻ LDR R1, [R3], #0x04 ;基址變址尋址
2.指出下列指令是否正确,若不正确請說明原因。
⑴ MOVS R1, 101 ;不正确,立即尋址方式應該是#101
⑵ MVN R1, #0x10F ;錯誤,立即數超出範圍
⑶ STMDA R11, {R2-R8}! ;錯誤,!位置錯,
⑷ ADD R0!, R2, #4 ;錯誤,加法操作中無!符号
⑸ LDR R4, [R5]! ;指令本身正确
⑹ MRS PC, CPSR ;指令本身不報錯,但有嚴重警告,但會導緻無法預料的結果,不正确,MRS是将CPSR傳送到通用寄存器中,但這裡的通用寄存器不包括R15,即PC
⑺ LDMFDS R0!, { R5-R8, R2} ;錯帶S指令無法識别,序号
⑻ ADD R3, [R3], R7 ;不正确,ADD指令不能通路存儲器
(9) LDR R11, [R15,R8] ! ;錯誤,R15作為PC指針,會産生不可預知的結果
(10) BXS R0 ;錯誤,切換狀态不帶S
3.試說明MOV指令、LDR加載指令和LDR僞指令三者的差別。
MOV指令是把立即數、寄存器或寄存器移位後的數送給目标寄存器,可能會影響标志位。
LDR指令是将存儲器中的資料按給定位址加載到寄存器中,資料來自存儲器,目标也是寄存器,不影響标志位。
LDR僞指令(LDR 目标寄存器,=表達式)用于加載32位的立即數或一個位址值到指定寄存器,形式上與LDR指令有差別。
4.解釋B指令、BL指令與BX指令的功能差别,并舉例說明其使用方法。
B指令是分支指令,BL指令是帶連結的分支指令,BX是帶狀态切換的分支指令。
B指令“B WAITA”指跳轉至标号WAITA處開始執行,B指令的跳轉範圍為±32M;
BL指令,實作程式跳轉,完成子程式調用,并保持PC到鍊寄存器LR中,跳轉範圍±32M,舉例“BL DELAY”完成的跳轉至标号DELAY處執行,并把PC-4存入LR。
BX指令,帶狀态切換的跳轉,比如“BX R0”表示跳轉R0指定的位址開始執行,并檢視R0[0]位的值,如果是1,對CPSR的T位置位,解釋目标程式為Thumb指令,如果是0,對CPSR的T位清零,解釋目标程式為ARM指令。
5.分析下列兩段程式片斷的功能,試用類C語言寫出其等價功能。

(1)if(R0 > R1)
R0++;
else
R1++;
(2)if((R0 != 10)&&(R1 != 20))
R0 = R0+R1;
6.使用ARM彙編指令的條件執行功能,試用彙編語言實作下列兩條C代碼語句。
(1) if(x = = y)
a = b + c;
else
a = b – c;
(2) if(x = = y) && ( a = = b)
c = c * 2+b;
1)
LDR R0, x
LDR R1, y
LDR R2, b
LDR R3, c
CMP R0,R1
ADDEQ R4,R2,R3
SUBNE R4,R2,R3
STR R4,a
(2)
LDR R0, x
LDR R1, y
LDR R2,a
LDR R3,b
LDR R4,c
CMP R0,R1
CMPEQ R2,R3,
MULEQ R4,R4,#2
ADD R4,R4,R3
STR R4,c
7.下列代碼段是實作開IRQ中斷和關IRQ中斷功能,試補齊空白處内容。
⑴
MRS R0,CPSR
BIC R1,R0,#0x80
MSR CPSR_c, R1
⑵
MRS R1,CPSR
ORR R1, R1, #0x80
MSR CPSR_c, R1