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

          新聞中心

          2440中斷向量的理解

          作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
          定時(shí)器中斷為例,我們作為用戶需要完成的任務(wù):1定時(shí)器的初始化,各種寄存器賦值2使能中斷(cpsr和中斷控制器),然后將服務(wù)程序地址賦給pISR_TIMER1(為什么賦給它,后面討論)3當(dāng)然是編寫(xiě)具體的中斷服務(wù)程序。其他啟動(dòng)代碼幫助我們完成了。程序執(zhí)行過(guò)程中,中斷發(fā)生了,我們看看處理器如何找到我們的服務(wù)程序的(這不是天然的,是經(jīng)過(guò)n道工序,沒(méi)有無(wú)緣無(wú)故的愛(ài))。
          (1),中斷發(fā)生,arm跳到0x00000018執(zhí)行此處指令,這是硬件決定的。這里放置了一個(gè)跳轉(zhuǎn)指令:b HandlerIRQ ;handlerforIRQinterrupt
          (2)繼續(xù)找,HandlerFIQHANDLERHandleFIQ,這是什么呢,他是一個(gè)宏,我把它翻譯過(guò)來(lái):
          HandlerFIQ
          sub sp,sp,#4 ;decrementsp(tostorejumpaddress)
          stmfd sp!,{r0} ;PUSHtheworkregistertostack(lrdoestpushbecauseitreturntooriginaladdress)
          ldrr0,=HandleFIQ;loadtheaddressofHandleXXXtor0
          ldrr0,[r0] ;loadthecontents(serviceroutinestartaddress)ofHandleXXX
          strr0,[sp,#4];storethecontents(ISR)ofHandleXXXtostack
          ldmfdsp!,{r0,pc};POPtheworkregisterandpc(jumptoISR)
          有興趣的可以看下,它最終將pc賦值HandleFIQ的值
          (3)那么HandleFIQ那里儲(chǔ)存了什么呢?arm在啟動(dòng)時(shí)做了這樣的賦值
          ldr r0,=HandleIRQ
          ldr r1,=IsrIRQ
          str r1,[r0]
          可見(jiàn)現(xiàn)在(2)中pc值為IsrIRQ所代表的地址。
          (4)現(xiàn)在來(lái)到了IsrIRQ。詳細(xì)看下:
          IsrIRQ
          sub sp,sp,#4;reservedforPC
          stmfd sp!,{r8-r9}

          ldr r9,=INTOFFSET
          ldr r9,[r9]
          ldr r8,=HandleEINT0
          add r8,r8,r9,lsl#2
          ldr r8,[r8]
          str r8,[sp,#8]
          ldmfd sp!,{r8-r9,pc}
          這段代碼,首先計(jì)算服務(wù)程序的地址,然后跳過(guò)去。但是INTOFFSET和HandleEINT0兩個(gè)東西然人費(fèi)解。INTOFFSET寄存器的功能則很簡(jiǎn)單,它的作用只是用于表明哪個(gè)中斷正在被處理。下面是該寄存器各位詳細(xì)功能列表

          HandleEINT0其實(shí)就是中斷是量表的首地址(區(qū)分于arm的異常向量表),而上面所說(shuō)的pISR_TIMER1就是有中斷向量表得到的存放實(shí)際的中斷處理函數(shù)的地址
          #definepISR_TIMER1 (*(unsigned*)(_ISR_STARTADDRESS+0x4c))
          其實(shí)這個(gè)地址就應(yīng)該是add r8,r8,r9,lsl#2中最終得到的r8。


          關(guān)鍵詞: 2440中斷向

          評(píng)論


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