<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM開發(fā)總結(jié)的小知識

          ARM開發(fā)總結(jié)的小知識

          作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
          ARM開發(fā)總結(jié)小知識
          字節(jié) 8位
          半字 16位
          32位

          Code, RO-data
          RW-data,ZI-data

          Code為程序代碼部分
          RO-data 表示 程序定義的常量 const temp;
          RW-data 表示 已初始化的全局變量
          ZI-data 表示 未初始化的全局變量

          Program Size: Code="18248" RO-data=320 RW-data=260 ZI-data=3952

          Code, RO-data,RW-data ..............flash
          RW-data, ZIdata...................RAM

          初始化時RW-data從flash拷貝到RAM

          生成的map文件位于list文件夾下 (KEIL)

          Total ROSize (Code + RO Data)18568 (18.13kB)
          Total RWSize (RW Data + ZI Data)4212 ( 4.11kB)
          Total ROM Size (Code + RO Data + RW Data)18828 (18.39kB)

          ARM指令的長度剛好是1個字(分配為占用4個字節(jié)),Thumb指令的長度剛好是半字(占用2個字節(jié))

          R0-R15 (R15-PC,R14-LR,R13-SP) 32位

          每個異常模式還帶有一個程序狀態(tài)保存寄存器 (SPSR),它用于保存在異常事件發(fā)生之前的CPSR

          LDMIA R1!,{R2-R7, R12} ;將R1單兀中的數(shù)據(jù)讀出到R2-R7,R12,R1自動加1
          STMIA RO!,{R3-R6,R10};將R3-R6,R10中的數(shù)據(jù)保存到RO指向的地址,RO自動加1

          在數(shù)據(jù)傳送之前,將偏移量加到Rn中,其結(jié)果作為傳送數(shù)據(jù)的存儲地址.若使用后綴“!”,則結(jié)果寫回到Rn中,且Rn值不允許為R15.指令舉例如下:
          LDR Rd, [Rn, #Ox4]!

          LDMFDSP!,{R0-R3,PC}^ ;中斷返回
          “^”符號表示這是一條特殊形式的指令。這條指令在從存儲器中裝載PC的同時(PC是最后恢復(fù)的),CPSR也得到恢復(fù)

          大端格式(Big-endian)
          小端格式(Little-endian)

          數(shù)據(jù)0x12345678存儲格式
          大端格式
          低地址<----0x12|0x34|0x56|0x78---->高地址
          小端格式
          低地址<----0x78|0x56|0x34|0x12---->高地址

          ARM微處理器支持7種運行模式,分別為: CPSR M[4:0]

          用戶模式(usr):ARM處理器正常的程序執(zhí)行狀態(tài)。 10000
          快速中斷模式(fiq):用于高速數(shù)據(jù)傳輸或通道處理。 10001
          外部中斷模式(irq):用于通用的中斷處理。 10010
          管理模式(svc):操作系統(tǒng)使用的保護(hù)模式。10011
          數(shù)據(jù)訪問終止模式(abt):當(dāng)數(shù)據(jù)或指令預(yù)取終止時進(jìn)入該模式,可用于虛擬存儲及存儲保護(hù)。10111
          系統(tǒng)模式(sys):運行具有特權(quán)的操作系統(tǒng)任務(wù)。 11111
          定義指令中止模式(und):當(dāng)未定義的指令執(zhí)行時進(jìn)入該模式,可用于支持硬件協(xié)處理器的軟件仿真。 11011

          ARM正常工作一般工作在用戶模式和系統(tǒng)模式,復(fù)位的時候進(jìn)入管理模式

          對于ARM指令集來說,PC指向當(dāng)前指令的下兩條指令的地址

          注意pc,在調(diào)試的時候顯示的是當(dāng)前指令地址,而用mov lr,pc的時候lr保存的是此指令向后數(shù)兩條指令的地址

          假設(shè)反匯編代碼:0x000001 :mov lr pc

          (此時查看PC寄存器的值是0x000001,但實際PC值是0x000003, lr里面保存的就是0x000003)



          fields 指定傳送的區(qū)域(psrCPSR或SPSR)
          c 控制域屏蔽字節(jié)(psr[7..0])
          x 擴展域屏蔽字節(jié)(psr[15..8])
          s 狀態(tài)域屏蔽字節(jié)(psr[23..16])
          f 標(biāo)志域屏蔽字節(jié)(psr[31..24])

          例如:MSR cpsr_c, #0xD3 ;CPSR[7...0] = 0xD3


          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();