欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: ARM知識點整理 [打印本頁]

作者: qq8426030    時間: 2014-7-14 15:25
標題: ARM知識點整理

國內嵌入式行業一個普遍認同的定義是:以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適應應用系統對功能,可靠性,成本,體積,功耗嚴格要求的專業計算機系統。從這個定義可以看出嵌入式系統是與應用緊密結合的,它具有很強的專用性,必須結合實際系統需求進行合理的剪裁利用。因此有人把嵌入式系統比作是一個針對特定的應用而“量身定做”的專業計算機系統。
l 嵌入式實時操作系統是指在限定的時間內對輸入進行快速處理并作出響應的嵌入式系統
l 趨勢:1.隨著信息化與數字化的發展,嵌入式設備進行網絡互聯是未來發展的趨勢。2.優化嵌入式系統軟硬件內核,提高系統運行速度,降低功耗和硬件成本。3.指令集的并行計算技術將引入嵌入式微處理器。4.嵌入式微處理器將會向多核技術發展。5.嵌入式技術將引領信息時代。
l 命名:ARM7 T D M I S 中,ARMAdvanced RISC Machines的縮寫,7是系列號;T:支持高密度16位的Thumb指令集;D:支持JTAG片上調試;M:支持用于長乘法操作(64位結果)ARM指令,包含快速乘法器;;I:帶有嵌入式追蹤宏單元ETM,用來設置斷點和觀察點的調試硬件;S:可綜合版本,意味著處理器內核是以源代碼形式提供的。這種源代碼形式又可以編譯成一種易于EDA工具使用的形式。
l 取指:從指令Cache中讀取指令。譯碼:對指令進行譯碼,識別出是對哪個寄存器進行操作并從通用寄存器中讀取操作數。執行:進行ALU運算和移位操作,如果是對存儲器操作的指令,則在ALU中計算出要訪問的存儲器地址。存儲器訪問:如果是對存儲器訪問的指令,用來實現數據緩沖功能(通過數據Cache)。寄存器回寫:將指令運算或操作結果寫回到目標寄存器中。
l 1.用戶模式:非特權模式,也就是正常程序執行的模式,大部分任務在這種模式下執行。在用戶模式下,如果沒異常發生,不允許應用程序自行改變處理器的工作模式,如果有異常發生,處理器會自動切換工作模式2FIQ模式:也稱為快速中斷模式,支持高速數據傳輸和通道處理,當一個高優先級(fast)中斷產生時將會進入這種模式。3IRQ模式:也稱為普通中斷模式,:當一個低優先級(normal)中斷產生時將會進入這種模式。在這模式下按中斷的處理器方式又分為向量中斷和非向量中斷兩種。通常的中斷處理都在IRQ模式下進行。4SVC模式:稱之為管理模式,它是一種操作系統保護模式。當復位或軟中斷指令執行時處理器將進入這種模式。5.中止模式:當存取異常時將會進入這種模式,用來處理存儲器故障、實現虛擬存儲或存儲保護。6.未定義指令異常模式:當執行未定義指令時會進入這種模式,主要是用來處理未定義的指令陷阱,支持硬件協處理器的軟件仿真,因為未定義指令多發生在對協處理器的操作上。7.系統模式:使用和User模式相同寄存器組的特權模式,用來運行特權級的操作系統任務。在這7種工作模式中,除了用戶模式以外,其他6種處理器模式可以稱為特權模式,在這些模式下,程序可以訪問所有的系統資源,也可以任意地進行處理器模式的切換。在這6種特權模式中,除了系統模式外的其他5種特權模式又稱為異常模式,每種異常都對應有自己的異常處理入口點。  
l 在異常發生后:1.在適當的LR中保存下一條指令的地址2.CPSR復制到適當的SPSR中;3. CPSR模式位強制設置為與異常類型相對應的值;4.強制PC從相關的異常向量處取指。當異常結束時,異常處理程序必須:1.LR中的值減去偏移量后存入PC,偏移量根據異常的類型而有所不同;2.SPSR的值復制回CPSR3.清零在入口置位的中斷禁止標志。
l 小端存儲器系統: 在小端格式中,高位數字存放在高位字節中。因此存儲器系統字節0連接到數據線70  大端存儲器系統:在大端格式中,高位數字存放在低位字節中。因此存儲器系統字節0連接到數據線3124  
l 立即數必須由18位的常數通過進行32位循環右移偶數位得到,其中循環右移的位數由一個4位二進制的兩倍表示。即一個8位的常數通過循環右移2*rotate_4位(即0,2,4,。。。30)得到
l 數據處理指令尋址方式具體可分為5種類型:1)第二操作數為立即數2)第二操作數為寄存器3)第二操作數為寄存器移位方式且移位的位數為一個5位立即數4)第二操作數為寄存器移位方式且移位數值放在寄存器中5)第二操作數位寄存器進行RRX移位得到。如果PC R15)用作目標寄存器,指令會產生不可預知的結果。
l 后增IA :每次數據傳送后地址加4 先增IB :每次數據傳送前地址加4   后減DA:每次數據傳送后地址減4 先減DB (Decrement Before) :每次數據傳送前地址減4   
l 滿遞增堆棧FA:堆棧指針指向最后壓入的數據,且由低地址向高地址生成。滿遞減堆棧FD:堆棧指針指向最后壓入的數據,且由高地址向低地址生成。空遞增堆棧EA:堆棧指針指向下一個要放入數據的空位置,且由低地址向高地址生成。空遞減堆棧ED:堆棧指針指向下一個要放入數據的空位置,且由高地址向低地址生成。 l LDRH R0,[R1,#4]R0---R1+4】半字,R0的高16位清零。LDRSB R0,[R2,#-2]!R0---R2-2】字節,R0有符號擴展為32位,R2=R2-2STRB R1,[R2,#0Xa0];【R2+0Xa0】《----R18位。LDMIA R0,{R1,R2,R8} ;將內存單元【R0~R+11】以字為單位讀取到R1R2R8中。STMDB R0!,{R1-R5,R10,R11}將寄存器R1~R5R10R11的值以字為單位依次寫入【R0】中,每寫一個字之前R0=R0-4STMED SP!{R0-R3,LR}將寄存器R0~R3LR的的值以字為單位依次寫入【SP】中,每寫一個字之后SP=SP-4
l ARM微處理器的指令集可以分為:數據處理指令,分支指令,加載/存儲指令,批量加載/存儲指令,交換指令,程序狀態寄存器(PSR)處理指令,協處理器操作指令和異常產生指令八大類。幾乎所有的ARM指令都是可以有條件執行的。帶鏈接和狀態切換的跳轉指令BLX,當目標地址由程序標號給出時,即:BLX <target_address>:由于指沒有條件編碼位
      
l 累加元素:LOOP LDR R1, [R0,#4]! MOVS R2, R1 BEQ ENDADD R4,R4,R2B LOOPEND l 切換并中斷:;禁能IRQ中斷 MRS    R0 CPSRORR    R0, R0,#0x80MSR    CPSR, R0;切換到用戶模式 MRS    R0 CPSRBIC     R0, #0x0FMSR    CPSR, R0
l Thumb優勢:在ARM體系結構中,ARM指令集是32位的,具有很高的執行效率。但是對于嵌入式 而言,其存儲空間極其有限,由于每條ARM指令都要占用4個字節,對存儲空間的要求較高。為了壓縮代碼的存儲,增加代碼存儲密度,ARM公司設計了16位的Thumb指令。Thumb代碼所需的存儲空間約為ARM代碼的60%~70% l Thumb指令可分為數據處理指令,存儲器操作指令,分支指令,軟中斷指令。
Thumb指令集只有一條分支指令是有條件的,其余所有指令都是無條件的;B{cond} label
l 偽指令是ARM處理器支持的匯編語言程序里的特殊助記符,它不再處理器運行期間由機器執行,只是在匯編時被合適的機器指令代替成ARMThumb指令,從而實現真正的指令操作。偽操作是ARM匯編語言程序里的一些特殊的指令助記符,其作用主要是為了完成匯編程序做各種準備工作,對源程序運行匯編程序處理,而不是在計算機運行期間由處理器執行。也就是說,這些偽操作只是在匯編過程中起作用,一旦匯編結束,偽操作也就隨之消失。 l 20!:startMOV R8,#20;MOV R9,#0;SUB R0,R8,#1;LOOP:MOV R1 R9;UMULLR8,R9,R0,R8;MLA R9,R1,R0,R9;SUBS R0,R0,#1;BNE LOOP;STOP B STOP;END
l 64位結果累加:START MOV R0 #0X3000;MOV R1,#0X10000001;MOV R2,#100;LOOP_1 STR R1,[R0],#4; ADD R1,R2,#1;SUBS R2,R2,#1;BNE LOOP_1;MOV R0,#0X3000;MOV R2,#100;MOV R9,#0;MOV R8,#0;LOOP_2 LDR R1,[R0],#4;ADDS R8,R1,R8;ADC R9,R9,#0;SUBS R2,R2,#1; BNE LOOP_2;STOP B STOP END;
l 拷貝:start LDR R0,=Src;LDR R1,=Dst;MOV R2,#NUM;MOV SP,#0X9000;MOVS R3,R2,LSR,#2;BEQ Copy_Words;STMFD SP!,{R5-R8};Copy_4Word:LDMIA R0!,{R5-R8};STMIA R1!,{R5-R8};SUBS R3,R3,#1;BNE Copy_4Word;LDMFD SP!,{R5-R8};Copy_Words:ANDS R2,R2,#3;BEQ Stop;Copy_Word:LDR R3,[r0],#4;STR R3,[r1],#4;SUBS,R2,R2,#1;BNE Copy_Word;Stop:B Stop;LTONG SRC LONG „„END
l 高地位對換:START LDR R0,=0x55555555;MOV R2,#0;Bit_Exchange:MOV R1,#32;Bit_L:AND R3,R0,#1;ORR R2,R3,R2,LSL #1;;MOV R0,R0,SLR #1;SUBS R1,R1,#1;BNE Bitex_L;Stop:B Stop;END
l 選擇排序:START:LDR R0=Datas;LDR R1=Num;LDR R1,[R1];Sel_Sort:MOV R1,R1,LSL #2;SUB R1,R1,#4;ADD R1,R0,R1;SUB R0,R0,#4;Sort_L1:LDR R4,[R0,#4]!;TEQ R1,R0;BEQ Sort_Finish;MOV R2,R0;MOV R3,R0;Sort_L2:LDR R5,[R2,#4]!;CMP R4,R5;BLT Sort_L3;MOV R3,R2;MOV R4,R5;Sort_L3:TEQ R1,R2;BNE Sort_L2;Sort_L4:TEQ,R0,R3;BEQ Sort_L1;SWP R4,R4,[R0];STR R4,[R3];B Sort_L1;Sort_Finish: Stop:B STOP„„ l 逆序拷貝:START:LDR R0,=SrcString;LDR R1,=DstString;StrCopyDes:MOV R4,#0;Strcpydes_L1:LDRB R2,[R0],#1;ADD R4,R4,#1;TST R2,#0XFF;BNE Strcpydes_L1;SUB R4,R4,#1;SUB R0,R0,#2;MOV R3,R1;Strcpydes_L2:LDRB R2,[R0],#-1;STRB R2,[R3],#1;SUBS R4,R4,#1;BNE Strcpydes_L2;Strcpydes_L3:STRB R4,[R3];STOP:B STOP;„„end l 亮燈:if((LedStatrs & 0x01)==0x01) rPDATAB= rPDATAB & 0xFFFFFFFB; if((LedStatrs & 0x01)==0x02) rPDATAB= rPDATAB & 0xFFFFFFF7; l 熄燈:if((LedStatrs & 0x01)=0x01) rPDATAB= rPDATAB |0x04 if((LedStatrs & 0x01)=0x02) rPDATAB= rPDATAB |0x08;
l 重入函數:如果某個函數可以被多個任務并發使用,而不會造成數據錯誤,我們就說這個函數具有可重入性 。可重入函數可以使用局部變量,也可以使用全局變量。 如果使用全局變量,則應通過關中斷、信號量(即PV操作)等手段對其加以保護,若不加以保護,則此函數就不具有可重入性,即當多個進程調用此函數時,很有可能使得此全局變量變為不可知狀態。
l Volatile:抑制編譯器優化的作用。存儲器映射的硬件寄存器通常也要加volatile說明,中斷服務程序中修改的供其他程序檢測的變量需要加volatile,多任務環境下各任務間共享的標志應該加volatile進行說明
l AND R0,R0,#0xFF;保持R0的低8位,其余為清零    ORR R0R0#0xFF;保持R0的高24位,低8位置1
全面承快速樣板及小批量貼片,后焊加工業務,樣板2-3天完成,加快24小時, BGA反修,植球及更換。電話:0755-2655271 QQ: 2643383166,網站:
同樣的業務我們比質量;同樣的質量我們比價格;同樣的價格我們比時間,同樣的時間我們比服務;同樣的服務我們比信譽,麥斯艾姆,你值得信賴的樣板貼片專家。






歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1