




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第一章1嵌入式系統(tǒng)定義嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),采用可剪裁軟硬件,適用于對功能、可 靠性、成本、體積、功耗等有嚴(yán)格要求的專用計算機系統(tǒng)。? 嵌入式微處理器? 外圍硬件設(shè)備? 嵌入式操作系統(tǒng)? 應(yīng)用程序嵌入式系統(tǒng)體系結(jié)構(gòu)嵌入式應(yīng)用軟件 嵌入式操作系統(tǒng)嵌入式處理器嵌入式外圍設(shè)備嵌入式硬件平臺嵌入式處理器類型嵌入式微處理器(Embedded Microprocessor Un it, EMPU)?由通用微處理器裁剪后發(fā)展而來?386EX,PowerPC, MIPS,ARM嵌入式微控制器(Microco ntroller Un it , MCU)? 在一塊芯片上集成 cpu、存儲器
2、及其他部件? 單片機嵌入式 DSP 處理器(Embedded Digital Signal Processor, EDSP) 嵌入式片上系統(tǒng)(System On Chip)第二章ARM主要采用32位指令集,Thumb 16位指令集ARM9處理器架構(gòu)ARM9處理器系列有兩個分支? 基于v4版本的 ARM9,典型的有 ARM9TDMI和ARM922T? 基于V5TE 或 V5TEJ架構(gòu)的 ARM9E,典型處理器有 ARM9EJ-S 和 ARM926EJ-S 等? 后面關(guān)于ARM9的介紹主要也是圍繞 ARM9E系列狀態(tài)寄存器?1個當(dāng)前程序狀態(tài)寄存器(CPSR)和5個備份狀態(tài)寄存器(SPSR)2VJ1
3、FT狀態(tài)寄存器結(jié)構(gòu)SPSR在處理器進(jìn)入異常模式時用來保存CPSR寄存器內(nèi)容,當(dāng)從異常退出時,用SPSR恢復(fù)CPSR的值流水線技術(shù)和哈佛體系結(jié)構(gòu)馮諾依曼體系將數(shù)據(jù)和指令全部存儲在同一個存儲器中哈佛體系中,指令存儲和數(shù)據(jù)存儲是分開的,指令的存取和數(shù)據(jù)的存取通過不同的 數(shù)據(jù)總線進(jìn)行內(nèi)存管理單元MMU作用CPU產(chǎn)生的虛擬地址被先送到MMU中,通過一定的映射,轉(zhuǎn)換為物理地址,然后進(jìn)行相應(yīng)的讀寫操作 有了 MMU,才能使用虛擬內(nèi)存第三章1立即尋址也叫立即數(shù)尋址,這是一種特殊的尋址方式,操作數(shù)沒有存儲在寄存器或存儲器中,而是包含在指令的操作碼中,只要取出指令也就取到了操作數(shù)。這個操作數(shù)被稱為立即數(shù),對應(yīng)的尋
4、址方式也就叫做立即尋址。例如指令:MOV RO, #OxFFOOO ;將立即數(shù) OxFFOOO裝入 R0寄存器ADD R1, R1, # 0x7f ; R1 R1 + 0x7f在以上兩條指令中,第二個源操作數(shù)即為立即數(shù),要求以為前綴,對于以十六進(jìn)制表示的立即數(shù),還要求在年”后加上“ Ox。2.寄存器尋址就是利用寄存器中的內(nèi)容作為操作數(shù),寄存器本身就是操作數(shù)地址。這種尋址方式是各類微處理器經(jīng)常采用的一種方式,也是一種執(zhí)行效率較高的尋址方式。 例如指令:MOV R2, R3;R2 R3R3中的內(nèi)容賦給 R2ADD R2, R3, R4;R2 R3+ R4R3和R4中的內(nèi)容相加,結(jié)果賦給 R23.寄
5、存器間接尋址就是以寄存器中的內(nèi)容作為操作數(shù)的地址,而操作數(shù)本身存放在存儲器中。例如指令:LDR R1 , R2;R1 R2STR R1, R2; R2 R1第一條指令將以 R2 中的內(nèi)容為地址,將該地址中的數(shù)據(jù)傳送到 R1 中。 第二條指令將 R1 中的內(nèi)容傳送到以 R2 中的內(nèi)容為地址的存儲器中。4.變址尋址就是將寄存器 (該寄存器一般稱作基址寄存器)的內(nèi)容與指令中給出的 地址偏移量相加, 從而得到一個操作數(shù)的有效地址。 變址尋址方式常用于訪問某基地址附近 的地址單元。例如指令:LDR R0 , R1 , 8 LDR R0 , R1 , 8!LDR R0 , R1, 2LDR R0 , R1
6、 , R2; R0R18; R0R1 8, R1R18 ; R0R1, R1R12; R0R1R25. 寄存器移位尋址 是 ARM 指令集獨有的尋址方式,操作數(shù)由寄存器的數(shù)值進(jìn)行相應(yīng) 移位而得到; 移位的方式在指令中以助記符的形式給出, 而移位的位數(shù)可用立即數(shù)或寄存器 尋址方式表示。6. 多寄存器尋址 方式,一條指令可以完成多個寄存器值的傳送。 這種尋址方式可以一次 對多個寄存器尋址,多個寄存器由小到大排列,最多可傳送 16 個寄存器。例如:LDMIA R1! , R2-R4 , R5 ; R2R1; R3R14; R4R18 ; R5R112該指令的后綴 IA 表示在每次執(zhí)行完加載 /存儲操
7、作后, R1 按字長度增加,因此, 指令可將連續(xù)存儲單元的值傳送到R2R5。7. 堆棧尋址 :堆棧是一種數(shù)據(jù)結(jié)構(gòu),按先進(jìn)后出(First In Last Out , FILO )的方式工作,使用一個稱作堆棧指針的專用寄存器指示當(dāng)前的操作位置,堆棧指針總是指向棧頂。當(dāng)堆棧指針指向最后壓入堆棧的數(shù)據(jù)時,稱為滿堆棧(Full Stack);而當(dāng)堆棧指針指向下一個將要放入數(shù)據(jù)的空位置時,稱為空堆棧( Empty Stack)。同時,根據(jù)堆棧的生成方式,又可以分為遞增堆棧(Asce nding Stack)和遞減堆棧(Dece ndi ng Stack),當(dāng)堆棧由低地址向高地址生成時,稱為遞增堆棧,當(dāng)堆
8、棧由高 地址向低地址生成時,稱為遞減堆棧。ARM 微處理器支持這四種類型的堆棧工作方式,即:滿遞增方式 FA(Full Ascending ):堆棧指針指向最后入棧的數(shù)據(jù)位置,且由低地址 向高地址生成。滿遞減方式 FD(Full Decending ):堆棧指針指向最后入棧的數(shù)據(jù)位置,且由高地址 向低地址生成。空遞增方式 EA ( Empty Ascending ):堆棧指針指向下一個入棧數(shù)據(jù)的空位置,且由 低地址向高地址生成??者f減方式 ED ( Empty Decending ):堆棧指針指向下一個入棧數(shù)據(jù)的空位置,且由 高地址向低地址生成。8. 相對尋址 :與基址變址尋址方式相類似, 相
9、對尋址以程序計數(shù)器 PC 的當(dāng)前值為基地址, 指令中的地址標(biāo)號作為偏移量,將兩者相加之后得到操作數(shù)的有效地址。以下程序段完成子程序的調(diào)用和返回,跳轉(zhuǎn)指令 BL 采用了相對尋址方式:BL NEXT ;跳轉(zhuǎn)到子程序 NEXT 處執(zhí)行NEXTMOV PC , LR ;從子程序返回1單一數(shù)據(jù)加載 /存儲指令1)LDR 指令格式為:LDR 條件 目的寄存器, LDR 指令是字加載指令,用于從存儲器中將一個32 位的字?jǐn)?shù)據(jù)傳送到目的寄存器中。指令示例:LDR R3, R4;將存儲器地址為LDRR3, R1 ,;將存儲器地址為LDRR3, R1 ,;將存儲器地址為LDRR3, R1 ,;將存儲器地址為LDR
10、R3, R1 ,;將存儲器地址為R4 的字?jǐn)?shù)據(jù)讀入寄存器R2R1+R2 的字?jǐn)?shù)據(jù)讀入寄存器 8R1+8 的字?jǐn)?shù)據(jù)讀入寄存器R2!R1+R2 的字?jǐn)?shù)據(jù)讀入寄存器 8 !R1+8 的字?jǐn)?shù)據(jù)讀入寄存器R3。R3。R3。R3,并將新地址 R1 + R2寫入 R1。R3,并將新地址 R1 + 8寫入R1。應(yīng)用示例:LDR R3, R4;將R4指向地址的字?jǐn)?shù)據(jù)存入 R3* XR0x4000000R0x550x1234567地址F00存儲器LDR R3, R1 , R2;將存儲器地址為 R1的字?jǐn)?shù)據(jù)讀入寄存器 R3,并將新地址 R1 + R2寫入R1。LDR R3,R1,R2,LSL # 3!;將存儲器地址
11、為 R1 + R2 X 8的字?jǐn)?shù)據(jù)讀入寄存器 R3,并將新地址 R1 + R2 X 8寫入R1。LDR R3, R1 , R2, LSL # 3;將存儲器地址為 R1的字?jǐn)?shù)據(jù)讀入寄存器 R3,并將新地址 R1 + R2X 8寫入R1。 注:R15不可以作為偏移寄存器使用。(2) LDRB 指令格式為:LDR條件B目的寄存器, 存儲器地址LDRB指令是字節(jié)加載指令,用于從存儲器中將一個8位的字節(jié)數(shù)據(jù)傳送到目的寄存器中,同時將寄存器的高 24位清零。該指令通常用于從存儲器中讀取8位的字節(jié)數(shù)據(jù)到通用寄存器,然后對數(shù)據(jù)進(jìn)行處理。指令示例:LDRB R3, R1;將存儲器地址為 R1的字節(jié)數(shù)據(jù)讀入寄存器
12、 R0,并將R3的高24位清零。LDRB R3 , R1 , # 8;將存儲器地址為 R1 + 8的字節(jié)數(shù)據(jù)讀入寄存器 R3,并將R3的高24位清零。(3) LDRH 指令格式為:LDR條件H目的寄存器, 存儲器地址LDRH指令是無符號半字加載指令,用于從存儲器中將一個16位的半字?jǐn)?shù)據(jù)傳送到目的寄存器中,同時將寄存器的高16位清零。該指令通常用于從存儲器中讀取16位的半字?jǐn)?shù)據(jù)到通用寄存器,然后對數(shù)據(jù)進(jìn)行處理。指令示例:LDRH R3, R1;將存儲器地址為 R1的半字?jǐn)?shù)據(jù)讀入寄存器 R3,并將R3的高16位清零。LDRH R3, R1 , # 8;將存儲器地址為 R1 + 8的半字?jǐn)?shù)據(jù)讀入寄存
13、器 R3,并將 R3 的高 16 位清零。LDRH R3, R1 , R2 ;將存儲器地址為 R1 R2 的半字?jǐn)?shù)據(jù)讀入寄存器 R3,并將R3的高16位清零。(4)STR 指令格式為:STR 條件 源寄存器, STR 指令是字存儲指令,用于從源寄存器中將一個 32 位的字?jǐn)?shù)據(jù)傳送到存儲器 中。該指令在程序設(shè)計中比較常用,且尋址方式靈活多樣,使用方式可參考指令LDR 。指令示例:STR R3,R1, 8;將R3中的字?jǐn)?shù)據(jù)寫入以 R1為地址的存儲器中,并將新地址R1 + 8寫入R1。STR R3,R1 , 8;將R3中的字?jǐn)?shù)據(jù)寫入以 R1 + 8為地址的存儲器中。(5)STRB 指令格式為:STR
14、 條件 B 源寄存器, STRB 指令是無符號字節(jié)存儲指令,用于從源寄存器中將一個 8 位的字節(jié)數(shù)據(jù)傳 送到存儲器中。該字節(jié)數(shù)據(jù)為源寄存器中的低 8位。指令示例:STRB R3 , R1;將寄存器 R3 中的字節(jié)數(shù)據(jù)寫入以 R1 為地址的存儲器中。STRB R3 , R1, 8;將寄存器R3中的字節(jié)數(shù)據(jù)寫入以 R1 + 8為地址的存儲器中。(6)STRH 指令 格式為:STR 條件 H 源寄存器, STRH 指令是無符號半字存儲指令, 用于從源寄存器中將一個 1 6位的半字?jǐn)?shù)據(jù)傳 送到存儲器中。該半字?jǐn)?shù)據(jù)為源寄存器中的低 16位。指令示例:STRH R3, R1;將寄存器 R3 中的半字?jǐn)?shù)據(jù)寫
15、入以 R1 為地址的存儲器中。STRH R3, R1,8;將寄存器R3中的半字?jǐn)?shù)據(jù)寫入以 R1 + 8為地址的存儲器中。2批量數(shù)據(jù)加載 /存儲指令A(yù)RM 微處理器所支持批量數(shù)據(jù)加載/存儲指令可以一次在一片連續(xù)的存儲器單元和多個寄存器之間傳送數(shù)據(jù),批量加載指令用于將一片連續(xù)的存儲器中的數(shù)據(jù)傳送到多個寄 存器,批量數(shù)據(jù)存儲指令則完成相反的操作。數(shù)據(jù)處理指令只能對寄存器的內(nèi)容進(jìn)行操作,不允許對存儲器中的數(shù)據(jù)進(jìn)行操作, 也不允許指令直接使用存儲器的數(shù)據(jù)或在寄存器與存儲器之間傳送數(shù)據(jù)。 數(shù)據(jù)處理指令可分為 3 大類:數(shù)據(jù)傳送指令算術(shù)邏輯運算指令比較指令數(shù)據(jù)傳送指令用于在寄存器和寄存器之間進(jìn)行數(shù)據(jù)的雙向傳
16、輸。 算術(shù)邏輯運算指令完成常用的算術(shù)與邏輯的運算,該類指令不但將運算結(jié)果保存在 目的寄存器中,同時更新 CPSR 中的相應(yīng)條件標(biāo)志位。比較指令是完成對指定的兩個寄存器(或 1 個寄存器, 1 個立即數(shù))進(jìn)行比較,不 保存運算結(jié)果,只影響 CPSR 中相應(yīng)的條件標(biāo)志位。1.數(shù)據(jù)傳送指令 MOV 和 MVN( 1) MOV 指令格式為:MOV 條件 S 目的寄存器,源操作數(shù)MOV 指令可完成在寄存器之間或寄存器與第 2 操作數(shù)之間進(jìn)行數(shù)據(jù)傳送。其中 S 選項決定指令的操作是否影響 CPSR 中條件標(biāo)志位的值,當(dāng)沒有 S 時指 令不更新 CPSR 中條件標(biāo)志位的值。指令示例:MOV R4, R5;將
17、寄存器 R5 的內(nèi)容傳送到寄存器 R4MOV PC, R14;將寄存器R14的內(nèi)容傳送到PC,常用于子程序返回MOVNE R4 , R5, LSL 2;當(dāng) Z=0 時,將寄存器 R5 的內(nèi)容邏輯左移 2位后傳送到 R4( 2) MVN 指令格式為:MVN條件S 目的寄存器,源操作數(shù)MVN 指令可完成在寄存器之間或寄存器與第 2 操作數(shù)之間進(jìn)行數(shù)據(jù)非傳送。與MOV 指令不同之處是在傳送之前按位被取反了, 即把一個被取反的值傳送到目的寄存器中。其中S決定指令的操作是否影響 CPSR中條件標(biāo)志位的值,當(dāng)沒有 S時指令不更新CPSR 中條件標(biāo)志位的值。指令示例:MVN R0, 1;將立即數(shù) 1 取反傳
18、送到寄存器 R0 中MVN R1,R2;將 R2 取反,結(jié)果存到 R12.算術(shù)邏輯運算指令(1)ADD 指令格式為:ADD 條件 S 目的寄存器,操作數(shù) 1,操作數(shù) 2ADD 指令是加法指令,用于把兩個操作數(shù)相加,并將結(jié)果存放到目的寄存器中。操作數(shù) 1 應(yīng)是一個寄存器。操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù) 。指令示例:ADDS R0,R3, R4; R0 = R3 + R4 ,設(shè)置標(biāo)志位ADDS R0,R3, #10; R0 = R3 + 10ADDR0,R2, R3, LSL#2;RO = R2 + R3 X 4( 2) ADC 指令 格式為:ADC 條件 S 目的寄存
19、器,操作數(shù) 1,操作數(shù) 2 ADC 指令是帶進(jìn)位加法指令,用于把兩個操作數(shù)相加,再加上CPSR 中的 C 條件標(biāo)志位的值,并將結(jié)果存放到目的寄存器中。它使用一個進(jìn)位標(biāo)志位,這樣就可以做比32 位大的數(shù)的加法,注意不要忘記設(shè)置 S 后綴來更改進(jìn)位標(biāo)志。操作數(shù) 1 應(yīng)是一個寄存器。操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。 以下指令序列實現(xiàn) 64位二進(jìn)制數(shù)的加法:R2、R1= R2、 R1+ R4、R3ADDS R1,R1, R3; R1= R1+ R3ADCR2, R2,R4; R2= R2+ R4+C( 3) SUB 指令 格式為:SUB 條件 S 目的寄存器,操作數(shù) 1,操
20、作數(shù) 2SUB 指令是減法指令,用于把操作數(shù) 1 減去操作數(shù) 2,并將結(jié)果存放到目的寄存 器中。該指令可用于有符號數(shù)或無符號數(shù)的減法運算。操作數(shù) 1 應(yīng)是一個寄存器。操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。 當(dāng)指令包含后綴” S時,如果減法運算有借位,則C=0 ,否者C=1。指令示例:SUBS RO, R3, R4; RO = R3 -R4,設(shè)置標(biāo)志位SUB RO, R1 , #Ox1O; RO = R1 - Ox 1OSUB RO, R2, R3, LSL#1; RO = R2 - (R3 1)( 4) SBC 指令 格式為:SBC條件S目的寄存器,操作數(shù) 1,操作數(shù)2S
21、BC 指令是帶借位減法指令,用于把操作數(shù) 1 減去操作數(shù) 2,再減去 CPSR 中的 C 條件標(biāo)志位的反碼, 并將結(jié)果存放到目的寄存器中。 該指令可用于有符號數(shù)或無符號數(shù)的減 法運算。操作數(shù) 1 應(yīng)是一個寄存器。操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。該指令使用進(jìn)位標(biāo) 志來表示借位,這樣就可以做大于 32位的減法,注意不要忘記設(shè)置 S后綴來更改進(jìn) 位標(biāo)志。指令示例:SBC R2, R2, R4; R2 = R2 -R4-!C( 5) RSB 指令格式為:RSB條件S目的寄存器,操作數(shù) 1,操作數(shù)2RSB指令是反減法指令, 用于把操作數(shù)2減去操作數(shù)1,并將結(jié)果存放到目的寄存
22、器中。該指令可用于有符號數(shù)或無符號數(shù)的減法運算。操作數(shù) 1 應(yīng)是一個寄存器。操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。指令示例:RSBR0, R1 , R2; R0 = R2 - R1RSBR0,R1 ,#0x10 ;R0 =0x10 -R1RSBR0,R2,R3, LSL#1;R0 =R3X2 - R2(6)RSC 指令格式為:RSC條件S目的寄存器,操作數(shù)1,操作數(shù) 2RSC指令是帶借位反減法指令,用于把操作數(shù)2減去操作數(shù)1,再減去CPSR中的C條件標(biāo)志位的反碼, 并將結(jié)果存放到目的寄存器中。 該指令可用于有符號數(shù)或無符號數(shù)的減法 運算。操作數(shù) 1 應(yīng)是一個寄存器。操作數(shù)
23、 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。指令示例:RSCS R6, R4, R3, LSL #1 ;R6 = R3 X 2 -R4+C -1同時刷新標(biāo)志位( 7) AND 指令 格式為:AND條件S目的寄存器,操作數(shù) 1,操作數(shù)2AND 指令是邏輯與指令,用于在兩個操作數(shù)上進(jìn)行邏輯與運算,并把結(jié)果放置到目的 寄存器中。該指令常用于屏蔽操作數(shù) 1 的某些位。操作數(shù) 1 應(yīng)是一個寄存器。操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。指令示例:AND R5, R6, R8;R5=R6 A R8AND R2, R2, 3; 該指令保持 R2 的 0、1 位,其余位清零。(
24、8) ORR 指令格式為:ORR條件S目的寄存器,操作數(shù) 1,操作數(shù)2ORR 指令是邏輯或指令, 用于在兩個操作數(shù)上進(jìn)行邏輯或運算, 并把結(jié)果放置到目 的寄存器中。該指令常用于設(shè)置操作數(shù) 1 的某些位。操作數(shù) 1 應(yīng)是一個寄存器。操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。指令示例:ORR R5, R6, R8;R5=R6 V R8ORRR2,R2, 3;該指令設(shè)置R2的0、1位,其余位保持不變。( 9) EOR 指令 格式為:EOR條件S目的寄存器,操作數(shù) 1,操作數(shù)2EOR 指令是邏輯異或指令,用于在兩個操作數(shù)上進(jìn)行邏輯異或運算,并把結(jié)果放 置到目的寄存器中。該指令常用于反
25、轉(zhuǎn)操作數(shù) 1 的某些位。操作數(shù) 1 應(yīng)是一個寄存器。操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。指令示例:EORR5, R6, R8;R5=R6+R8EORR2, R2, 3; 該指令反轉(zhuǎn) R2 的 0、 1 位,其余位保持不變。(10)BIC 指令格式為:BIC 條件 S 目的寄存器,操作數(shù) 1,操作數(shù) 2BIC 指令是位清除指令, 用于清除操作數(shù) 1的某些位(操作數(shù) 1 與操作數(shù) 2的反碼 按位做與運算),并把結(jié)果放置到目的寄存器中。操作數(shù) 1 應(yīng)是一個寄存器。操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。指令示例:BIC R0, R2, 3;清除 R2 中的
26、位 0、 1,其余的位保持不變。BICS R0, R2, 0x80000000 ;清除 R2 中的位 31,其余的位保持不變,刷新標(biāo)志位。(11)MUL 指令 格式為:MUL 條件 S 目的寄存器,操作數(shù) 1,操作數(shù) 2MUL 指令是乘法指令, 完成將操作數(shù) 1 與操作數(shù) 2 的乘法運算, 并把結(jié)果放置到目 的寄存器中,同時可以根據(jù)運算結(jié)果設(shè)置 CPSR中相應(yīng)的條件標(biāo)志位 (不會影響V )。其中, 操作數(shù) 1 和操作數(shù) 2 均為 32 位的有符號數(shù)或無符號數(shù)。指令示例:MULR0, R4, R5;R0 = R4 X R5 MULS R0 , R4, R5;R0 = R4 X R5,同時設(shè)置條件
27、標(biāo)志位 ( 12 ) MLA 指令格式為:MLA 條件 S 目的寄存器,操作數(shù) 1,操作數(shù) 2,操作數(shù) 3MLA 指令是乘加指令,完成將操作數(shù) 1 與操作數(shù) 2 的乘法運算,再將乘積加上操 作數(shù)3,并把結(jié)果放置到目的寄存器中,同時可以根據(jù)運算結(jié)果設(shè)置CPSR中相應(yīng)的條件標(biāo)志位(不會影響 V)。其中,操作數(shù) 1 和操作數(shù) 2 均為 32位的有符號數(shù)或無符號數(shù)。 指令示例:MLAR0,R1, R2, R3;RO = R1 X R2 + R3MLASR0,R1 , R2, R3; RO = R1 X R2 + R3 ,同時設(shè)置 CPSR 中的相關(guān)條件標(biāo)志位( 1 3) SMULL 指令 格式為:SM
28、ULL 條件 S 目的寄存器 Low ,目的寄存器 High ,操作數(shù) 1,操作數(shù) 2SMULL 指令是帶符號長乘法指令,完成將操作數(shù) 1 與操作數(shù) 2 的乘法運算,并把 結(jié)果的低 32 位放置到目的寄存器 Low 中,結(jié)果的高 32 位放置到目的寄存器 High 中,同時 可以根據(jù)運算結(jié)果設(shè)置 CPSR 中相應(yīng)的條件標(biāo)志位。其中,操作數(shù) 1 和操作數(shù) 2 均為 32 位的有符號數(shù)。 指令示例:SMULLR1 ,R2,R3, R4;R1 = (R3 X R4)的低 32 位;R2 = (R3 X R4)的高 32 位( 14) SMLAL 指令格式為:SMLAL條件S目的寄存器Low,目的寄存
29、器 High,操作數(shù)1,操作數(shù)2SMLAL 指令是長乘加指令,完成將操作數(shù) 1 與操作數(shù) 2 的乘法運算,并把結(jié)果的低32 位同目的寄存器 Low 中的值相加后又放置到目的寄存器 Low 中,結(jié)果的高 32位同目的 寄存器 High 中的值相加后又放置到目的寄存器 High 中,同時可以根據(jù)運算結(jié)果設(shè)置 CPSR 中相應(yīng)的條件標(biāo)志位。其中,操作數(shù) 1 和操作數(shù) 2 均為 32 位的有符號數(shù)。對于目的寄存器Low,在指令執(zhí)行前存放 64位加數(shù)的低32位,指令執(zhí)行后存放結(jié) 果的低 32位。對于目的寄存器 High,在指令執(zhí)行前存放 64位加數(shù)的高32位,指令執(zhí)行后存放結(jié) 果的高 32位。指令示例:
30、SMLAL R1 , R2, R3, R4;R1 =(R3 X R4)的低 32 位 + R1;R2 =(R3X R4)的高 32 位 + R2( 15) UMULL 指令格式為:UMULL條件S目的寄存器Low,目的寄存器High,操作數(shù)1,操作數(shù)2UMULL 指令是無符號乘法指令,完成將操作數(shù) 1 與操作數(shù) 2 的乘法運算,并把結(jié) 果的低32位放置到目的寄存器 Low中,結(jié)果的高32位放置到目的寄存器 High中,同時可 以根據(jù)運算結(jié)果設(shè)置 CPSR 中相應(yīng)的條件標(biāo)志位。其中,操作數(shù) 1 和操作數(shù) 2 均為 32 位的無符號數(shù)。指令示例:UMULL R1 , R2, R3, R4;R1 =
31、 (R3 X R4)的低 32 位;R2 = (R3 X R4)的高 32 位( 16 ) UMLAL 指令格式為:UMLAL條件S目的寄存器Low,目的寄存器低 High,操作數(shù)1,操作數(shù)2UMLAL 指令是無符號長乘法指令, 完成將操作數(shù) 1 與操作數(shù) 2 的乘法運算, 并把 結(jié)果的低 32 位同目的寄存器 Low 中的值相加后又放置到目的寄存器 Low 中,結(jié)果的高 32 位同目的寄存器 High 中的值相加后又放置到目的寄存器 High 中,同時可以根據(jù)運算結(jié)果設(shè) 置CPSR中相應(yīng)的條件標(biāo)志位。其中,操作數(shù)1和操作數(shù)2均為32位的無符號數(shù)。對于目的寄存器Low,在指令執(zhí)行前存放 64位
32、加數(shù)的低32位,指令執(zhí)行后存放結(jié) 果的低 32位。對于目的寄存器 High,在指令執(zhí)行前存放 64位加數(shù)的高32位,指令執(zhí)行后存放結(jié) 果的高 32位。指令示例:UMLAL R1 , R2, R3, R4; R1 =( R3X R4) 的低 32 位 R1; R2 =( R3X R4) 的高 32 位 R2( 1) CMP 指令格式為:CMP 條件 操作數(shù) 1,操作數(shù) 2CMP 指令是比較指令,該指令是做一次減法運算,但不存儲結(jié)果,只是刷新條件 標(biāo)志位,根據(jù)條件標(biāo)志位判斷操作數(shù)的大小。對條件位的影響是: 結(jié)果為正數(shù)則N=0,結(jié)果為負(fù)數(shù)則 N=1 ;結(jié)果為0則Z=1,結(jié) 果不為0則Z=0 ;如果產(chǎn)
33、生借位則 C=0,沒有借位則 C=1 ;結(jié)果是符號溢出則 V=1,否則V=0 。指令示例:CMP R1, #0x30ADDCS R5,R5,#0x20ADDCC R5,R5,#0x10( 2) CMN 指令格式為:;比較 R1 和 0x30;如果 C=1 ,則 R5=R5+0x20;如果 C=0 ,則 R5=R5+0x10CMN 條件 操作數(shù) 1,操作數(shù) 2CMN 指令是比較非指令,也是做一次減法運算,用第 1 操作數(shù)減去第 2 操作數(shù)的 非值,結(jié)果不保存,只是刷新條件標(biāo)志位,對條件標(biāo)志位的影響和比較指令CMP 相同。指令示例:CMNR1, #0x00;比較 R1 和 0xFFFFFFFFAD
34、DCS R5,R5,#0x20;如果 C=1,貝y R5=R5+0x20ADDCC R5,R5,#0x10;如果 C=0,貝U R5=R5+0x10( 3) TST 指令格式為:TST條件操作數(shù)1,操作數(shù)2TST 指令是位測試指令, 用于把一個寄存器的內(nèi)容和另一個寄存器的內(nèi)容或立即數(shù)進(jìn) 行按位的與運算,并根據(jù)運算結(jié)果更新 CPSR 中條件標(biāo)志位的值。 指令示例:TST R2,0x01;將寄存器 R1 的值與立即數(shù) 0x01 按位與,并根據(jù)結(jié)果設(shè)置 CPSR 的標(biāo)志位,用來判斷 R2 中最低位是否為 0。第四章uCLinux 是專門針對沒有 MMU 的處理器而設(shè)計的, 即 uCLinux 無法使
35、用 處理器的虛擬內(nèi)存管理技術(shù)。uCLinux 采用實存儲器管理策略,通過地址總線對物理內(nèi)存進(jìn)行直接訪問。RT-Linux 開發(fā)者并沒有針對實時操作系統(tǒng)的特性而重寫 Linux 的內(nèi)核,而 是通過在 Linux 內(nèi)核與硬件中斷之間增加一個精巧的可搶先的實時內(nèi)核, 把標(biāo)準(zhǔn)的 Linux 內(nèi)核作為實時內(nèi)核的一個進(jìn)程與用戶進(jìn)程一起調(diào)度。 內(nèi)存管理和 MMU存儲管理包含 :? 地址映射? 內(nèi)存空間的分配? 地址訪問的限制(即保護(hù)機制)? I/O 地址的映射? 代碼段、數(shù)據(jù)段、堆棧段空間的分配。MMU ,即內(nèi)存管理單元,其主要作用是兩個方面:一是地址映射;二是 對地址訪問的保護(hù)和限制。進(jìn)程和進(jìn)程管理進(jìn)程是
36、一個運行程序并為其提供執(zhí)行環(huán)境的實體, 它包括一個地址空間和 至少一個控制點,進(jìn)程在這個地址空間上執(zhí)行單一指令序列。進(jìn)程調(diào)度主要是協(xié)調(diào)進(jìn)程對計算機系統(tǒng)內(nèi)資源(如CPU、內(nèi)存、I/O設(shè)備)的爭奪使用?搶占式調(diào)度?非搶占式調(diào)度RT-Linux有兩種中斷:硬中斷和軟中斷Linux進(jìn)程的調(diào)度?分時調(diào)度策略(SCHED_OTHER)?先到先服務(wù)的實時調(diào)度策略(SCHED_FIFO)?時間片輪轉(zhuǎn)的實時調(diào)度策略(SCHED_RR)文件系統(tǒng)定義:包含在磁盤驅(qū)動器或者磁盤分區(qū)的目錄結(jié)構(gòu),整個磁盤空間可以給一個或者多個文件系統(tǒng)使用。第五章Boot Loader基本概念初始化處理器以及外設(shè)的硬件資源, 配置SDRA
37、M控制器,為主程序提供運行環(huán) 境?串口,提供交互終端?網(wǎng)絡(luò),傳輸鏡像文件 ?其他I/O設(shè)備執(zhí)行系統(tǒng)自檢,報告檢測結(jié)果引導(dǎo)操作系統(tǒng)根據(jù)系統(tǒng)命令燒寫鏡像文件Boot Loader的操作模式啟動加載模式:?也稱為自主”模式,從目標(biāo)機上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng) 加載到RAM中運行,整個過程并沒有用戶的介入?下載模式:?目標(biāo)機上的Boot Loader將通過串口連接或網(wǎng)絡(luò)連接等通信手段從 主機下載文件,比如:下載內(nèi)核映像和根文件系統(tǒng)映像等Boot Loader與主機之間的通信設(shè)備及協(xié)議目標(biāo)機上的Boot Loader通過串口與主機之間進(jìn)行文件傳輸? xmodem? ymodem? zmodem?以
38、太網(wǎng)連協(xié)議? TFTPBoot Loader的典型結(jié)構(gòu)Boot Loader的階段1通常包括以下步驟:1. 硬件設(shè)備初始化。2. 為加載Boot Loader的階段2準(zhǔn)備RAM空間。3. 拷貝Boot Loader的階段2到RAM空間中。4. 設(shè)置好堆棧。5. 跳轉(zhuǎn)到階段2的C入口點。Boot Loader的階段2通常包括以下步驟:1. 初始化本階段要使用到的硬件設(shè)備。2. 檢測系統(tǒng)內(nèi)存映射(memory map)。3. 將kernel映像和根文件系統(tǒng)映像從 Flash讀到RAM空間中4. 為內(nèi)核設(shè)置啟動參數(shù)。5. 調(diào)用內(nèi)核。第六章? Linux版本號格式主版本號.次版本號.修正號2.2.5為
39、奇數(shù)時表次版本號為偶數(shù)時表示是穩(wěn)定版本,如: 示測試版本?中斷是一個流程,?中斷響應(yīng)般來說,它要經(jīng)過三個環(huán)節(jié):?中斷處理?中斷返回由用戶態(tài)進(jìn)入N_-一一一一一由系統(tǒng)態(tài)進(jìn)入i 尸由中斷或者快中斷進(jìn)入(不允許) 4 irq user()保存中斷環(huán)境irq svc()保存中斷環(huán)境_irq_i nvalid()XT - 一一-_(宏)get_ir qnr_an d_base()檢查中斷狀態(tài)寄存器判斷是否確 實有中斷請求返回中斷源號vectorIRQ中斷響應(yīng)總?cè)肟跁捍嬷袛喾祷氐刂窌捍?spsr寄存器的值循環(huán)判斷t中斷狀態(tài)寄存器非doRQ() do_softirq()具體執(zhí)行中斷服務(wù)程序 執(zhí)行軟中斷服務(wù)程
40、序如果是從用戶態(tài)中斷進(jìn)入的 則檢查是否要調(diào)度,然后返回。如果是從系統(tǒng)態(tài)中斷進(jìn)入的 則直接返回普通桌面操作系統(tǒng)的文件系統(tǒng)設(shè)備 i設(shè)備 設(shè)備第七章AP文件AP文件文件文件AP操作系統(tǒng)AP文件系統(tǒng)API嵌入式操作系統(tǒng)的文件系統(tǒng)的設(shè)計目標(biāo)?(1)使用簡單方便?( 2)安全可靠?( 3)實時響應(yīng)?( 4)接口標(biāo)注的開放性和可移植性?( 5)可伸縮性和可配置性?( 6)開放的體系結(jié)構(gòu)?( 7)資源有效性?( 8)功能完整性?( 9)熱插拔?( 10)支持多種文件類型大部分操作系統(tǒng)都是由文件管理器來使用設(shè)備API,而對上層用戶空間的應(yīng)用程序提供文件API在特殊的環(huán)境下才允許用戶通過設(shè)備 API訪問硬件設(shè)備
41、嵌入式Linux中三種常用的塊驅(qū)動程序(1)Blkmem驅(qū)動層(2)RamDisk 驅(qū)動層(3)MTD驅(qū)動層根文件系統(tǒng)第八章Linux驅(qū)動程序簡介 設(shè)備驅(qū)動程序是操作系統(tǒng)內(nèi)核和機器硬件之間的接口 設(shè)備驅(qū)動程序為應(yīng)用程序屏蔽了硬件的細(xì)節(jié), 在應(yīng)用程序看來, 硬件設(shè)備 只是一個設(shè)備文件 , 應(yīng)用程序可以像操作普通文件一樣對硬件設(shè)備進(jìn)行 操作 設(shè)備驅(qū)動程序是內(nèi)核的一部分,它完成以下的功能:(1)對設(shè)備的初始化和釋放。(2)把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù)到內(nèi)核。(3)讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請求的 數(shù)據(jù)。這需要在用戶空間, 內(nèi)核空間,總線以及外設(shè)之間傳輸數(shù)據(jù)。(4)檢測和
42、處理設(shè)備出現(xiàn)的錯誤。設(shè)備的分類? 字符設(shè)備無需緩沖直接讀寫的設(shè)備,如系統(tǒng)的串口設(shè)備 /dev/cua0 和 /dev/cua1? 塊設(shè)備以塊為單位進(jìn)行讀寫,典型的塊大小為 512 或 1024 字節(jié); 塊設(shè)備的存取是通過 buffer、cache 來進(jìn)行并且可以隨機訪 問,即不管塊位于設(shè)備中何處都可以對其進(jìn)行讀寫? 網(wǎng)絡(luò)設(shè)備通過 BSD 套接口訪問設(shè)備文件? Linux 抽象了對硬件的處理,所有的硬件設(shè)備都可以作為普通文件 一樣來看待: 它們可以使用和操作文件相同的、 標(biāo)準(zhǔn)的系統(tǒng)調(diào)用接 口來完成打開、關(guān)閉、讀寫和 I/O 控制操作,而驅(qū)動程序的主要任 務(wù)也就是要實現(xiàn)這些系統(tǒng)調(diào)用函數(shù)? Linux 為文件和設(shè)備提供了一致的用戶接口。對用戶來說,設(shè)備文 件與普通文件并無區(qū)別主設(shè)備號和次設(shè)備號? 主設(shè)備號 標(biāo)識該設(shè)備的種類,也標(biāo)識了該設(shè)備所使用的驅(qū)動程序? 次設(shè)備號標(biāo)識使用同一設(shè)備驅(qū)動程序的不同硬件設(shè)備? 已經(jīng)注冊的硬件設(shè)備的主設(shè)備號可以從 /proc/devices 文件中得到? 使用 mknod 命令可以創(chuàng)建指定類型的設(shè)備文件,并為其分配主次 設(shè)備號。? # mknod /dev/lp0 c 6 0Linux 設(shè)備驅(qū)動程序的特點? ( 1)內(nèi)核代碼? ( 2)內(nèi)核接口? ( 3)內(nèi)核機制與服務(wù)(4) 可加載(5) 可配置(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 經(jīng)濟法概論考試模擬題及答案分析
- 2025年執(zhí)業(yè)醫(yī)師考試備考寶典試題及答案
- 藥學(xué)行業(yè)的持續(xù)教育與再培訓(xùn)重要性試題及答案
- 思維導(dǎo)圖法復(fù)習(xí)執(zhí)業(yè)醫(yī)師考試試題及答案
- 公司創(chuàng)新投資評估
- 2025主管護(hù)師考試必讀材料試題及答案
- 護(hù)理臨床技能操作標(biāo)準(zhǔn)試題及答案
- 2025年中國文化概論考試內(nèi)容概要與試題及答案
- 策略性備考指導(dǎo)2025年執(zhí)業(yè)醫(yī)師考試試題及答案
- ??谱o(hù)理應(yīng)知試題及答案
- 大跨度連續(xù)梁線型監(jiān)控課件
- 產(chǎn)品開發(fā)設(shè)計課件
- 室內(nèi)設(shè)計綜合施工圖制作教案
- 新部編版四年級下冊道德與法治全冊優(yōu)秀教學(xué)課件(1-12課)
- 公司送電工作票
- 上期開特下期出特公式
- 案件進(jìn)度管理規(guī)定表--執(zhí)行
- 美國藥品批發(fā)行業(yè)發(fā)展歷程譯稿
- 十字頭零件的加工工藝規(guī)程及精車外圓工裝夾具畢業(yè)設(shè)計(機械CAD圖紙)
- 含公式新財務(wù)報表模板 包括:三大報表、所有者權(quán)益變動表、和相關(guān)指標(biāo)計算
- 移動通信終端NS_IOT測試解析
評論
0/150
提交評論