第二講嵌入式操作系統(tǒng)軟件成分_第1頁
第二講嵌入式操作系統(tǒng)軟件成分_第2頁
第二講嵌入式操作系統(tǒng)軟件成分_第3頁
第二講嵌入式操作系統(tǒng)軟件成分_第4頁
第二講嵌入式操作系統(tǒng)軟件成分_第5頁
已閱讀5頁,還剩93頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第二講嵌入式操作系統(tǒng)軟件成分第1頁,課件共98頁,創(chuàng)作于2023年2月1、ARM編程模型ARM體系結(jié)構(gòu)ARM編程模型ARM指令集2、嵌入式操作系統(tǒng)實時操作系統(tǒng)微內(nèi)核和一體化內(nèi)核商用嵌入式操作系統(tǒng)嵌入式系統(tǒng)的軟件成分第2頁,課件共98頁,創(chuàng)作于2023年2月本節(jié)提要132546ARM體系結(jié)構(gòu)ARM編程模型微內(nèi)核和一體化內(nèi)核ARM指令集實時操作系統(tǒng)商用嵌入式操作系統(tǒng)第3頁,課件共98頁,創(chuàng)作于2023年2月ARM體系結(jié)構(gòu)版本

-1Version1(obsolete)基本數(shù)據(jù)處理字節(jié),字以及多字load/store軟件中斷26bit地址總線Version2(obsolete)Multiply&Multiply-accumulate支持協(xié)處理器支持線程同步26bit地址總線第4頁,課件共98頁,創(chuàng)作于2023年2月ARM體系結(jié)構(gòu)版本

-2V3版本推出32位尋址能力,結(jié)構(gòu)擴展變化為T—16位壓縮指令集M—增強型乘法器,產(chǎn)生全64位結(jié)果(32X3264or32X32+6464)V4版本增加了半字load和store指令V5版本改進了ARM和Thumb之間的交互,結(jié)構(gòu)擴展變化為:E---增強型DSP指令集,包括全部算法操作和16位乘法操作J----支持新的JAVA,提供字節(jié)代碼執(zhí)行的硬件和優(yōu)化軟件加速功能第5頁,課件共98頁,創(chuàng)作于2023年2月ARM體系結(jié)構(gòu)更新第6頁,課件共98頁,創(chuàng)作于2023年2月體系結(jié)構(gòu)變化

–1*THUMB指令集

(‘T’)THUMB指令集:32位ARM指令集的子集,按16位指令重新編碼代碼尺寸小

(upto40%compression)簡化設計第7頁,課件共98頁,創(chuàng)作于2023年2月體系結(jié)構(gòu)變化

-2長乘法指令

(‘M’)32x32=64bit.提供全64位結(jié)果增強DSP指令集

(‘E’)可附加在ARM中的DSP指令64bit轉(zhuǎn)換在v5版本中第一次推出處理器內(nèi)核的變化D:在片調(diào)試.處理器可響應調(diào)試暫停請求I:EmbeddedICE.支持片上斷點調(diào)試第8頁,課件共98頁,創(chuàng)作于2023年2月體系結(jié)構(gòu)變化

-3ARMDSP指令集對于音頻DSP應用提供高達70%的處理速度Jazelle提供比基于軟件的JAVA虛擬機(JVM)更高的性能與非JAVA加速核相比,提供8倍JAVA加速性能和降低80%的功耗139字節(jié)碼直接在硬件上執(zhí)行,88個字節(jié)碼在軟件上執(zhí)行第9頁,課件共98頁,創(chuàng)作于2023年2月本節(jié)提要132546ARM體系結(jié)構(gòu)ARM編程模型微內(nèi)核和一體化內(nèi)核ARM指令集實時操作系統(tǒng)商用嵌入式操作系統(tǒng)第10頁,課件共98頁,創(chuàng)作于2023年2月ARM7的指令流水線取指譯碼執(zhí)行從存儲器取指指令所用的寄存器譯碼從從寄存器組中讀寄存器移位和ALU操作把寄存器寫回到存儲器組每條指令可以分3個階段執(zhí)行第11頁,課件共98頁,創(chuàng)作于2023年2月ARM單周期指令3段流水線操作*取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行t指令123注:程序計數(shù)器PC指向正在取指的指令而不是正在執(zhí)行的指令第12頁,課件共98頁,創(chuàng)作于2023年2月存儲器模式*大端模式最高位字節(jié)保存在最低位地址字由最低位字節(jié)的字節(jié)地址尋址小端模式最低位字節(jié)保存在最低位地址字由最低位字節(jié)的字節(jié)地址尋址3124

2316

158

70字地址11109887654432100低地址高地址3124

2316

158

70字地址89101184567401230低地址高地址第13頁,課件共98頁,創(chuàng)作于2023年2月操作模式ARM處理器通常有7種操作模式:用戶模式(usr)-正常的程序執(zhí)行模式快速中斷模式(fiq)

-支持高速數(shù)據(jù)傳輸或通道處理中斷模式(irq)

-用于通用中斷處理管理員模式(svc)

-操作系統(tǒng)的保護模式.中止模式(abt)

-支持虛擬內(nèi)存和/或內(nèi)存保護系統(tǒng)模式(sys)

-支持操作系統(tǒng)的特殊用戶模式(運行操作系統(tǒng)任務)未定義模式(und)

-支持硬件協(xié)處理器的軟件仿真除了用戶模式外,其他模式均可視為特權(quán)模式第14頁,課件共98頁,創(chuàng)作于2023年2月寄存器

-137寄存器31個32位寄存器,包括程序計數(shù)器PC6個狀態(tài)寄存器15通用寄存器

(R0toR14),以及1或者2個狀態(tài)寄存器和程序計數(shù)器在任何時候都中可見的可見的寄存器取決于處理器的模式其它寄存器(thebankedregisters)的狀態(tài)在支持IRQ,FIQ,管理員,中止和未定義模式處理時被切換第15頁,課件共98頁,創(chuàng)作于2023年2月寄存器

-2R0到

R15可以直接訪問R0到

R14是通用寄存器R13:堆棧指針

(sp)(通常)每種處理器模式都有單獨的堆棧,狀態(tài)切換時sp的值被自動保存。R14:鏈接寄存器(lr)R15包含程序計數(shù)器

(PC)CPSR–當前程序狀態(tài)寄存器,包括代碼標志狀態(tài)和當前模式位5個SPSRs--(程序狀態(tài)保存寄存器)當異常發(fā)生時保存CPSR狀態(tài)第16頁,課件共98頁,創(chuàng)作于2023年2月寄存器組織

–3*注:表明用戶或系統(tǒng)模式使用的正常寄存器已經(jīng)被異常模式指定的另一個寄存器取代第17頁,課件共98頁,創(chuàng)作于2023年2月程序狀態(tài)寄存器

-1ARM核包含當前程序狀態(tài)寄存器

(CPSR),加上5個程序狀態(tài)保存寄存器SPSR,當異常發(fā)生時,用于保存CPSR的狀態(tài)這些寄存器的功能是:包括關(guān)于最近執(zhí)行的ALU操作的信息控制中斷的使能和禁止設置處理器操作模式第18頁,課件共98頁,創(chuàng)作于2023年2月程序狀態(tài)寄存器

-2N,Z,CandV條件碼標志可以在處理器中作為數(shù)學和邏輯操作改變可以被所有的指令測試,以決定指令是否被執(zhí)行N:Negative.Z:Zero.C:Carry.V:OverflowIandF位是中斷禁止位M0,M1,M2,M3andM4位是模式位第19頁,課件共98頁,創(chuàng)作于2023年2月程序狀態(tài)寄存器PSR的模式位第20頁,課件共98頁,創(chuàng)作于2023年2月異常

-1異?!獌?nèi)部或外部中斷源產(chǎn)生并引起處理器處理一個事件,如外部中斷或試圖執(zhí)行未定義指令都會引起異常。處理異常之前必須保留處理器的狀態(tài)異常類型FIQIRQ(InterruptReQuest)未定義指令預取中止數(shù)據(jù)中止復位軟件中斷Softwareinterrupt通過軟件中斷產(chǎn)生進行管理員模式中獲得通常要求特殊的管理功能,如操作系統(tǒng)支持第21頁,課件共98頁,創(chuàng)作于2023年2月異常

-2未定義的指令陷井當ARM接受到一條不能處理的指令,ARM把這條指令提供給任何一個協(xié)處理器執(zhí)行如果協(xié)處理器可以執(zhí)行這條指令但此時協(xié)處理器忙,ARM將等待直到協(xié)處理器準備好或中斷發(fā)生如果沒有協(xié)處理器處理這條指令,那么ARM將處理未定義的指令陷井異常優(yōu)先級(1)Reset(highestpriority)(2)Dataabort(3)FIQ(4)IRQ(5)Prefetchabort(6)未定義指令,Softwareinterrupt(最低優(yōu)先級)第22頁,課件共98頁,創(chuàng)作于2023年2月異常

-3只要產(chǎn)生異常就會導致正常的程序流程被臨時停止,例如外圍中斷。在異常被處理前,當前的處理器狀態(tài)必須被保存,以便處理程序完成后,最后的程序可以被恢復。第23頁,課件共98頁,創(chuàng)作于2023年2月異常向量第24頁,課件共98頁,創(chuàng)作于2023年2月進入異常的操作在相應的鏈接寄存器LR(r14)中保存下一條指令的地址將CPSR復制到相應的SPSR中強制使CPSR模式位置成對應異常類型的值強制使程序計數(shù)器指向相應異常向量,取下一條指令第25頁,課件共98頁,創(chuàng)作于2023年2月例子:用戶模式到

FIQ模式*spsr_irqcpsrr7r4r5r2r1r0r3r6r15(pc)r14_irqr13_irqr12r10r11r9r8用戶模式CPSR復制到

IRQ模式

SPSRcpsrr15(pc)r14(lr)r13(sp)r12r10r11r9r8r7r4r5r2r1r0r3r6返回一個從用戶模式計算的地址,PC值存儲在IRQ模式RegistersinuseRegistersinuse異常用戶模式IRQ模式第26頁,課件共98頁,創(chuàng)作于2023年2月退出異常的操作將LR寄存器中的值減去相應的偏移量送到PC中Linux:SWI、UND不變 IRQ、FIQ、取址異常減4 數(shù)據(jù)異常減8將SPSR復制回

CPSR清除禁止中斷標志,如果它被設置成禁止第27頁,課件共98頁,創(chuàng)作于2023年2月進入/退出異常概述第28頁,課件共98頁,創(chuàng)作于2023年2月本節(jié)提要132546ARM體系結(jié)構(gòu)ARM編程模型微內(nèi)核和一體化內(nèi)核ARM指令集實時操作系統(tǒng)商用嵌入式操作系統(tǒng)第29頁,課件共98頁,創(chuàng)作于2023年2月指令長度指令集可以是以下任一種32bits長

(ARM狀態(tài))16bits長

(Thumb狀態(tài))ARM(v4)

支持3種數(shù)據(jù)類型字節(jié)

(8-bit)半字(16-bit)字(32-bit)字必須被排成4個字節(jié)邊界對齊,半字必須被排列成2個字節(jié)邊界對齊第30頁,課件共98頁,創(chuàng)作于2023年2月ARM指令集Load-store結(jié)構(gòu)*在通用寄存器中操作load/store–從存儲器中讀某個值,操作完后再將其放回存儲器中指令分類數(shù)據(jù)處理指令

–使用和改變寄存器的值數(shù)據(jù)傳送指令

–把存儲器的值拷貝到寄存器中

(load)or把寄存器中的值拷貝到存儲器中(store)控制流指令

分支分支和鏈接,保存返回的地址,以恢復最先的次序陷入系統(tǒng)代碼第31頁,課件共98頁,創(chuàng)作于2023年2月指令格式指令格式3地址指令格式在ARM狀態(tài)中使用2地址指令格式

在ARM和THUMB狀態(tài)下使用第32頁,課件共98頁,創(chuàng)作于2023年2月AARM指令集編碼*第33頁,課件共98頁,創(chuàng)作于2023年2月數(shù)據(jù)處理指令

-1數(shù)據(jù)處理指令的類別算術(shù)操作按位邏輯操作寄存器移位操作比較操作操作數(shù):32-bits寬;3種指定操作數(shù)的方式來自寄存器第二操作數(shù)可以是常數(shù)(立即數(shù))移位寄存器操作數(shù)結(jié)果:32-bits寬,放在寄存器中長乘法產(chǎn)生64位結(jié)果第34頁,課件共98頁,創(chuàng)作于2023年2月數(shù)據(jù)處理指令

–2*cond00operand2#opcodeSRnRd312827262524212019161512110目的寄存器第一操作寄存器設置操作碼算術(shù)/邏輯功能8-bit立即數(shù)12511870#rotRm11765430#shiftRm025118765430RsSh010Shimmediatealignmentimmediateshiftlengthshifttypesecondoperandregister移位寄存器長度第35頁,課件共98頁,創(chuàng)作于2023年2月數(shù)據(jù)處理指令

-3第36頁,課件共98頁,創(chuàng)作于2023年2月數(shù)據(jù)處理指令

-4ADDr0,r1,r2r0:=r1+r2ADCr0,r1,r2r0:=r1+r2+CSUBr0,r1,r2r0:=r1-r2SBCr0,r1,r2r0:=r1-r2+C-1RSBr0,r1,r2r0:=r2–r1RSCr0,r1,r2r0:=r2–r1+C-1算術(shù)操作按位邏輯操作ANDr0,r1,r2r0:=r1andr2ORRr0,r1,r2r0:=r1orr2EORr0,r1,r2r0:=r1xorr2BICr0,r1,r2r0:=r1and(not)r2寄存器移位MOVr0,r2r0:=r2MVNr0,r2r0:=notr2比較操作CMPr1,r2setcconr1-r2CMNr1,r2setcconr1+r2TSTr1,r2setcconr1andr2TEQr1,r2setcconr1xorr2第37頁,課件共98頁,創(chuàng)作于2023年2月數(shù)據(jù)處理指令

-5立即數(shù)操作:

立即數(shù)操作

=(0->255)x22n,0<=n<=12移位寄存器操作數(shù)第二個操作數(shù)在與第一個操作數(shù)合成之前,是服從于移位操作的.ADDr3,r2,r1,LSL#3r3:=r2+8xr1ADDr5,r5,r3,LSLr2r5:=r5+2r2xr3ADDr3,r3,#3r3:=r3+3ANDr8,r7,#&ffr8:=r7[7:0],&forhex第38頁,課件共98頁,創(chuàng)作于2023年2月數(shù)據(jù)處理指令

-6移位操作在任何數(shù)據(jù)處理指令中,第二個寄存器操作數(shù)可以有應用該操作數(shù)的移位操作.邏輯移位LSL:邏輯左移字的最小位空位清零LSR:邏輯右移字的最大位空位清零.第39頁,課件共98頁,創(chuàng)作于2023年2月數(shù)據(jù)處理指令

-7算術(shù)移位ASR:=LSRASL:算術(shù)左移循環(huán)移位:ROR,RRX第40頁,課件共98頁,創(chuàng)作于2023年2月條件碼標志任何數(shù)據(jù)處理指令都可以設置條件碼

(N,Z,V,andC)適用于除比較操作外的所有數(shù)據(jù)處理指令特殊的請求必須在匯編語言中實現(xiàn),這種請求是通過把”S”增加到選擇代碼中指定的算術(shù)操作設置所有的標志位(N,Z,C,andV)邏輯和移位操作設置NandZADDSr2,r2,r0;carryouttoC第41頁,課件共98頁,創(chuàng)作于2023年2月乘法指令集在寄存器產(chǎn)生32位值第42頁,課件共98頁,創(chuàng)作于2023年2月乘法例子

(乘法,乘法累加器)注意最低

32-bits置于結(jié)果寄存器中,其余被忽略

不支持第二立即操作數(shù)結(jié)果寄存器與源寄存器必須不同

if`S`bitissettheVispreservedand

theCisrenderedmeaninglessMULr4,r3,r2r4:=[r3xr2]<31:0>MLAr4,r3,r2,r1r4:=[r3xr2+r1]<31:0>第43頁,課件共98頁,創(chuàng)作于2023年2月數(shù)據(jù)傳送指令

-1單數(shù)據(jù)傳送

(LDR,STR)單字(32bit),半字(6bit)以及字節(jié)(8bit)傳送尋址寄存器偏移地址

=基址寄存器偏移立即數(shù)偏移地址=基址立即數(shù)常數(shù)后變址Post-indexing:modifyaddressafteruse前變址Pre-indexing:modifyaddressbeforeuse回寫如果可能,更新基址寄存器第44頁,課件共98頁,創(chuàng)作于2023年2月數(shù)據(jù)傳送指令

-2多數(shù)據(jù)傳送指令

(LDM,STM)load(LDM)或

store(STM)當前可見寄存器的任意子集使用堆棧:maintainingfulloremptystackswhichcangrowupordownmemory上下文切換:保存或重新存儲工作寄存器塊拷貝:在主存儲器中移動大數(shù)據(jù)塊尋址Pre/PostindexingAutoincrementordecrement回寫到基址寄存器Writebackthebaseregister第45頁,課件共98頁,創(chuàng)作于2023年2月數(shù)據(jù)傳送指令

-3單數(shù)據(jù)交換

(SWAP)在寄存器和外部存儲器之間交換字節(jié)或字讀存儲器和寫存儲器是是放在一起的原子指令執(zhí)行時不能中斷當‘LOCK’信號輸出操作時,外部存儲器管理單元被鎖定,當多線程操作時使程序同步(OS支持)鎖定信號量第46頁,課件共98頁,創(chuàng)作于2023年2月數(shù)據(jù)傳送指令-4LDRr0,[r1]r0:=mem32[r1]STRr0,[r1]mem32[r1]:=r0Note:r1keepsawordaddress(2LSBsare0)LDRr0,[r1,#4]r0:=mem32[r1+4]寄存器間接尋址基址+偏移量尋址

(offsetofupto4Kbytes)LDRr0,[r1,#4]!r0:=mem32[r1+4]

r1:=r1+4自動變址尋址LDRr0,[r1],#4r0:=mem32[r1]

r1:=r1+4后變址尋址LDRBr0,[r1]r0:=mem8[r1]Note:norestrictionsforr1單寄存器

loadandstore第47頁,課件共98頁,創(chuàng)作于2023年2月數(shù)據(jù)傳送指令

-5COPY: ADRr1,TABLE1 ;r1pointstoTABLE1 ADRr2,TABLE2 ;r2pointstoTABLE2LOOP: LDRr0,[r1] STRr0,[r2] ADDr1,r1,#4 ADDr2,r2,#4 ...TABLE1: ...TABLE2:...COPY: ADRr1,TABLE1 ;r1pointstoTABLE1 ADRr2,TABLE2 ;r2pointstoTABLE2LOOP: LDRr0,[r1],#4 STRr0,[r2],#4 ...TABLE1: ...TABLE2:...第48頁,課件共98頁,創(chuàng)作于2023年2月數(shù)據(jù)傳送指令-6塊拷貝數(shù)據(jù)被存貯在基本寄存器的上面地址或下面地址

地址增加或減少是在存貯第一個值之前或之后開始的LDMIAr1,{r0,r2,r5}r0:=mem32[r1]

r2:=mem32[r1+4]

r5:=mem32[r1+8]Note:寄存器的部分或全部都可以用單指令傳送Note:在表中的寄存器順序并不重要Note:在表中包括r15i將造成控制流的改變多寄存器數(shù)據(jù)傳送

[IncrementAfter]第49頁,課件共98頁,創(chuàng)作于2023年2月多寄存器傳送尋址模式r5r1r9’r0r9STMIAr9!,{r0,r1,r5}100016100c16101816r1r5r9STMDAr9!,{r0,r1,r5}r0r9’100016100c16101816r5r9STMDBr9!,{r0,r1,r5}r1r0r9’100016100c16101816r5r1r0r9’r9STMIBr9!,{r0,r1,r5}100016100c16101816第50頁,課件共98頁,創(chuàng)作于2023年2月條件執(zhí)行所有的ARM指令都可以條件執(zhí)行指令的執(zhí)行與否取決于CPSR寄存器的N,Z,CandV標志位所有的Thumb指令都可以解壓成全部條件指令ConditionFieldininstruction0000=EQ-Zset(equal)0001=NE-Zclear(notequal)0010=CS-Cset(unsignedhigherorsame)0011=CC-Cclear(unsignedlower)0100=MI-Nset(negative)0101=PL-Nclear(positiveorzero)0110=VS-Vset(overflow)0111=VC-Vclear(nooverflow)1000=HI-CsetandZclear(unsignedhigher)1001=LS-CclearorZset(unsignedlowerorsame)1010=GE-NsetandVset,orNclearandVclear(greaterorequal)1011=LT-NsetandVclear,orNclearandVset(lessthan)1100=GT-Zclear,andeitherNsetandVset,orNclearandVclear(greaterthan)1101=LE-Zset,orNsetandVclear,orNclearandVset(lessthanorequal)1110=AL-always1111=NV-never第51頁,課件共98頁,創(chuàng)作于2023年2月控制流指令第52頁,課件共98頁,創(chuàng)作于2023年2月條件執(zhí)行條件執(zhí)行避免使用分支指令Example

CMPr0,#5 ; BEQBYPASS ;if(r0!=5){ ADDr1,r1,r0 ;r1:=r1+r0-r2 SUBr1,r1,r2 ;}BYPASS: ...

CMPr0,#5 ; ADDNEr1,r1,r0 ; SUBNEr1,r1,r2 ; ...使用條件執(zhí)行Note:add2–letterconditionafterthe3-letteropcode;if((a==b)&&(c==d))e++;CMPr0,r1CMPEQr2,r3ADDEQr4,r4,#1第53頁,課件共98頁,創(chuàng)作于2023年2月控制和分支指令控制指令分支和分支連接跳到希望的指令中保存當前的PC并返回(with‘L’bit)分支和交換跳到期望的指令中與指令集交換Rm[0]==1:Subsequentinst.areTHUMB.Rm[0]==0:Subsequentinst.areARM.condRm0001001011111111111100312827654301L第54頁,課件共98頁,創(chuàng)作于2023年2月分支和鏈接指令分支子程序

(r14servesasalinkregister)嵌套子程序

BLSUBR ;branchtoSUBR .. ;returnhereSUBR: .. ;SUBRentrypoint MOVpc,r14;return

BLSUB1 ..SUB1: ;saveworkandlinkregister STMFDr13!,{r0-r2,r14} BLSUB2 .. LDMFDr13!,{r0-r2,pc}SUB2: .. MOVpc,r14;copyr14intor15FullDescending第55頁,課件共98頁,創(chuàng)作于2023年2月請求管理程序管理程序是在特權(quán)級操作的程序,它可以實現(xiàn)用戶級程序不能實現(xiàn)的任務Example:sendtexttothedisplayARMISA包括

SWI(SoftWareInterrupt);outputr0[7:0]SWISWI_WriteC;returnfromauserprogrambacktomonitorSWISWI_Exit 第56頁,課件共98頁,創(chuàng)作于2023年2月轉(zhuǎn)移表根據(jù)程序計算值調(diào)用一個子程序

BLJTAB ...JTAB: CMPr0,#0 BEQSUB0 CMPr0,#1 BEQSUB1 CMPr0,#2 BEQSUB2Note:slowwhenthelistislong,andallsubroutinesareequallyfrequent

BLJTAB ...JTAB: ADRr1,SUBTAB CMPr0,#SUBMAX;overrun? LDRLSpc,[r1,r0,LSL#2] BERRORSUBTAB: DCDSUB0 DCDSUB1 DCDSUB2 ...第57頁,課件共98頁,創(chuàng)作于2023年2月AREAHelloW,CODE,READONLY;聲明代碼區(qū)SWI_WriteCEQU&0;輸出r0中的字符SWI_ExitEQU&11;程序結(jié)束ENTRY;代碼入口STARTADRr1,TEXT;r1---“HelloWorld”LOOPLDRBr0,[r1],#1;讀取下一字節(jié)CMPr0,#0;檢查文本終點SWINESWI_WriteC;若非終點,則打印BNELOOP;并返回LOOPSWISWI_Exit;執(zhí)行結(jié)束TEXT=“HelloWorld”,&0a,&0d,0END;程序結(jié)束Example:HelloARMWorld!第58頁,課件共98頁,創(chuàng)作于2023年2月PSR指令PSR指令(MRS,MSR)TheMRSandMSR指令是從數(shù)據(jù)處理指令子集形成的.instructionsareformedfromasubsetoftheDataProcessingoperations這些指令允許訪問CPSRandSPSR寄存器s:TheMRS指令允許把

CPSRorSPSR_<mode>寄存器中的內(nèi)容移到通用寄存器中TheMSR指令允許把通用寄存器中的內(nèi)容移到CPSRorSPSR_<mode>寄存器中第59頁,課件共98頁,創(chuàng)作于2023年2月協(xié)處理器指令

-1協(xié)處理器一般原理是通過增加核擴展指令集Example:如

MMU&cache.FPU等系統(tǒng)控制器寄存器協(xié)處理器專用ARM控制數(shù)據(jù)流協(xié)處理器只包含數(shù)據(jù)處理和存貯器傳送操作協(xié)處理器數(shù)據(jù)操作

(CDP)這類指令是用來告訴協(xié)處理器執(zhí)行某些內(nèi)部操作無結(jié)果返回ARM,ARM并不等待操作完成第60頁,課件共98頁,創(chuàng)作于2023年2月協(xié)處理器指令

-2協(xié)處理器數(shù)據(jù)傳送

(LDC,STC)Load(LDC)orstore(STC)一個協(xié)處理器寄存器的子集直接到存儲器ARMis負責提供存儲器地址,協(xié)處理器提供或接收大量傳送的數(shù)據(jù)或控制指令協(xié)處理器寄存器傳送

(MRC,MCR)在ARM和協(xié)處理器之間的直接通訊信息軟件中斷指令

(SWI)在控制方式中用于進入管理員模式該指令造成軟件中斷陷刊產(chǎn)生,它會影響模式改變第61頁,課件共98頁,創(chuàng)作于2023年2月本節(jié)提要132546ARM體系結(jié)構(gòu)ARM編程模型微內(nèi)核和一體化內(nèi)核ARM指令集嵌入式實時操作系統(tǒng)商用嵌入式操作系統(tǒng)第62頁,課件共98頁,創(chuàng)作于2023年2月定義:用于嵌入式計算機的操作系統(tǒng)都稱為嵌入式操作系統(tǒng)。 它實際上代表著一個集合,最低端是簡單的監(jiān)控程序,最高端則為通用操作系統(tǒng)。嵌入式操作系統(tǒng)的特征通常有實時要求:早期主要用于控制、通常為實時操作系統(tǒng)的代名詞。CPU性能的提高、手持設備的出現(xiàn)、通用操作系統(tǒng)對實時進程的支持,使得RTOS和EmbeddedOS成了不同的名詞。許多嵌入式操作系統(tǒng)的內(nèi)核是微內(nèi)核結(jié)構(gòu):嵌入式操作系統(tǒng)第63頁,課件共98頁,創(chuàng)作于2023年2月嵌入式操作系統(tǒng)的特征(2)許多嵌入式系統(tǒng)都不帶磁盤

有的不支持文件系統(tǒng)支持文件系統(tǒng),主要用于設備驅(qū)動,數(shù)據(jù)存于Ramdisk有磁盤也主要用于存儲數(shù)據(jù),os與可執(zhí)行程序放在ROM許多嵌入式操作系統(tǒng)不采用存儲管理技術(shù)、不區(qū)分系統(tǒng)空間和用戶空間。

目的:簡化結(jié)構(gòu)、降低成本、改進效率影響:不區(qū)分核心態(tài)、用戶態(tài),缺乏保護第64頁,課件共98頁,創(chuàng)作于2023年2月OS內(nèi)核與應用程序之間不再有物理的邊界。系統(tǒng)中的進程實際上全部是內(nèi)核線程,共享同一內(nèi)存空間。內(nèi)核和應用程序靜態(tài)連接,應用軟件開發(fā)調(diào)試不便:下載。應用程序直接訪問全部內(nèi)核資源,內(nèi)核開發(fā)維護混為一體。每個進程的全局變量都是共享變量,需要互斥訪問。不同應用之間的函數(shù)可以相互調(diào)用,如果在函數(shù)中間可以發(fā)生調(diào)度,則要求函數(shù)可重入。為了解決可重入的問題,有的OS提供進程變量。第65頁,課件共98頁,創(chuàng)作于2023年2月注:(1)不區(qū)分系統(tǒng)空間和用戶空間并不一定意味著應用程序和內(nèi)核靜態(tài)地連接在一起,如dos注(2):不分系統(tǒng)空間和用戶空間并不意味著不能使用頁面映射技術(shù),只要有MMU注(3):即使采用了頁式虛存,也不采用頁面交換技術(shù)。原因:不帶磁盤、實時要求,ROM寫入慢第66頁,課件共98頁,創(chuàng)作于2023年2月嵌入式操作系統(tǒng)的特征(3)“看門狗”支持:死循環(huán)硬件支持、OS設置控制點嵌入式操作系統(tǒng)啟動/引導時間短。引導時間主要花在:自檢、系統(tǒng)映像的引導裝入、系統(tǒng)的初始化上面可移植性強:提供HAL/BSP第67頁,課件共98頁,創(chuàng)作于2023年2月實時操作系統(tǒng)

定義:是能滿足(來自應用的)實時要求的操作系統(tǒng)。實時:一旦發(fā)生某種事件,系統(tǒng)就要能夠“及時”作出反映 充分發(fā)揮硬件潛能---綜合速度快慢 反應的速度在多大程度上得到滿足的問題硬實時:系統(tǒng)特定的時序得不到滿足,將會引起災難性的后果. 任務:周期、執(zhí)行時間、deadline、…… 最壞響應時間 準入控制 RM、EDF調(diào)度算法軟實時:特定的時序得不到滿足,系統(tǒng)的性能會下降。第68頁,課件共98頁,創(chuàng)作于2023年2月實時操作系統(tǒng)和通用操作系統(tǒng)的區(qū)別通用OS追求的目標是總體效率,必要時寧可犧牲個別進程的反應速度來達到總體效率的提高。實時OS卻反過來,寧可犧牲總體效率也要保證個別進程的反應速度。通用OS公正性更重要,必要時寧可“劫富濟貧”,實時OS則高優(yōu)先級進程的運行更重要,必要時寧可“劫貧濟富”通用OS的性能分析是統(tǒng)計分析、平均值分析,實時OS則為最壞情況分析通用OS可以充分利用CPU的處理能力,實時OS需要有意讓CPU的處理能力供過于求,以確保反應速度和任務的完成。第69頁,課件共98頁,創(chuàng)作于2023年2月實時操作系統(tǒng)的反應速度(1)(1)中斷延時 反映速度取決于: 外部事件--》中斷請求--》中斷處理--》服務進程大多數(shù)處理機都不支持嵌套中斷:關(guān)中斷時間LINUX中斷處理的前半、后半,前半/后半之間的可能調(diào)度優(yōu)先級中斷:中斷是否響應取決于中斷源和處理機的級別中斷延時的長短與具體指令系統(tǒng)的關(guān)系:CISC/RISC指令系統(tǒng)調(diào)用中也可能關(guān)中斷DMA操作:讓出了對內(nèi)存的使用權(quán) 第70頁,課件共98頁,創(chuàng)作于2023年2月實時操作系統(tǒng)的反應速度(2)(2)調(diào)度延時(SchedulingLatency) 事件處理的簡易程度 簡單:中斷處理程序中就可以完成 復雜:中斷處理+喚醒進程+進程調(diào)度+進程處理(3)系統(tǒng)負荷: 進程調(diào)度只能發(fā)生在完成了所有的嵌套中斷處理之后 系統(tǒng)的實時性只有在負荷合理時才能得到保證,在重負荷下談論實時是沒有意義的。第71頁,課件共98頁,創(chuàng)作于2023年2月實時操作系統(tǒng)的反應速度(3)(4)調(diào)度策略

如果中斷處理結(jié)束后發(fā)生的首次調(diào)度能選中目標進程,調(diào)度延時的大小只決定于CPU的速度、調(diào)度算法的復雜程度、就緒進程的多少,絕對值一般很小。但能否選中則決定于調(diào)度策略。 RoundRobin:就緒進程的多少、時間片的長短 優(yōu)先級調(diào)度:級別數(shù)量要足夠多。POSIX.4規(guī)定了通過基于優(yōu)先級的調(diào)度支持實時進程。(5)調(diào)度方式

中斷處理完成后,目標進程優(yōu)先級<當前進程,不存在立即調(diào)度的問題,否則,在可剝奪調(diào)度方式下需要立即調(diào)度,但可剝奪調(diào)度方式在實現(xiàn)技術(shù)上是有一定難度的,很多OS都不支持。

第72頁,課件共98頁,創(chuàng)作于2023年2月實時操作系統(tǒng)的反應速度(4)不可剝奪調(diào)度的調(diào)度時機:

當前進程系統(tǒng)調(diào)用 當前進程運行受到阻礙

當前進程時間片到是否發(fā)生、何時發(fā)生是不可預測的可以估算出一個上限,但對實時要求往往不可接受第73頁,課件共98頁,創(chuàng)作于2023年2月實時操作系統(tǒng)的反應速度(5)Linux操作系統(tǒng)的進程調(diào)度(2.4): 既不是完全的可剝奪,也不是完全的不可剝奪。 1)中斷發(fā)生時當前進程正在用戶空間運行,則可剝奪 上下文:中斷現(xiàn)場+堆棧+進程控制塊 2)中斷發(fā)生時,當前進程已經(jīng)進入內(nèi)核(系統(tǒng)調(diào)用或中斷)則不可剝奪。WHY? a)內(nèi)核中并發(fā)的上下文被串行化,如磁盤讀寫 b)用戶進程可以訪問的軟件資源是獨占的或者暫時是獨占的(臨界區(qū)),而系統(tǒng)調(diào)用是一個不可中斷的原子操作。這就是為什么Linux調(diào)度只能發(fā)生在中斷處理/系統(tǒng)調(diào)用返回前夕的原因。 為了實現(xiàn)內(nèi)核的可剝奪,需要a)增加保護/恢復的上下文,b)仔細分析代碼,精確確定哪些代碼必須確保原子性。第74頁,課件共98頁,創(chuàng)作于2023年2月實時操作系統(tǒng)的反應速度(5)絕對意義的可剝奪是不可能的,不可剝奪窗口 a)正在進行進程調(diào)度/切換的過程中 b)中斷(包括異常)響應處理期間 c)不允許進程調(diào)度的臨界區(qū) d)SMP結(jié)構(gòu)中,必須保證多處理器間共享資源的互斥使用,是一種特殊的臨界區(qū) e)DMA進行時,如果CPU本身已被掛起,當然就無“剝奪”可言了。

盡量減小不可剝奪窗口。 一般認為,只有可剝奪的OS才能稱為實時OS.第75頁,課件共98頁,創(chuàng)作于2023年2月可剝奪調(diào)度的優(yōu)先級反轉(zhuǎn)問題信號量機制中:低優(yōu)先級進程占有了信號量,高優(yōu)先級進程必須等待。優(yōu)先級反轉(zhuǎn):高優(yōu)先級任務H低優(yōu)先級任務L中優(yōu)先級任務M共享內(nèi)存Y,寫操作信號量S,互斥步驟

1)L取得S(P操作),但是未做V操作2)H中斷,H運行態(tài)3)H寫Y,但是Y的S被占用4)L重新取得控制權(quán)5)M出現(xiàn),取得控制權(quán)結(jié)果:M比H優(yōu)先,如果不斷有M出現(xiàn),H不能執(zhí)行第76頁,課件共98頁,創(chuàng)作于2023年2月解決辦法優(yōu)先級繼承(priorityinheritance)設S為正占用著某項共享資源的進程P以及所有正在等待占用此項資源的進程的集合找出S中的最高優(yōu)先級Ph置進程P的優(yōu)先級為Ph優(yōu)先級封頂(priorityceiling)設S為所有可能競爭使用某共享資源的進程集合,事先為S規(guī)定一個優(yōu)先級上限Ph,S中所有進程的優(yōu)先級都小于Ph

創(chuàng)建保護該項資源的信號量時,將Ph作為一個參數(shù)每當進程通過信號量得到共享資源的獨占使用權(quán)時,將進程的優(yōu)先級暫時置為Ph,釋放資源時再恢復原來的優(yōu)先級.第77頁,課件共98頁,創(chuàng)作于2023年2月實時操作系統(tǒng)的反應速度(5)(6)上下文切換延時(ContextSwitchingLatency) 與具體的CPU和OS有關(guān) 采用MMU的OS要大于不采用MMU的OS綜上所述,延時主要來自兩個方面:切換時間:調(diào)度+切換,中斷現(xiàn)場保護+中斷響應延時差別不大,可預測與資源剝奪有關(guān)的延時: 調(diào)度延時:不可剝奪窗口---完成系統(tǒng)調(diào)用的時間 中斷延時:是否支持嵌套中斷/中斷處理的方式第78頁,課件共98頁,創(chuàng)作于2023年2月LINUX的措施LINUX(2.4)顯然不是實時操作系統(tǒng).減小調(diào)度延時的措施:對于執(zhí)行時間較長而需要等待的外設操作,如果有適合調(diào)度的地方就主動要求加以調(diào)度.如果需要等待的操作需要循環(huán)進行,就把主動的調(diào)度放在循環(huán)體內(nèi),使夾在兩次調(diào)度之間不可剝奪窗口縮短.在執(zhí)行較長的操作之前,或在兩次這樣的操作之間,先檢查當前進程是否接收到了信號,如果接收到了信號則暫停/流產(chǎn)本次操作. 將調(diào)度延時限制在合理并且多數(shù)實時應用可以接受的范圍內(nèi).-----這些措施同樣適用于應用程序.第79頁,課件共98頁,創(chuàng)作于2023年2月Linux的實時性一般的通用linux已經(jīng)具備一定的實時性但無法滿足硬實時的要求運行于linux內(nèi)核空間的進程(核心態(tài))不能被搶占

在linux中,中斷有時候會出于保護臨界區(qū)操作的目的而被屏蔽

通用linux的時間滴答長度為10ms,但是這對于時間精度要求很高(微秒級)的實時進程來說是不夠的第80頁,課件共98頁,創(chuàng)作于2023年2月分時系統(tǒng)Linux(UNIX)的負反饋過程p_cpup_pri進程優(yōu)先權(quán)被調(diào)度的機會

被調(diào)度的機會進程優(yōu)先權(quán)p_prip_cpu純粹的分時系統(tǒng)中,進程優(yōu)先級相差不大,高優(yōu)先級進城慢慢地變成了低優(yōu)先級進程,不能滿足實時要求。 解決辦法: (1)取消負反饋 (2)區(qū)分兩類進程:同類進程FIFO或輪轉(zhuǎn) Linux實時進程優(yōu)先級加基數(shù)1000第81頁,課件共98頁,創(chuàng)作于2023年2月Linux2.6內(nèi)核實時性分析Linux2.6中內(nèi)核自身是可搶占的,它允許自身在執(zhí)行任務時被打斷Linux2.6版本的內(nèi)核使用了由IngoMolnar開發(fā)的新的調(diào)度器算法,稱為O(1)算法第82頁,課件共98頁,創(chuàng)作于2023年2月RTLinux硬實時操作系統(tǒng)簡介RTLinux是一硬實時操作系統(tǒng)實現(xiàn)了一個微內(nèi)核的小的實時操作系統(tǒng),而將普通Linux系統(tǒng)作為一個該操作系統(tǒng)中的一個低優(yōu)先級的任務來運行普通Linux系統(tǒng)中的任務可以通過FIFO和實時任務進行通信通過軟件來模擬硬件的中斷控制器

RT-Linux通過將系統(tǒng)的實時時鐘設置為單次觸發(fā)狀態(tài),可以提供十幾個微秒級的調(diào)度粒度第83頁,課件共98頁,創(chuàng)作于2023年2月RTLinux內(nèi)核結(jié)構(gòu)第84頁,課件共98頁,創(chuàng)作于2023年2月時鐘節(jié)拍時鐘中斷稱為系統(tǒng)的脈搏 分時系統(tǒng)中,沒有時鐘中斷,就有可能使

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論