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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > TQ2440國嵌學(xué)院gboot-設(shè)定CPU為svc模式

          TQ2440國嵌學(xué)院gboot-設(shè)定CPU為svc模式

          作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
          通過之前學(xué)習(xí)設(shè)定ARM的中斷向量表,完成基本框架的設(shè)計(jì),下面開始設(shè)定CPU到SVC模式(這里是指32位模式)。

          同樣是在ARM Architecture Reference Manual手冊中,Exceptions的子目錄下,找到對應(yīng)的Reset模式:

          本文引用地址:http://www.ex-cimer.com/article/201611/321974.htm



          關(guān)鍵部分我已標(biāo)注紅色,可以看到CPSR[4:0]=0b10011 ,通過備注我們可以知道通過設(shè)定CPSR寄存器的0-4位可以設(shè)定CPU進(jìn)如SVC模式。CPSR寄存器的第6、7位是關(guān)閉快速中斷和中斷,在bootloader啟動時同樣關(guān)閉。也就是CPSR[0:7]=0b11010011=0xd3。代碼如下:

          reset:
          bl set_svc//在reset下添加跳轉(zhuǎn)指令bl,使用bl能夠保留當(dāng)前的地址到R14寄存器中,以便執(zhí)行完子程序后返回

          set_svc://這里是32位處理器,因此命令如下
          mrs r0, cpsr//將cpsr寄存器裝載到r0寄存器
          bic r0, r0, #0x1f//bic完成位清除,將r0的后5位置0
          orr r0, r0, #0xd3//將r0與0xd3(0b1101 0011)
          msr cpsr, r0//重新將r0裝載到cpsr中
          mov pc, lr//返回到程序中

          學(xué)習(xí)總結(jié):

          通過查詢資料可以得到上面的一些信息,可以說明查詢手冊是十分重要,通過閱讀手冊中的一些注釋得到想要的信息,其次掌握好指令的用法,對每一條指令都能掌握含義。



          評論


          技術(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); })();