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

          新聞中心

          s3c2410中斷異常處理流程

          作者: 時(shí)間:2011-12-05 來(lái)源:網(wǎng)絡(luò) 收藏

          在進(jìn)入正題之前,我想先把ARM920T的向量表(Exception Vectors)做一個(gè)簡(jiǎn)短的介紹。:]

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

          ARM920T的向量表有兩種存放方式,一種是低端存放(從0x00000000處開始存放),另一種是高端存放(從0xfff000000處開始存放)。關(guān)于為什么要分兩種方式進(jìn)行存放這點(diǎn)我將在介紹MMU的文章中進(jìn)行說(shuō)明,本文采用低端模式。ARM920T能有8個(gè),他們分別是:

          Reset,

          Undefined instruction,

          Software Interrupt,

          Abort (prefetch),

          Abort(data),

          Reserved,

          IRQ,

          FIQ

          下面是某個(gè)采用低端模式的系統(tǒng)源碼片段:

          /*****************************************************************************

          _start:

          b

          Handle_Reset

          b HandleUndef

          b HandleSWI

          b

          HandlePrefetchAbort

          b HandleDataAbort

          b

          HandleNotUsed

          b HandleIRQ

          b

          HandleFIQ

          …..

          ..

          other

          codes

          ..

          .

          *****************************************************************************/

          上面這部分片段一般出現(xiàn)在一個(gè)名叫“head.s”的匯編文件的里,“b

          Handle_Reset”這條語(yǔ)句就是系統(tǒng)上電之后運(yùn)行的第一條語(yǔ)句。也就是說(shuō)這部分代碼的二進(jìn)制碼必須位于內(nèi)存的最開始部分(這正是低端存放模式),因?yàn)樯想姾驝PU會(huì)從SDRAM的0x00000000處取第一條指令并執(zhí)行。


          Address

          Instruct

          0x00000000: b

          Handle_Reset

          0x00000004: b

          HandleUndef

          0x00000008: b

          HandleSWI

          0x0000000C: b

          HandlePrefetchAbort

          0x00000010: b

          HandleDataAbort

          0x00000014: b

          HandleNotUsed

          0x00000018: b

          HandleIRQ

          0x0000001C: b

          HandleFIQ

          上面是該程序段在系統(tǒng)上電后加載到內(nèi)存后的分布情況,我們可以看到每條指令占用了4個(gè)字節(jié)。

          上電后,PC指針會(huì)跳轉(zhuǎn)到Handle_Reset處開始運(yùn)行。以后系統(tǒng)每當(dāng)有異常出現(xiàn),則CPU會(huì)根據(jù)異常號(hào),從內(nèi)存的0x00000000處開始查表做相應(yīng)的,比如系統(tǒng)觸發(fā)了一個(gè)IRQ異常,IRQ為第6號(hào)異常,則CPU將把PC指向0x00000018地址(4*6=24=

          0x00000018)處運(yùn)行,該地址的指令是跳轉(zhuǎn)到“異常服務(wù)例程”(HandleIRQ)處運(yùn)行。以上就是我對(duì)異常向量表的一個(gè)簡(jiǎn)單介紹?,F(xiàn)在可以進(jìn)入我們文章的主題

          異常”,分快中斷(FIQ)和普通中斷(IRQ),我們討論的重點(diǎn)是普通中斷(IRQ)。


          上一頁(yè) 1 2 3 4 下一頁(yè)

          關(guān)鍵詞: 流程 處理 異常 中斷 s3c2410

          評(píng)論


          相關(guān)推薦

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