版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第七章嵌入式系統程序設計及操作系統基礎主講教師:高田第七章ARM9微處理器指令系統簡介
ARM處理器是基于精簡指令集計算機(RISC)原理設計的,指令集和相關譯碼機制較為簡單。具有32位ARM指令集和16位Thumb指令集,ARM指令集效率高,但是代碼密度低;而Thumb指令集具有較高的代碼密度,卻仍然保持ARM的大多數性能上的優(yōu)勢,它是ARM指令集的子集。ARM程序和Thumb程序可相互調用,相互之間的狀態(tài)切換開銷幾乎為零。第七章ARM9微處理器指令系統尋址方式尋址方式是根據指令中給出的地址碼字段來實現尋找真實操作數地址的方式。ARM處理器具有9種基本尋址方式。1.寄存器尋址; 2.立即尋址;3.寄存器移位尋址; 4.寄存器間接尋址;5.基址尋址; 6.多寄存器尋址;7.堆棧尋址; 8.塊拷貝尋址;9.相對尋址。第七章ARM9微處理器指令系統寄存器尋址
操作數的值在寄存器中,指令中的地址碼字段指出的是寄存器編號,指令執(zhí)行時直接取出寄存器值來操作。寄存器尋址指令舉例如下:MOVR1,R2 ;將R2的值存入R1SUBR0,R1,R2;將R1的值減去R2的值,結果保存到R0第七章ARM9微處理器指令系統立即尋址立即尋址指令中的操作碼字段后面的地址碼部分即是操作數本身,也就是說,數據就包含在指令當中,取出指令也就取出了可以立即使用的操作數(這樣的數稱為立即數)。立即尋址指令舉例如下:SUBS R0,R0,#1;R0減1,結果放入R0,并且影響標志位MOV R0,#0xFF000;將立即數0xFF000裝入R0寄存器第七章ARM9微處理器指令系統寄存器移位尋址寄存器移位尋址是ARM指令集特有的尋址方式。當第2個操作數是寄存器移位方式時,第2個寄存器操作數在與第1個操作數結合之前,選擇進行移位操作。寄存器移位尋址指令舉例如下:MOV R0,R2,LSL#3 ;R2的值左移3位,結果放入R0,
;即是R0=R2×8ANDS R1,R1,R2,LSLR3;R2的值左移R3位,然后和R1相 ;“與”操作,結果放入R1第七章ARM9微處理器指令系統寄存器間接尋址寄存器間接尋址指令中的地址碼給出的是一個通用寄存器的編號,所需的操作數保存在寄存器指定地址的存儲單元中,即寄存器為操作數的地址指針。寄存器間接尋址指令舉例如下:LDR R1,[R2] ;將R2指向的存儲單元的數據讀出
;保存在R1中第七章ARM9微處理器指令系統基址尋址基址尋址就是將基址寄存器的內容與指令中給出的偏移量(<4K)相加/減,形成操作數的有效地址?;穼ぶ酚糜谠L問基址附近的存儲單元,常用于查表、數組操作、功能部件寄存器訪問等。寄存器間接尋址是偏移量為0的基址加偏移尋址?;穼ぶ分噶钆e例如下(前索引尋址):LDR R2,[R3,#0x0C] ;讀取R3+0x0C地址上的存儲單元
;的內容,放入R2STR R1,[R0,#-4] ;先R0=R0-4,然后把R0的值寄存
;到保存到R1指定的存儲單元第七章ARM9微處理器指令系統多寄存器尋址多寄存器尋址一次可傳送幾個寄存器值,允許一條指令傳送16個寄存器的任何子集或所有寄存器。多寄存器尋址指令舉例如下:LDMIA R1!,{R2-R7,R12};將R1指向的單元中的數據讀出到
;R2~R7、R12中(R1自動加4)STMIA R0!,{R2-R7,R12};將寄存器R2~R7、R12的值保
;存到R0指向的存儲;單元中
;(R0自動加4)第七章ARM9微處理器指令系統堆棧尋址堆棧是一個按特定順序進行存取的存儲區(qū),操作順序為“后進先出”。堆棧尋址是隱含的,它使用一個專門的寄存器(堆棧指針)指向一塊存儲區(qū)域(堆棧),指針所指向的存儲單元即是堆棧的棧頂。存儲器堆??煞譃閮煞N:向上生長:向高地址方向生長,稱為遞增堆棧向下生長:向低地址方向生長,稱為遞減堆棧棧底棧頂棧區(qū)SP
堆棧存儲區(qū)棧頂棧底棧區(qū)
SP向下增長向上增長0x123456780x12345678堆棧壓棧堆棧壓棧第七章ARM9微處理器指令系統堆棧指針指向最后壓入的堆棧的有效數據項,稱為滿堆棧;堆棧指針指向下一個待壓入數據的空位置,稱為空堆棧??梢越M合出四種類型的堆棧方式:滿遞增:堆棧向上增長,堆棧指針指向內含有效數據項的最高地址。指令如LDMFA、STMFA等;空遞增:堆棧向上增長,堆棧指針指向堆棧上的第一個空位置。指令如LDMEA、STMEA等;滿遞減:堆棧向下增長,堆棧指針指向內含有效數據項的最低地址。指令如LDMFD、STMFD等;空遞減:堆棧向下增長,堆棧指針向堆棧下的第一個空位置。指令如LDMED、STMED等。第七章ARM9微處理器指令系統塊拷貝尋址多寄存器傳送指令用于將一塊數據從存儲器的某一位置拷貝到另一位置。如:STMIA R0!,{R1-R7} ;將R1~R7的數據保存到存儲器中。
;存儲指針R0在保存第一個值之后增加,
;增長方向為向上增長。STMDA R0!,{R1-R7} ;將R1~R7的數據保存到存儲器中。
;存儲指針R0在保存第一個值之前增加,
;增長方向為向下增長。第七章ARM9微處理器指令系統相對尋址相對尋址是基址尋址的一種變通。由程序計數器PC提供基準地址,指令中的地址碼字段作為偏移量,兩者相加后得到的地址即為操作數的有效地址。相對尋址指令舉例如下:
BL SUBR1 ;調用到SUBR1子程序
BEQ LOOP ;條件跳轉到LOOP標號處
...LOOP MOV R6,#1 ...SUBR1 ...第七章ARM9微處理器指令系統ARM指令集基本指令格式:ARM是三地址指令格式,指令的基本格式如下:其中<>號內的項是必須的,{}號內的項是可選的。各項的說明如下:opcode:指令助記符; cond:執(zhí)行條件;S:是否影響CPSR寄存器的值;Rd:目標寄存器;Rn:第1個操作數的寄存器;operand2:第2個操作數;指令語法目標寄存器(Rd)源寄存器1(Rn)源寄存器2(Rm)ADDr3,r1,r2r3r1r2<opcode>{<cond>}{S}<Rd>,<Rn>{,<operand2>}
第七章ARM9微處理器指令系統第2個操作數<opcode>{<cond>}{S}<Rd>,<Rn>{,<operand2>}
靈活的使用第2個操作數“operand2”能夠提高代碼效率。它有如下的形式:#immed_8r——常數表達式Rm——寄存器方式Rm,shift——寄存器移位方式AND R1,R2,#0x0F;常數表達式SUB R1,R1,R2;寄存器方式ADD R1,R1,R1,LSL#3;R1=R1+R1<<3SUB R1,R1,R2,LSRR3;R1=R1-R2>>R3第七章ARM9微處理器指令系統條件碼<opcode>{<cond>}{S}<Rd>,<Rn>{,<operand2>}使用條件碼“cond”可以實現高效的邏輯操作(節(jié)省跳轉和條件語句),提高代碼效率。所有的ARM指令都可以條件執(zhí)行,而Thumb指令只有B(跳轉)指令具有條件執(zhí)行功能。如果指令不標明條件代碼,將默認為無條件(AL)執(zhí)行。對應的匯編代碼:CMP R0,R1 ;R0(a)與R1(b)比較ADDHI R0,R0,#1;若R0>R1,則R0=R0+1ADDLS R1,R1,#1;若R0≤1,則R1=R1+1C代碼:If(a>b)a++;Elseb++;參見P182表7-1第七章ARM9微處理器指令系統存儲器訪問指令
ARM處理器是典型的RISC處理器,對存儲器的訪問只能使用加載和存儲指令實現。ARM處理器是馮?諾依曼存儲結構,RAM存儲空間及I/O映射空間統一編址,除對RAM操作以外,對外圍IO、程序數據的訪問均要通過加載/存儲指令進行。存儲器訪問指令分為單寄存器操作指令和多寄存器操作指令。第七章ARM9微處理器指令系統助記符說明操作條件碼位置LDRRd,addressing加載字數據Rd←[addressing],addressing索引LDR{cond}LDRBRd,addressing加載無符號字節(jié)數據Rd←[addressing],addressing索引LDR{cond}BLDRTRd,addressing以用戶模式加載字數據Rd←[addressing],addressing索引LDR{cond}TLDRBTRd,addressing以用戶模式加載無符號字節(jié)數據Rd←[addressing],addressing索引LDR{cond}BTLDRHRd,addressing加載無符號半字數據Rd←[addressing],addressing索引LDR{cond}HLDRSBRd,addressing加載有符號字節(jié)數據Rd←[addressing],addressing索引LDR{cond}SBLDRSHRd,addressing加載有符號半字數據Rd←[addressing],addressing索引LDR{cond}SH
單寄存器存取操作指令第七章ARM9微處理器指令系統助記符說明操作條件碼位置STRRd,addressing存儲字數據[addressing]←Rd,addressing索引STR{cond}STRBRd,addressing存儲字節(jié)數據[addressing]←Rd,addressing索引STR{cond}BSTRTRd,addressing以用戶模式存儲字數據[addressing]←Rd,
addressing索引STR{cond}TSTRBTRd,addressing以用戶模式存儲字節(jié)數據[addressing]←Rd,addressing索引STR{cond}BTSTRHRd,addressing存儲半字數據[addressing]←Rd,addressing索引STR{cond}H單寄存器存取操作指令第七章ARM9微處理器指令系統例:LDR R2,[R5] ;將R5指向地址的字數據存入R2LDRB R3,[R2],#-1 ;將R2指向地址的字節(jié)數據存入R3,R2=R2-1LDRSBR1,[R0,R3] ;將R0+R3地址上的字節(jié)數據存入R1,LDRHR6,[R2],#2 ;將R2指向地址的半字數據存入R6,高16位用0擴展
;讀出后,R2=R2+2STRHR1,[R0,#2]! ;將R1的半字數據保存到R0+2地址,
;只修改低2字節(jié)數據,然后R0=R0+2第七章ARM9微處理器指令系統助記符說明操作條件碼位置LDM{mode}Rn{!},reglist
多寄存器加載reglist←[Rn...],Rn回寫等LDM{cond}{mode}STM{mode}Rn{!},reglist
多寄存器存儲[Rn...]←reglist,Rn回寫等STM{cond}{mode}多寄存器存取操作指令第七章ARM9微處理器指令系統ARM數據處理指令數據處理指令大致可分為3類:數據傳送指令;算術邏輯運算指令;比較指令。數據處理指令只能對寄存器的內容進行操作,而不能對內存中的數據進行操作。所有ARM數據處理指令均可選擇使用S后綴,以使指令影響狀態(tài)標志。第七章ARM9微處理器指令系統算術運算助記符說明操作條件碼位置ADDRd,Rn,operand2加法運算指令Rd←Rn+operand2ADD{cond}{S}SUBRd,Rn,operand2減法運算指令Rd←Rn-operand2SUB{cond}{S}RSBRd,Rn,operand2逆向減法指令Rd←operand2-RnRSB{cond}{S}ADCRd,Rn,operand2帶進位加法Rd←Rn+operand2+CarryADC{cond}{S}SBCRd,Rn,operand2帶進位減法指令Rd←Rn-operand2-(NOT)CarrySBC{cond}{S}RSCRd,Rn,operand2帶進位逆向減法指令Rd←operand2-Rn-(NOT)CarryRSC{cond}{S}第七章ARM9微處理器指令系統例:
ADDSR1,R1,#1020 ;R1=R1+1020,并影響標志位
ADDR1,R1,R2,LSL#2 ;R1=R1+R2<<2SUBS R0,R0,#240 ;R0=R0-240,并影響標志位
SUBS R2,R1,R2 ;R2=R1-R2,并影響標志位
RSBR3,R1,#0xFF00;R3=0xFF00-R1RSBSR1,R2,R2,LSL#2;R1=(R2<<2)-R2=R2×3影響標志位第七章ARM9微處理器指令系統邏輯運算指令助記符說明操作條件碼位置ANDRd,Rn,operand2邏輯與操作指令Rd←Rn&operand2AND{cond}{S}ORRRd,Rn,operand2邏輯或操作指令Rd←Rn|operand2ORR{cond}{S}EORRd,Rn,operand2邏輯異或操作指令Rd←Rn^operand2EOR{cond}{S}BICRd,Rn,operand2位清除指令Rd←Rn&(~operand2)BIC{cond}{S}第七章ARM9微處理器指令系統例:
ANDSR0,R0,#0x01 ;R0=R0&0x01,取出最低位數據
ANDEQR2,R1,R3 ;R2=R1&R3ORRR0,R0,#0x0F ;將R0的低4位置1EOR R1,R1,#0x0F ;將R1的低4位取反
EORR2,R1,R0 ;R2=R1^R0EORS R0,R5,#0x01 ;將R5和0x01進行邏輯異或,
;結果保存到R0,并影響標志位
BICR1,R1,#0x0F ;將R1的低4位清零,其它位不變
BIC R1,R2,R3 ;將R3的反碼和R2相邏輯“與”,
;結果保存到R1中第七章ARM9微處理器指令系統助記符說明操作條件碼位置CMPRn,operand2比較指令標志N、Z、C、V←Rn-operand2CMP{cond}CMNRn,operand2負數比較指令標志N、Z、C、V←Rn+operand2CMN{cond}TSTRn,operand2位測試指令標志N、Z、C、V←Rn&operand2TST{cond}TEQRn,operand2相等測試指令標志N、Z、C、V←Rn^operand2TEQ{cond}比較指令第七章ARM9微處理器指令系統例:
CMP R1,#10 ;R1與10比較,設置相關標志位
CMN R0,#1 ;R0+1,判斷R0是否為1的補碼
;如果是,則設置Z標志位
TST R0,#0x01 ;判斷R0的最低位是否為0TST R1,#0x0F ;判斷R1的低4位是否為0TEQ R0,R1 ;比較R0與R1是否相等(不影響V位和C位)第七章ARM9微處理器指令系統第七章ARM9微處理器指令系統ARM指令集——乘法指令
ARM7TDMI具有三種乘法指令,分別為:
32×32位乘法指令;
32×32位乘加指令;
32×32位結果為64位的乘/乘加指令。第七章ARM9微處理器指令系統助記符說明操作條件碼位置MULRd,Rm,Rs32位乘法指令Rd←Rm*Rs(Rd≠Rm)MUL{cond}{S}MLARd,Rm,Rs,Rn32位乘加指令Rd←Rm*Rs+Rn(Rd≠Rm)MLA{cond}{S}UMULLRdLo,RdHi,Rm,Rs64位無符號乘法指令(RdLo,RdHi)←Rm*Rs
UMULL{cond}{S}UMLALRdLo,RdHi,Rm,Rs64位無符號乘加指令(RdLo,RdHi)←Rm*Rs+(RdLo,RdHi)UMLAL{cond}{S}SMULLRdLo,RdHi,Rm,Rs64位有符號乘法指令(RdLo,RdHi)←Rm*RsSMULL{cond}{S}SMLALRdLo,RdHi,Rm,Rs64位有符號乘加指令(RdLo,RdHi)←Rm*Rs+(RdLo,RdHi)SMLAL{cond}{S}第七章ARM9微處理器指令系統ARM指令集——跳轉指令在ARM中有兩種方式可以實現程序的跳轉,使用分支指令直接跳轉,直接向PC寄存器賦值實現跳轉。分支指令有以下三種:分支指令B;帶返回的分支指令BL;帶狀態(tài)切換的分支指令BX。第七章ARM9微處理器指令系統助記符說明操作條件碼位置Blabel分支指令PC←labelB{cond}BLlabel帶返回的分支指令LR←PC-4,PC←labelBL{cond}BXRm帶狀態(tài)切換的分支指令PC←Rm,切換處理器狀態(tài)BX{cond}跳轉指令第七章ARM9微處理器指令系統分支指令——B指令:該指令跳轉范圍限制在當前指令的±32M字節(jié)地址內(ARM指令為字對齊,最低2位地址固定為0)。指令格式如下:B{cond}Label例:
BWAITA ;跳轉到WAITA標號處
B 0x1234 ;跳轉到絕對地址0x1234處第七章ARM9微處理器指令系統帶返回的分支指令——BL指令:適用于子程序調用,使用該指令后,下一條指令的地址被拷貝到R14(即LR)連接寄存器中,然后跳轉到指定地址運行程序。跳轉范圍限制在當前指令的±32M字節(jié)地址內。指令格式如下:BL{cond}Label例(調用子程序):
BL Label 第七章ARM9微處理器指令系統帶狀態(tài)切換的分支指令——BX指令:該指令可以根據跳轉地址(Rm)的最低位來切換處理器狀態(tài)。其跳轉范圍限制在當前指令的±32M字節(jié)地址內(ARM指令為字對齊,最低2位地址固定為0)。Rm的位[0]不用作地址的一部分。若Rm的位[0]為1,則指令將CPSR中的標志T置位,且將目標地址的代碼解釋為Thumb代碼;若Rm的位[0]為0,則Rm的位[1]就不能為1。指令格式如下:
BX{cond}Rm例:
ADRLR0,ThumbFun+1;將Thumb程序的入口地址加1存入R0BXR0 ;跳轉到R0指定的地址,
;并根據R0的最低位來切換處理器狀態(tài)第七章ARM9微處理器指令系統ARM指令集——雜項指令ARM指令集中有三條指令作為雜項指令。助記符說明操作條件碼位置SWIimmed_24軟中斷指令產生軟中斷,處理器進入管理模式SWI{cond}MRSRd,psr讀狀態(tài)寄存器指令Rd←psr,psr為CPSR或SPSRMRS{cond}MSRpsr_fields,Rd/#immed_8r寫狀態(tài)寄存器指令psr_fields←Rd/#immed_8r,psr為CPSR或SPSRMSR{cond}第七章ARM9微處理器指令系統
SWI指令用于產生SWI異常,使得CPU模式變換到管理模式,并且將CPSR保存到管理模式的SPSR中,然后程序跳轉到SWI異常入口。不影響條件碼標志。軟中斷指令MOVR0,#34 ;設置子功能號為34SWI12 ;調用12號軟中斷指令中的24位立即數指定了用戶請求的服務類型,參數通過通用寄存器傳遞。第七章ARM9微處理器指令系統在ARM處理器中,只有MRS指令可以對狀態(tài)寄存器CPSR和SPSR進行讀操作。通過讀CPSR可以了解當前處理器的工作狀態(tài)。讀SPSR寄存器可以了解到進入異常前的處理器狀態(tài)。例:
MRSR1,CPSR ;將CPSR狀態(tài)寄存器讀取,保存到R1中
MRSR2,SPSR ;將SPSR狀態(tài)寄存器讀取,保存到R2中狀態(tài)寄存器讀指令第七章ARM9微處理器指令系統在ARM處理器中,只有MSR指令可以對狀態(tài)寄存器CPSR和SPSR進行寫操作。與MRS配合使用,可以實現對CPSR或SPSR寄存器的讀-修改-寫操作,可以切換處理器模式、或者允許/禁止IRQ/FIQ中斷等。狀態(tài)寄存器寫指令例:子程序:使能IRQ中斷
MRSR0,CPSRBICR0,R0,#0x80MSRCPSR_c,R0MOVPC,LR1.將CPSR寄存器內容讀出到R0;2.修改對應于CPSR中的I控制位;3.將修改后的值寫回CPSR寄存器的對應控制域;4.返回上一層函數;第七章ARM9微處理器指令系統ARM偽指令
ARM偽指令不屬于ARM指令集中的指令,是為了編程方便而定義的。偽指令可以像其它ARM指令一樣使用,但在編譯時這些指令將被等效的一條或多條ARM指令所代替。ARM偽指令有四條,分別為ADR偽指令、ADRL偽指令、LDR偽指令、NOP偽指令。第七章ARM9微處理器指令系統(1)ADR—小范圍的地址讀取偽指令:指令格式:
ADR{cond}register,expr
其中:register為加載的目標寄存器。
expr為地址表達式。當地址值是非字對齊時,取值范圍為-255~255字節(jié);當地址值是字對齊時,取值范圍為-1020~1020字節(jié)。對于基于PC相對偏移的地址值時,給定范圍是相對當前指令地址后兩個字處(因為ARM9TDMI的流水線特性)。
指令功能:ADR指令將基于PC相對偏移的地址值或基于寄存器相對偏移的地址值讀取到寄存器中。在匯編編譯源程序時,ADR偽指令被編譯器替換成一條合適的指令。通常,編譯器用一條ADD指令或SUB指令來實現該ADR偽指令的功能,若不能用一條指令實現,則產生錯誤。第七章ARM9微處理器指令系統可以用ADR加載地址,實現查表,如應用示例:
第七章ARM9微處理器指令系統(2)ADRL—中等范圍的地址讀取偽指令:指令格式:
ADRL{cond}register,expr
其中:register為加載的目標寄存器。
expr為地址表達式。當地址值是非字對齊時,取值范圍為-64~64KB;當地址值是字對齊時,取值范圍為-256~256KB。對于基于PC相對偏移的地址值時,給定范圍是相對當前指令地址后兩個字處(因為ARM9TDMI的流水線特性)。
指令功能:ADR指令將基于PC相對偏移的地址值或基于寄存器相對偏移的地址值讀取到寄存器中,比ADR偽指令讀取更大的地址范圍。在匯編編譯源程序時,ADRL偽指令被編譯器替換成兩條合適的指令。若不能用兩條指令實現ADRL偽指令功能,則產生錯誤,編譯失敗。第七章ARM9微處理器指令系統應用示例:
可以用ADRL加載地址,實現程序跳轉。第七章ARM9微處理器指令系統(3)LDR—大范圍的地址讀取偽指令:指令格式:
LDR{cond}register,=expr/label-expr
其中:register為加載的目標寄存器。
expr為32位立即數。\label-expr是基于PC的地址表達式或外部表達式。指令功能:LDR偽指令用于加載32位的立即數或一個地址值到指定寄存器。在匯編編譯源程序時,LDR偽指令被編譯器替換成一條合適的指令。若加載的常數未超過MOV或MVN的范圍,則使用MOV或MVN指令代替該LDR偽指令,否則匯編器將常量放入文字池,并使用一條程序相對偏移的LDR加載指令從文字池讀出常量。第七章ARM9微處理器指令系統應用示例:偽指令LDR常用于加載芯片外圍功能部件的寄存器(32位立即數),以實現各種控制操作。從PC到文字池的偏移量必須小于4KB。與ARM指令的LDR相比,偽指令的LDR的參數有“=”號。第七章ARM9微處理器指令系統(4)NOP—空操作偽指令:指令格式:
NOP指令功能:NOP偽指令在匯編時會被代替成ARM中的空操作,比如可能為“MOVR0,R0”指令等。NOP可用于延時操作,第七章ARM9微處理器指令系統ARM匯編語言結構由于高級編程語言隱藏了CPU執(zhí)行指令的許多細節(jié),因此在只關心系統所具有功能的系統中,采用高級語言編寫程序更為合適。但是,CPU執(zhí)行指令的細節(jié)差異會反應在系統的非功能特性上,例如系統程序的規(guī)模和運行速度。因此,掌握匯編語言程序設計對于嵌入式系統的設計者來說是必要的。第七章ARM9微處理器指令系統ARM匯編程序中每一行的通用格式為:{標號}{指令|指示符|偽指令}{;注解}。在ARM匯編語言源程序中,除了標號和注釋外,指令、偽指令和指示符都必須有前導空格,而不能頂格書寫。如果每一行的代碼太長,可以使用字符“\”將其分行書寫,并允許有空行。指令助記符、指示符和寄存器名既可以用大寫字母,也可以用小寫字母,但不能混用。注釋從“;”開始,到該行結束為止。標號代表一個地址,段內標號的地址值在匯編時確定,段外標號的地址值在鏈接時確定。第七章嵌入式操作系統基礎嵌入式操作系統EOS(EmbeddedOperatingSystem)是一種支持嵌入式系統應用的操作系統軟件,是嵌入式系統的重要組成部分。負責嵌入式系統的全部軟、硬件資源的分配、調度、控制、協調;它必須體現其所在系統的特征,能夠通過加載/卸載某些模塊來達到系統所要求的功能。嵌入式系統是使用特定嵌入式軟件完成特定功能的計算機系統,嵌入式操作系統作為軟件的組成部分,為嵌入式軟件的開發(fā)和運行提供良好的環(huán)境。嵌入式系統可以是基于ROM或者是磁盤的系統,類似PC,但它并不能替代通用計算機系統。嵌入式操作系統基礎第七章嵌入式操作系統基礎具有通用操作系統的功能:EOS負責嵌入系統的全部軟、硬件資源的分配、調度,控制、協調并發(fā)活動;能夠把硬件虛擬化:簡化開發(fā)人員的工作它必須體現其所在系統的特征,能夠通過裝卸某些模塊來達到系統所要求的功能。能夠提供庫函數、驅動程序、工具集以及應用程序嵌入式操作系統的功能第七章嵌入式操作系統基礎可定制性一般需提供可添加或可裁剪的內核及其他功能,讓用戶按需配置。如調度算法、存儲管理、設備驅動程序??梢浦残詰撃軌蛑С侄喾N國際主流微處理器等硬件平臺,給用戶硬件選擇的靈活性。實時性大多數嵌入式系統工作在實時性要求很高的環(huán)境中,要求嵌入式操作系統必須將實時性作為一個重要的指標來考慮。低資源占有性在保證其功能的前提下,盡可能減少系統對資源的占用。嵌入式操作系統特點第七章嵌入式操作系統基礎使用嵌入式操作系統的優(yōu)缺點優(yōu)點使程序的設計和擴展變得容易,大大提高了開發(fā)效率。充分發(fā)揮32位CPU多任務的潛力,實現多任務設計,能夠充分利用硬件資源和實現資源共享。實時性和健壯性能夠得到更好的保證。缺點嵌入式操作系統增加ROM/RAM等額外開銷,5~10%的CPU額外負荷。第七章嵌入式操作系統基礎基于或與Windows兼容:WindowCE、嵌入式Linux、EPOC工業(yè)與通信(傳統)類:VxWorks、pSOS、QNX、Neculeus、VRTX單片機類:iRMX、CMX、μC/OS面向Internet類:PalmOS、Visor、Hopen、PPSM嵌入式操作系統分類第七章嵌入式操作系統基礎常見嵌入式操作系統簡介
C/OS—Micro-ControllerOperatingSystem(微控制器操作系統)。
C/OS簡介美國人JeanLabrosse1992年完成,已應用于數百種產品中。應用面覆蓋了諸多領域,如照相機、醫(yī)療器械、音響設備、發(fā)動機控制、高速公路電話系統、自動提款機等1998年
C/OS-II,目前的版本
C/OS-IIV2.722000年,得到美國航空管理局(FAA)的認證,可以用于飛行器中是一個源碼公開、可移植、可裁減、占用資源少、搶先式的實時多任務操作系統。其絕大部分源碼采用ANSIC寫的,移植性好。高校教學可免費使用。網站www.ucos-II.com()第七章嵌入式操作系統基礎嚴格地說,C/OS-Ⅱ只是一個實時操作系統內核,它僅僅包含了任務調度、任務管理、時間管理、內存管理和任務間通信和同步等基本功能,沒有提供輸入輸出管理、文件管理、網絡等額外的服務。但由于C/OS-Ⅱ良好的可擴展性和源碼開放,這些功能完全可以由用戶根據需要自己實現。
C/OS-Ⅱ的目標是實現一個基于優(yōu)先級調度的搶占式實時內核,并在這個內核之上提供最基本的系統服務,例如信號量、郵箱、消息隊列、內存管理、中斷管理等。其應用領域包括便攜式電話、自動支付終端、交換機等。
C/OS-Ⅱ獲得廣泛使用的重要原因,就是它的可移植性。C/OS-Ⅱ的大部分代碼都是用C語言寫成的,只有與處理器的硬件相關的一部分代碼用匯編語言編寫。目前C/OS-Ⅱ支持ARM、PowerPC、MIPS、68k/ColdFire和x86等多種體系結構。第七章嵌入式操作系統基礎WindowsCE:一種針對小容量、移動式、智能化、32位、連接設備的模塊化實時嵌入式操作系統(縮減的Win95)。針對掌上設備、無線設備的動態(tài)應用程序和服務提供了一種功能豐富的操作系統平臺,屬于軟實時操作系統,由于其Windows背景,界面比較統一認可??梢允褂么蠖鄶礧indows開發(fā)工具(如VB,VC等),大多數Windows應用程序經過移植后就可以運行在WinCE平臺上。操作系統的基本內核需要至少200K的ROM。WindowsCE第七章嵌入式操作系統基礎從WindowsCE開始,歷經WinCE2.0、3.0,新一代的WinCE定名為“WindowsCE.NET”(目前最新版本為5.0)。WinCE主要應用于PDA,以及智能電話(smartphone)等多媒體網絡產品。微軟于2004年推出了代號為“Macallan”的新版WinCE系列的操作系統。WindowsCE在.NETCompactFramework下的應用程序與硬件互相獨立無關。而核心本身是一個支持多線程以及多CPU的操作系統。在工作調度方面,為了提高系統的實時性,主要設置了256級的工作優(yōu)先級以及可嵌入式中斷處理。WindowsCE系列在通信、網絡以及多媒體方面極具優(yōu)勢。其提供的協議軟件非常完整,如基本的PPP、TCP/IP、IrDA、ARP、ICMP、WirelessTunableTCP/IP、PPTP、SNMP、HTTP,等等幾乎應有盡有。在多媒體方面,目前在PC上執(zhí)行的WindowsMedia和DirectX都已經應用到WindowsCE3.0以上的平臺,其主要功能就是對圖形、影音進行編碼譯碼,以及對多媒體信號進行處理。第七章嵌入式操作系統基礎嵌入式LinuxLinux是源碼開放的,不存在黑箱技術。Linux內核小,功能強大,運行穩(wěn)定,系統健壯,易于定制裁減,價格上極具優(yōu)勢Linux支持CPU較多開發(fā)工具gccgdb得到IBM、SUN等的支持,逐漸形成了可與WindowsCE等抗衡的局面。目前正在開發(fā)的嵌入式系統中,49%的項目選擇Linux作為嵌入式操作系統。第七章嵌入式操作系統基礎Linux是目前最為流行的一款開放源代碼的操作系統,經過改造后的嵌入式Linux具有適合于嵌入式系統的特點。
內核精簡,高性能、穩(wěn)定
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度海洋資源開發(fā)與保護合作協議5篇
- 設計院在醫(yī)療領域的科技創(chuàng)新實踐
- 2025版無產權儲藏室買賣及售后服務保障協議3篇
- 2025年度個人設備抵押貸款業(yè)務合同
- 未來教育趨勢下的學生心理素質培養(yǎng)方向
- 2025年度個人網絡借貸平臺合作協議書4篇
- 二零二五年度車牌租賃代理服務合作協議4篇
- 二零二五年度車位使用權及物業(yè)管理服務轉讓協議3篇
- 二零二五年度蟲草市場推廣與銷售支持合同2篇
- 2025年度文化旅游資源承包轉讓合同范本3篇
- 8.3+區(qū)域性國際組織+課件高中政治統編版選擇性必修一當代國際政治與經濟
- 2025年國網陜西省電力限公司高校畢業(yè)生招聘1100人(第二批)高頻重點提升(共500題)附帶答案詳解
- 藥店員工培訓
- 環(huán)衛(wèi)工節(jié)前安全培訓
- 2025蛇年春節(jié)放假通知假期溫馨提示模板
- 2024工貿企業(yè)重大事故隱患判定標準解讀
- 《認罪認罰案件被追訴人反悔應對機制研究》
- 《工程地質》試題及答案四
- 氦離子化色譜法測試電氣設備油中溶解氣體的技術規(guī)范
- 內燃機車鉗工(中級)職業(yè)鑒定理論考試題及答案
- 中國聯合網絡通信有限公司招聘筆試題庫2024
評論
0/150
提交評論