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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ARM處理器中斷處理的編程實現(xiàn)

          基于ARM處理器中斷處理的編程實現(xiàn)

          作者: 時間:2012-11-30 來源:網(wǎng)絡 收藏


            圖1中斷跳轉(zhuǎn)流程圖

            這個流程中的關(guān)鍵部分是中斷向量表,為了讓解析程序能找到向量表,應該將向量表的地址固定化(編程者自定義)。這樣,整個跳轉(zhuǎn)流程的所有程序地址都是固定的,當中斷觸發(fā)后,就可以自動運行。其中,只有向量表的內(nèi)容是可變的,編程者只要在向量表中填入正確的目標地址值就可以了。這使得上層程序和底層硬件跳轉(zhuǎn)有機地聯(lián)系起來。

            解析過程示例

            以一次IRQ跳轉(zhuǎn)為例,假定中斷向量表定義在0x00400000開始的外部RAM空間:


            圖2 中斷解析示例流程

            圖2中實線表示的流程都用ARM匯編語言編寫,一般作為boot代碼的一部分放在系統(tǒng)的底層模塊中。填寫向量表的操作可以在上層應用程序中方便地實現(xiàn),比如在C語言中: *( int *(0x00400018)) = (int) ISR_IRQ;這樣就將IRQ中斷的服務程序入口地址(0x00300260)填寫到中斷向量表中的固定地址0x00400018開始的4字節(jié)空間了。

            如此一來,就可避免在應用程序中計算中斷的跳轉(zhuǎn)地址,并且可以很方便的選擇不同的函數(shù)作為指定中斷的服務程序。當然,在程序開發(fā)時要合理開辟好向量表,避免對向量表地址空間不必要的寫操作。

            解析程序的擴展

            眾所周知,在中會包含很多中斷源,通常會在ARM內(nèi)核外面擴展一個中斷控制器來管理各種原因產(chǎn)生的中斷。比如,三星公司的S3C4510B處理器中的IRQ/FIQ類型的中斷源可以有21個,S3C44B0X有26個。這時候的原理還是一樣的,無非是向量表更長,并且當一個中斷觸發(fā)以后,需要在解析程序里查詢中斷控制器的狀態(tài)來確定具體的中斷源,再根據(jù)中斷源來讀取向量表中的對應地址內(nèi)容。其處理流程可用圖3表示。



          評論


          相關(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); })();