交大峨眉嵌入式ARM2013復(fù)習(xí)_第1頁
交大峨眉嵌入式ARM2013復(fù)習(xí)_第2頁
交大峨眉嵌入式ARM2013復(fù)習(xí)_第3頁
交大峨眉嵌入式ARM2013復(fù)習(xí)_第4頁
交大峨眉嵌入式ARM2013復(fù)習(xí)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、復(fù)習(xí) 題型 填空30分(1*30), 選擇30分(2*15) 簡(jiǎn)答20分(4個(gè)) 程序填空10分(1*10) 程序設(shè)計(jì)10分(2個(gè),4章,6章各一個(gè)) 嵌入式系統(tǒng)定義: 從技術(shù)的角度定義:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。 從系統(tǒng)的角度定義:嵌入式系統(tǒng)是設(shè)計(jì)完成復(fù)雜功能的硬件和軟件,并使其緊密耦合在一起的計(jì)算機(jī)系統(tǒng)。術(shù)語嵌入式反映了這些系統(tǒng)通常是更大系統(tǒng)中的一個(gè)完整的部分,稱為嵌入的系統(tǒng)。嵌入的系統(tǒng)中可以共存多個(gè)嵌入式系統(tǒng)。第一章 嵌入式處理器類以及其主流產(chǎn)品: 嵌入式微處理器: 嵌入式微控制器; 嵌入式DS

2、P處理器; 嵌入式片上系統(tǒng)(SOC)。 實(shí)時(shí)操作系統(tǒng)分類:一般實(shí)時(shí)操作系統(tǒng)和嵌入式實(shí)時(shí)操作系統(tǒng) 嵌入式操作系統(tǒng)基本概念(15個(gè)) 常見的嵌入式操作系統(tǒng): 嵌入式Linux Win CE VxWorks C/OS-II第一章第二章 常用ARM處理器系列ARM7ARM9ARM10EXscaleARM11CortexARM9EARM7TDMI-S支持高密度16位的Thumb指令集;支持片上調(diào)試;支持64位乘法;支持EmbededICE觀察硬件;ARM7TDMI 的可綜合(synthesizable)版本(軟核),對(duì)應(yīng)用工程師來說其編程模型與ARM7TDMI 一致;Lpc2000系列第二章 如果一個(gè)數(shù)

3、據(jù)是從偶地址開始的連續(xù)存儲(chǔ),那么它就是半字對(duì)齊,否則就是非半字對(duì)齊; 如果一個(gè)數(shù)據(jù)是以能被4整除的地址開始的連續(xù)存儲(chǔ),那么它就是字對(duì)齊,否則就是非字對(duì)齊。方式半字對(duì)齊字對(duì)齊地址0 x40020 x40040 x40040 x4008特征Bit0=0其他位為任意值Bit1=0,Bit0=0其他位為任意值 存儲(chǔ)器的存儲(chǔ)方式第二章 ARM處理器使用流水線來增加處理器指令流的速度,這樣可使幾個(gè)操作同時(shí)進(jìn)行,并使處理和存儲(chǔ)器系統(tǒng)連續(xù)操作,能提供0.9MIPS/MHz的指令執(zhí)行速度。 ARM7TDMI的流水線分3級(jí),分別為:取指譯碼執(zhí)行取指譯碼執(zhí)行處理指令并將結(jié)果寫回寄存器識(shí)別將要被執(zhí)行的指令從寄存器裝載

4、一條指令 正常操作過程中,在執(zhí)行一條指令的同時(shí)對(duì)下一條(第二條)指令進(jìn)行譯碼,并將第三條指令從存儲(chǔ)器中取出。 在ARM狀態(tài)下,流水線上各指令的地址為: 在Thumb狀態(tài)下,流水線上各指令的地址為:PCPC-4PC-8PCPC-2PC-4 三級(jí)流水線第二章 處理器狀態(tài) ARM7TDMI處理器內(nèi)核包含2套指令系統(tǒng),分別為ARM指令集和Thumb指令,并且各自對(duì)應(yīng)1種處理器的狀態(tài):ARM狀態(tài):32位,處理器執(zhí)行字方式的ARM指令,處理器默認(rèn)為此狀態(tài);Thumb狀態(tài):16位,處理器執(zhí)行半字方式的Thumb指令。注意:兩個(gè)狀態(tài)之間的切換并不影響處理器模式或寄存器內(nèi)容。第二章地址最低位為0,表示切換到AR

5、M狀態(tài) 使用BX指令將ARM內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進(jìn)行切換。ARM指令集Thumb指令集CODE32LDRR0, =Lable+1BX R0CODE16Lable MOV R1, #12CODE16LDR R0, =LableBX R0CODE32LableMOV R1, #10地址最低位為1,表示切換到Thumb狀態(tài)跳轉(zhuǎn)地址標(biāo)號(hào)執(zhí)行完BX指令,處理器切換到Thumb狀態(tài),開始執(zhí)行Thumb指令程序代碼指令集關(guān)系 從ARM狀態(tài)切換到Thumb狀態(tài)的程序代碼如下: 從Thumb狀態(tài)切換到ARM狀態(tài)的程序代碼如下:執(zhí)行完BX指令,處理器切換到ARM狀態(tài),開始執(zhí)行ARM指令處

6、理器狀態(tài)第二章ARM處理器模式處理器模式處理器模式說明說明備注備注 用戶(usr)正常程序運(yùn)行的工作模式不能直接從用戶模式切換到其它模式特權(quán)模式系統(tǒng)(sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)異常模式快中斷(fiq)快速中斷請(qǐng)求處理只有在FIQ異常響應(yīng)時(shí),才進(jìn)入此模式中斷(irq)中斷請(qǐng)求處理只有在IRQ異常響應(yīng)時(shí),才進(jìn)入此模式管理(svc)供操作系統(tǒng)使用的一種保護(hù)模式只有在系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí),才進(jìn)入此模式中止(abt)用于虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7內(nèi)核中沒有多大用處未定義(und) 支持軟件仿真的硬件協(xié)處理器只有在未定義指令異常響應(yīng)時(shí)

7、,才進(jìn)入此模式第二章ARM狀態(tài)各模式下的寄存器寄存器寄存器類別類別寄存器在匯寄存器在匯編中的名稱編中的名稱各模式下實(shí)際訪問的寄存器各模式下實(shí)際訪問的寄存器用戶用戶系統(tǒng)系統(tǒng)管理管理中止中止未定義未定義中斷中斷快中斷快中斷通通用用寄寄存存器器和和程程序序計(jì)計(jì)數(shù)數(shù)器器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_scv

8、R13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR13_irqR14_fiqR15(PC)R15狀態(tài)狀態(tài)寄存器寄存器CPSRCPSRSPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq 所有的37個(gè)寄存器,分成兩大類:31個(gè)通用32位寄存器;6個(gè)狀態(tài)寄存器。注意:R13、R14、R15以及CPSR(包括各位和處理器模式等的關(guān)系)第二章 程序狀態(tài)寄存器的格式NZCV IM0M1M2M3M4TF. . .31 30 29 28 27 26 8 7 6 5 4 3 2 1 0條件代碼標(biāo)志保留控制

9、位溢出標(biāo)志進(jìn)位或借位擴(kuò)展零負(fù)或小于IRQ禁止FIQ禁止?fàn)顟B(tài)位模式位NZCVIM0M1M2M3M4TF例,中斷開關(guān)方式等設(shè)置第二章 條件代碼標(biāo)志各標(biāo)志位的含義如下:負(fù)標(biāo)志N:運(yùn)算結(jié)果的第31位值,記錄標(biāo)志設(shè)置操作的結(jié)果;零標(biāo)志Z:如果標(biāo)志設(shè)置的操作為0,則置位;進(jìn)位標(biāo)志C:記錄無符號(hào)加法溢出,減法無借位,循環(huán)移位;溢出標(biāo)志V:記錄標(biāo)志設(shè)置操作的有符號(hào)溢出。第二章 警告:絕對(duì)不要強(qiáng)制改變CPSR寄存器中的控制位T。如果這樣做,處理器將進(jìn)入一個(gè)無法預(yù)測(cè)的狀態(tài)。 控制位1、中斷禁止控制位I和F;2、處理器狀態(tài)位T;3、處理器模式位M0M4。當(dāng)控制位I置位時(shí),IRQ中斷被禁止;當(dāng)控制位F置位時(shí),F(xiàn)IQ中

10、斷被禁止。當(dāng)控制位T置位時(shí),處理器正在Thumb狀態(tài)下運(yùn)行;當(dāng)控制位T清零時(shí),處理器正在ARM狀態(tài)下運(yùn)行。M4:0模式模式可見的可見的Thumb狀態(tài)寄存器狀態(tài)寄存器可見的可見的ARM狀態(tài)寄存器狀態(tài)寄存器10000用戶R0R7, SP, LR, PC, CPSRR0R14, PC, CPSR 10001快速中斷R0R7, SP_fiq, LR_fiq, PC,CPSR, SPSR_fiq R0R7, R8_fiqR14_fiq, PC,CPSR, SPSR_fiq 10010中斷R0R7, SP_irq, LR_irq, PC,CPSR, SPSR_fiq R0R12, R13_irq, R14

11、_irq, PC,CPSR, SPSR_irq 10011管理R0R7, SP_svc, LR_svc, PC,CPSR, SPSR_svc R0R12, R13_svc, R14_svc, PC,CPSR, SPSR_svc 10111中止R0R7, SP_abt, LR_abt, PC,CPSR, SPSR_abt R0R12, R13_abt, R14_abt, PC,CPSR, SPSR_abt 11011未定義R0R7, SP_und, LR_und, PC,CPSR, SPSR_und R0R12, R13_und, R14_und, PC,CPSR, SPSR_und11111系

12、統(tǒng)R0R7, SP, LR, PC,CPSR R0R14, PC, CPSR 注意:不是所有模式位的組合都定義了有效的處理器模式,如果將非法值寫入M4:0中,處理器將進(jìn)入一個(gè)無法恢復(fù)的模式。第二章 異常向量表地址地址異常異常進(jìn)入時(shí)的模進(jìn)入時(shí)的模式式進(jìn)入時(shí)進(jìn)入時(shí)I的的狀態(tài)狀態(tài)進(jìn)入時(shí)進(jìn)入時(shí)F的狀態(tài)的狀態(tài)0 x00000000復(fù)位管理禁止禁止0 x00000004未定義指令未定義IF0 x00000008軟件中斷異常管理禁止F0 x0000000C中止(預(yù)?。┲兄笽F0 x00000010中止(數(shù)據(jù))中止IF0 x00000014保留保留0 x00000018IRQ中斷禁止F0 x0000001CF

13、IQ快速中斷禁止禁止注:表中的I和F表示不對(duì)該位有影響,保留原來的值。 優(yōu)先級(jí)由高到低異常的進(jìn)入、異常的退出第二章 存儲(chǔ)器格式存儲(chǔ)器系統(tǒng)有兩種映射機(jī)制:小端存儲(chǔ)器系統(tǒng): 在小端格式中,數(shù)據(jù)的高字節(jié)存放在高地址中。大端存儲(chǔ)器系統(tǒng): 在大端格式中,數(shù)據(jù)的高字節(jié)存放在低地址中。A+3A+2A+1A存儲(chǔ)器 小端存儲(chǔ)模式下,0 x12345678在A地址開始的一個(gè)字空間的存儲(chǔ); 1 大端存儲(chǔ)模式下,0 x12345678在A地址開始的一個(gè)字空間的存儲(chǔ); 20 x120 x340 x560 x78A+3A+2A+1A存儲(chǔ)器0 x780 x560 x340 x12第三章 尋址方式分類 尋址方式是根據(jù)指令中給

14、出的地址碼字段來實(shí)現(xiàn)尋找真實(shí)操作數(shù)地址的方式。ARM處理器具有8種基本尋址方式。1.寄存器尋址;2.立即尋址;3.寄存器移位尋址;4.寄存器間接尋址;5.基址尋址;6.多寄存器尋址;7.7.堆棧尋址;堆棧尋址;8.相對(duì)尋址。 RISC特點(diǎn):指令規(guī)整、對(duì)稱、簡(jiǎn)單;單周期指令;指令字長度一致,單拍完成,便于流水操作;大量的寄存器;數(shù)據(jù)處理器的指令只對(duì)寄存器的內(nèi)容操作;只有加載存儲(chǔ)指令可以訪問存儲(chǔ)器。第三章 簡(jiǎn)單的ARM程序;文件名:TEST1.S ;功能:實(shí)現(xiàn)兩個(gè)寄存器相加 ;說明:使用ARMulate軟件仿真調(diào)試 AREAExample1,CODE,READONLY ;聲明代碼段Example1

15、 ENTRY ;標(biāo)識(shí)程序入口 CODE32 ;聲明32位ARM指令START MOVR0,#0 ;設(shè)置參數(shù) MOVR1,#10LOOPBLADD_SUB ;調(diào)用子程序ADD_SUB BLOOP ;跳轉(zhuǎn)到LOOPADD_SUB ADDSR0,R0,R1 ;R0 = R0 + R1 MOVPC,LR ;子程序返回 END ;文件結(jié)束 使用“;”進(jìn)行注釋標(biāo)號(hào)頂格寫實(shí)際代碼段聲明文件結(jié)束第三章 ARM指令的基本格式如下: ARM指令集指令格式 S , 其中號(hào)內(nèi)的項(xiàng)是必須的,號(hào)內(nèi)的項(xiàng)是可選的。各項(xiàng)的說明如下:opcode:指令助記符;cond:執(zhí)行條件;S:是否影響CPSR寄存器的值;Rd:目標(biāo)寄存器;

16、 Rn:第1個(gè)操作數(shù)的寄存器;operand2:第2個(gè)操作數(shù);第三章 ARM指令的基本格式如下: ARM指令集第2個(gè)操作數(shù) S , 靈活的使用第2個(gè)操作數(shù)“operand2”能夠提高代碼效率。它有如下的形式:#immed_8r常數(shù)表達(dá)式;Rm寄存器方式;Rm,shift寄存器移位方式;第三章 ARM指令集第2個(gè)操作數(shù)#immed_8r常數(shù)表達(dá)式 該常數(shù)必須對(duì)應(yīng)8位位圖,即必須是一個(gè)8位的常數(shù)通過循環(huán)右移偶數(shù)位可以得到的數(shù)。循環(huán)右移10位0 x120 0 0 1 0 0 1 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 0

17、0 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x801 0 0 0 0 0 0 00 x040 0 0 0 0 1 0 0移位前的8位常數(shù)0 x12移位后得到的常數(shù)0 x04800000第三章 ARM指令集第2個(gè)操作數(shù)#immed_8r常數(shù)表達(dá)式 該常數(shù)必須對(duì)應(yīng)8位位圖,即必須是一個(gè)8位的常數(shù)通過循環(huán)右移偶數(shù)位可以得到的數(shù)。例如:MOVR0,#1ANDR1,R2,#0 x0FMOVR1,#0 xC000;0 xC000可由0 x03循環(huán)右移16位得到第三章 ARM指令集第2個(gè)操作數(shù)Rm寄存器方式 在寄存器方式下,操作數(shù)即為寄存器的數(shù)值。例如:SUBR1,R

18、1,R2MOVPC,R0第三章 ARM指令集第2個(gè)操作數(shù)Rm,shift寄存器移位方式 將寄存器的移位結(jié)果作為操作數(shù),但Rm值保持不變,移位方法如下:操作碼說明操作碼說明ASR #n算術(shù)右移n位ROR #n循環(huán)右移n位LSL #n邏輯左移n位RRX帶擴(kuò)展的循環(huán)右移1位LSR #n邏輯右移n位Type RsType為移位的一種類型,Rs為偏移量寄存器,低8位有效。第三章 ARM指令的基本格式如下: ARM指令集條件碼 S , 使用條件碼“cond”可以實(shí)現(xiàn)高效的邏輯操作,提高代碼效率。 絕大部分的ARM指令都可以條件執(zhí)行,而Thumb指令只有B(跳轉(zhuǎn))指令具有條件執(zhí)行 功能。如果指令不標(biāo)明條件代

19、碼,將默認(rèn)為無條件(AL)執(zhí)行。第三章ARM指令種類1.存儲(chǔ)器訪問指令2.數(shù)據(jù)處理指令3.乘法指令4.ARM分支指令5.協(xié)處理器指令6.雜項(xiàng)指令7.偽指令 1.MOV指令與LDR指令都是往目標(biāo)寄存器中傳送數(shù)據(jù),但是它們有什么區(qū)別嗎? MOV指令用于將數(shù)據(jù)從一個(gè)寄存器傳送到另一個(gè)寄存器中,或者將一個(gè)常數(shù)傳送到一個(gè)寄存器中,但是不能訪問內(nèi)存。LDR指令用于從內(nèi)存中讀取數(shù)據(jù)放入寄存器中。 LDR偽指令呢?第四章 片內(nèi)存儲(chǔ)器 LPC2000系列中除了LPC2210/2220/2290外,其它的ARM微處理器內(nèi)部都帶有容量不等的Flash,這為ARM芯片的單片應(yīng)用帶來可能。 片內(nèi)Flash通過128位寬

20、度的總線與ARM內(nèi)核相連,具有很高的速度,加上特有的存儲(chǔ)器加速功能,因此可以將程序直接放在Flash上運(yùn)行。 片內(nèi)FLASH程序存儲(chǔ)器片內(nèi)存儲(chǔ)器 片內(nèi)Flash編程方法2. 使用在系統(tǒng)編程技術(shù)(即ISP),通過UART0接口下載程序;3. 使用在應(yīng)用編程技術(shù)(即IAP),在用戶程序運(yùn)行時(shí)對(duì)進(jìn)行擦除和/或編程操作,實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和固件的現(xiàn)場(chǎng)升級(jí)。1. 使用JTAG仿真/調(diào)試器,通過芯片的JTAG接口下載程序;第四章片內(nèi)存儲(chǔ)器 LPC2000系列微控制器的片內(nèi)RAM為靜態(tài)RAM (SRAM),它們可用作代碼和/或數(shù)據(jù)的存儲(chǔ)。 SRAM支持8位、16位和32位的讀寫訪問。 片內(nèi)靜態(tài)RAM第四章片外存

21、儲(chǔ)器:4個(gè)存儲(chǔ)器組(bank), 每個(gè)Bank尋址空間:16M字節(jié);數(shù)據(jù)寬度:8/16/32位。第四章存儲(chǔ)器映射存儲(chǔ)器重映射異常向量表的重映射系統(tǒng)上電或復(fù)位系統(tǒng)啟動(dòng)流程 ARM芯片可以存在片內(nèi)和片外存儲(chǔ)器,這些存儲(chǔ)器本身不具有地址信息,它們?cè)谛酒械牡刂肥怯尚酒瑥S家或用戶分配的,那么給物理存儲(chǔ)器分配邏輯地址的過程稱為存儲(chǔ)器映射。通過這些邏輯地址就可以訪問到相應(yīng)存儲(chǔ)器的物理存儲(chǔ)單元。將已經(jīng)過映射的存儲(chǔ)器再次映射的過程稱為存儲(chǔ)器重映射,它使同一物理存儲(chǔ)單元出現(xiàn)多個(gè)不同的邏輯地址。這些存儲(chǔ)單元主要包括引導(dǎo)塊“Boot Block”和用于保存異常向量表的少量存儲(chǔ)單元。第四章向量中斷控制器:中斷輸入請(qǐng)求

22、可以在VIC中被設(shè)置為以下三類: FIQ中斷:具有最高優(yōu)先級(jí); 向量IRQ中斷:具有中等優(yōu)先級(jí); 非向量IRQ中斷:具有最低優(yōu)先級(jí);各類中斷發(fā)生的過程系統(tǒng)控制模塊(PLL計(jì)算設(shè)計(jì),功率控制方式、其他基本概念)存儲(chǔ)器加速模塊 (MAM) 概述、基本概念外部存儲(chǔ)器控制器(EMC) 概述、基本概念引腳連接模塊、GPIO、外部中斷輸入定時(shí)器0和定時(shí)器1UART 其他外設(shè)只需了解重要特點(diǎn)第六章任務(wù)設(shè)計(jì)任務(wù)設(shè)計(jì)| C/OS-II程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)任務(wù)的分類任務(wù)的分類按照?qǐng)?zhí)行方式分類第六章一個(gè)任務(wù),也稱作一個(gè)線程,是一個(gè)簡(jiǎn)單的程序,該程序可以認(rèn)為CPU完全屬于該程序自己。實(shí)時(shí)應(yīng)用程序的設(shè)計(jì)過程,包括如

23、何把問題分割成多個(gè)任務(wù),每個(gè)任務(wù)都是整個(gè)應(yīng)用的某一部分,每個(gè)任務(wù)被賦予一定的優(yōu)先級(jí),有它自己的一套CPU寄存器和自己的棧空間。當(dāng)多任務(wù)內(nèi)核決定運(yùn)行另外的任務(wù)時(shí),它保存正在運(yùn)行任務(wù)的當(dāng)前狀態(tài),即CPU寄存器中的全部內(nèi)容。這些內(nèi)容保存在任務(wù)的當(dāng)前狀態(tài)保存區(qū),也就是任務(wù)自已的棧區(qū)之中。入棧工作完成以后,就把下一個(gè)將要運(yùn)行的任務(wù)的當(dāng)前狀態(tài)從任務(wù)的棧中重新裝入CPU的寄予存器,并開始下一個(gè)任務(wù)的運(yùn)行。這個(gè)過程就稱為任務(wù)切換。這個(gè)過程增加了應(yīng)用程序的額外負(fù)荷。CPU的內(nèi)部寄存器越多,額外負(fù)荷就越重。做任務(wù)切換所需要的時(shí)間取決于CPU有多少寄存器要入棧。任務(wù)及任務(wù)切換 任務(wù)劃分的目標(biāo) 在對(duì)一個(gè)具體的嵌入式應(yīng)

24、用系統(tǒng)進(jìn)行任務(wù)劃分時(shí),可以有不同的任務(wù)劃分方案。為了選擇最佳劃分方案,就必須知道任務(wù)劃分的目標(biāo)。(1)首要目標(biāo)是滿足“實(shí)時(shí)性”指標(biāo):即使在最壞的情況下,系統(tǒng)中所有對(duì)實(shí)時(shí)性有要求的功能都能夠正常實(shí)現(xiàn);(2)任務(wù)數(shù)目合理:對(duì)于同一個(gè)應(yīng)用系統(tǒng),合理的合并一些任務(wù),使任務(wù)數(shù)目適當(dāng)少一些還是比較有利;(3)簡(jiǎn)化軟件系統(tǒng):一個(gè)任務(wù)要實(shí)現(xiàn)其功能,除了需要操作系統(tǒng)的調(diào)度功能支持外,還需要操作系統(tǒng)的其它服務(wù)功能支持,合理劃分任務(wù),可以減少對(duì)操作系統(tǒng)的服務(wù)要求,簡(jiǎn)化軟件系統(tǒng);(4)降低資源需求:合理劃分任務(wù),減少或簡(jiǎn)化任務(wù)之間的同步和通信需求,就可以減少相應(yīng)數(shù)據(jù)結(jié)構(gòu)的內(nèi)存規(guī)模,從而降低對(duì)系統(tǒng)資源的需求資源同步任務(wù)

25、對(duì)共享資源進(jìn)行訪問的代碼稱為臨界區(qū)。各個(gè)任務(wù)訪問同一共享資源的關(guān)鍵段落必須互斥,才能保障共享資源的可靠性和完整性。這種使得不同任務(wù)訪問共享資源時(shí)能夠確保共享資源信息可靠和完整的措施稱為“資源同步” 資源同步可以通過以下手段實(shí)現(xiàn)。(1).使用關(guān)中斷:通過調(diào)用禁止中斷函數(shù)OS_ENTER_CRITICAL()和允許中斷函數(shù)OS_EXIT_CRITICAL()實(shí)現(xiàn)的。(2).使用關(guān)調(diào)度:通過調(diào)用禁止任務(wù)調(diào)度函數(shù)OSSchedLock()和允許任務(wù)調(diào)度函數(shù)OSSchedUnlock()實(shí)現(xiàn)的,因?yàn)榻拐{(diào)度違背了多任務(wù)的初衷,所以不建議用戶使用。(3).使用信號(hào)量與互斥信號(hào)量:通過等待信號(hào)量和發(fā)送信號(hào)量

26、實(shí)現(xiàn)共享資源的獨(dú)享。第六章系統(tǒng)函數(shù)概述系統(tǒng)函數(shù)概述基本原則:配對(duì)性原則 中斷服務(wù)程序調(diào)用函數(shù)的限制任務(wù)必須調(diào)用某個(gè)系統(tǒng)函數(shù) 第六章一般的操作系統(tǒng)都提供時(shí)間管理的函數(shù),最基本的就是延時(shí)函數(shù),C/OS-II也不例外,C/OS-II所具有的時(shí)間管理函數(shù)見下表。C/OS-II具有簡(jiǎn)單的動(dòng)態(tài)內(nèi)存管理能力。C/OS-II的動(dòng)態(tài)內(nèi)存管理函數(shù)見下表。任務(wù)管理函數(shù)是操作與任務(wù)相關(guān)功能的函數(shù),詳見下表。系統(tǒng)管理函數(shù)是一些與C/OS-II內(nèi)核或功能相關(guān)的一些函數(shù),詳見下表。C/OS-II的初始化函數(shù)有2個(gè):OSInit()和OSStart(),它們不能在任何任務(wù)和中斷服務(wù)程序中使用,僅在main()函數(shù)中按照一定的

27、規(guī)范被調(diào)用,其中OSInit()函數(shù)初始化C/OS-II內(nèi)部變量,OSStart()函數(shù)啟動(dòng)多任務(wù)環(huán)境。 C/OS-II把信號(hào)量等都稱為事件,管理它們的就是事件管理函數(shù)。C/OS-II V2.52具有的事件有普通信號(hào)量、互斥信號(hào)量、事件標(biāo)志組、消息郵箱和消息隊(duì)列,這些都是C/OS-II用于同步與通訊的工具,本章后述的內(nèi)容將會(huì)詳細(xì)介紹。系統(tǒng)函數(shù)的分類系統(tǒng)函數(shù)的分類初始化初始化任務(wù)管理任務(wù)管理時(shí)間管理時(shí)間管理內(nèi)存管理內(nèi)存管理根據(jù)功能分類事件管理事件管理函數(shù)名功能備注OSStatInit()使能任務(wù)統(tǒng)計(jì)功能復(fù)位一次只能調(diào)用一次,并且必須在任務(wù)中調(diào)用,在調(diào)用時(shí)其它用戶任務(wù)不能處于就緒狀態(tài)OSIntEn

28、ter()進(jìn)入中斷處理必須由中斷服務(wù)程序按照規(guī)范調(diào)用,使用本公司的模版就不需要調(diào)用它們OSIntExit()退出中斷處理OSSchedLock()鎖調(diào)度器必須配對(duì)使用,一般情況不需要使用。事實(shí)上,C/OS-II不推薦使用它們OSSchedUnlock()解鎖調(diào)度器OS_ENTER_CRITICAL()進(jìn)入臨界區(qū)必須配對(duì)使用,一般通過禁止中斷和允許中斷來實(shí)現(xiàn)的。對(duì)于一些移植代碼來說,不能嵌套調(diào)用OS_EXIT_CRITICAL()退出臨界區(qū)函數(shù)名功能函數(shù)名功能OSTaskChangePrio()改變?nèi)蝿?wù)優(yōu)先級(jí)OSTaskSuspend()掛起任務(wù)OSTaskCreate()建立任務(wù)OSTaskR

29、esume()恢復(fù)任務(wù)OSTaskCreateExt()建立任務(wù),比OSTaskCreate()控制任務(wù)屬性更多OSTaskStkChk()檢查堆棧OSTaskDel()刪除任務(wù)OSTaskQuery()獲得任務(wù)信息OSTaskDelReq()請(qǐng)求刪除任務(wù),有特殊用途系統(tǒng)管理系統(tǒng)管理函數(shù)名功能備注OSTimeDly()以時(shí)鐘節(jié)拍為單位延時(shí)OSTimeDlyHMSM()以鐘時(shí)分秒毫秒為單位延時(shí)OSTimeDlyResume()恢復(fù)延時(shí)的任務(wù)OSTimeDlyHMSM()可能需要多次才能恢復(fù)OSTimeGet()獲得系統(tǒng)時(shí)間以時(shí)鐘節(jié)拍為單位OSTimeSet()設(shè)置系統(tǒng)時(shí)間以時(shí)鐘節(jié)拍為單位OSTimeTick()時(shí)鐘節(jié)拍處理函數(shù)由時(shí)鐘節(jié)拍中斷處理程序調(diào)用,用戶很少使用第六章系統(tǒng)函數(shù)使用場(chǎng)合系統(tǒng)函數(shù)使用場(chǎng)合時(shí)間管理時(shí)間管理行為同步行為同步資源同步資源同步第六章1.控制任務(wù)的執(zhí)行周期 在任務(wù)函數(shù)的代碼中可以通過插入延時(shí)函數(shù)來控制任務(wù)周期性運(yùn)行,定時(shí)閑置CPU一段時(shí)間,供其它任務(wù)使用。 2.控制任務(wù)的運(yùn)行節(jié)奏 在任務(wù)函數(shù)的代碼中也可以通過插入延時(shí)函數(shù)來控制任務(wù)的運(yùn)行節(jié)奏。 3.狀態(tài)查詢 查詢過程是一個(gè)無限循環(huán)過程,只有當(dāng)希望的狀態(tài)出現(xiàn)以后才能退出這個(gè)無限循環(huán),這種情況在

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論