中斷是指 CPU 在執行程序的過程中,遇到異常情況需要處理, CPU停 止當前程序的運行,保存當前程序運行處的必要參數,轉去處理這些異常情況, 處理結束后再返回當前程序的間斷處,繼續執行原程序。
1、異常向量表
2、一級異常處理
#define pExceptionIRQ ( *((volatile unsigned long *)(0xD0037418)) )
pExceptionIRQ = (unsigned long)IRQ_handle;
IRQ_handle:
sub lr, lr, #4 // 保存現場
stmfdsp!, {r0-r12, lr}
bl irq_handler // 跳轉到中斷處理函數
ldmfd sp!, {r0-r12,pc}^ // 恢復現場
3、VICX
S5PV210共有4個VIC(Vectored Interrupt Controller,向量中斷控制器),以菊花鏈的方式互連共同支持了多達93個中斷源。
這些中斷源分別為系統DMA、定時器、外設、多媒體、音頻、安全等模塊提供中斷服務
中斷種類有IRQ和FIQ可選配,在中斷處理級別上都屬于二級。
菊鏈方式的4個TZIC和4個VIC是為了能支持93個中斷源。在可信域設計里,TZIC為安全中斷系統提供一個軟中斷。它提供nFIQ中斷的安全控制和在沒安全邊際的系統(vic)上,中斷控制器掩蓋中斷源。用后者來生成nIRQ信號。
菊鏈:一種沿總線傳輸信號的方法,其中設備串聯,而信號則從一臺設備傳向下一臺設備。菊花鏈連接方法可根據設備在總線上的電氣地位分配其優先級
4、寄存器
(1)IRQSTATUS 中斷狀態
(2)VICINTSELECT(中斷類型選擇:irq或者fiq)
如何保證FIQ具有最佳的中斷響應速度?
<1>、FIQmode具有更多的banked register,因此進入FIQ的ISR后可以避免因保存寄存器而浪費的時間。
<2>、FIQ在異常向量表中處于末端,因此ISR可以不用跳轉到別處而直接在向量表末端開始ISR。
(3)VICINTENABLE/VICINTENCLEAR(中斷使能/失能設置)
中斷允許寄存器中,每個bit代表一個中斷源。向VICINTENABLE寄存器中相應bit寫1可以使能該中斷(寫0無效,讀取時若該中斷允許則返回1,若未允許則返回0),而向VICINTENCLEAR寄存器相應bit寫1可以禁止該中斷(寫0無效)。
在另一些CPU中,只有一個INTENABLE寄存器。寫1可以使能中斷,寫0則會禁止中斷。
(4)ISR相關
ISR如何設置:
S5PV210的中斷體系采用如下的ISR確定策略
<1>、將93個中斷源分為4組,每組的ISR組成一個數組,以中斷號為數組索引。
<2>、4組ISR數組的首地址分別存放在VICVECTADDR0~VICVECTADDR3中。
綁定ISR時,只需將用戶自己編寫的ISR地址放入ISR數組中以中斷號為索引的位置即可
ISR如何獲得:
當中斷發生,并且在一級異常向量表中跳轉入IRQ后,首先要保護現場,然后轉入相應的ISR執行。
獲取相應的ISR時只需讀取VICADDRESS寄存器即可。因為S5PV210的中斷系統會自動將當前發生的中斷對應的ISR從ICVECTADDRx中推入VICADDRESSx中。這省去了我們使用查詢方式確認中斷號的麻煩,提高了IRQ的響應速度。
5、中斷處理
中斷處理過程
<1>、硬件事件發生,SRCPENDING位響應掛起
<2>、根據中斷允許設置決定是否產生中斷掛起INTPENDING,并根據INTSELECT決定中斷種類為IRQ還是FIQ
<3>、響應中斷,CPU根據一級異常向量表自動跳轉到IRQ或FIQ異常入口
<4>、對于IRQ,在二級中斷表中,根據INTNUM進行判斷,跳轉入相應的ISR執行
<5>、中斷返回,本次中斷事件結束
如何使用中斷:
<1>、全局性設置。包括設置一級異常向量表、清理所有中斷掛起、禁止所有中斷源等。
<2>、針對要使用的中斷進行具體設置。包括設置中斷種類為IRQ/FIQ,中斷允許、優先級等。
<3>、綁定中斷處理程序。以便在二級中斷處理時能夠跳轉到正確的ISR。
<4>、設置中斷允許位以允許中斷發生。
不同平臺中斷處理差異:有些平臺是置1允許中斷,而另一些平臺是清0允許中斷;二級中斷時獲取中斷號(意味著獲取中斷ISR)的方式不同。這些不同會影響平臺的中斷響應速度。
6、外部中斷
外部中斷意為來自(SoC)外部的中斷,是相對于內部中斷(來自SoC內部,即各種內部外設產生的中斷,譬如定時器中斷)來說的。
S5PV210共支持32個通道的外部中斷,每個外部中斷有對應的GPIO接收來自外部的中斷信號。中斷觸發方式有電平(高、低)、邊沿(上升沿、下降沿、Both)等5種方式可選配。
(1)EXT_INT_0_CON外部中斷控制寄存器
EXT_INT_x_CON(x= 0~3)用來配置32個外部中斷通道的觸發模式。
(2)EXT_INT_0_MASK外部中斷允許/禁止
EXT_INT_x_MASK(x=0~3)用來使能/禁止相應的外部中斷通道
(3)EXT_INT_0_PEND外部中斷掛起寄存器
EXT_INT_xPEND(x=0~3)用來標識外部中斷掛起。向相應bit寫1可以清除中斷掛起
6、外部中斷設置流程
<1>、全局的中斷初始化
<2>、設置相應的GPIO為XEINTx
<3>、綁定中斷處理程序
<4>、設置EXT_INT_x_CON以配置觸發方式
<5>、寫EXT_INT_x_PEND清中斷
<6>、設置EXT_INT_x_MASK以使能相應通道
<7>、最后使能相應外部中斷通道
分析:
1、中斷掛起產生,CPU自動跳轉到一級異常向量表中IRQ入口地址中。
2、由IRQSTATUS和VICADDRESS機制得到相應ISR地址并進入執行。
3、ISR內部內容應該包含三部分:
(1)、有效isr,處理按鍵對應的任務
(2)、向VICxADDR寫入任意值清中斷
(3)、向EXT_INT_x_PEND寫1清除相應中斷
上一篇:TQ210——按鍵(中斷查詢法)
下一篇:TQ210——時鐘系統
推薦閱讀
史海拾趣
近年來,電子行業經歷了巨大的變革,新技術、新產品層出不窮。面對這一挑戰,AW Industries Inc積極調整戰略,加大了對新技術、新產品的研發力度。同時,公司還通過優化生產流程、提高生產效率等方式降低成本,以保持競爭優勢。這些措施使公司在行業變革中保持了穩定的發展態勢。
隨著公司規模的擴大,Coil-Q意識到單靠自身的力量難以應對日益激烈的市場競爭。于是,公司積極尋求與其他企業的戰略合作,與多家知名電子品牌建立了長期穩定的合作關系。通過共享資源、共同研發,Coil-Q不僅拓展了業務領域,還提高了自身的技術水平和市場競爭力。
深圳市飛翼科技有限公司自2006年成立以來,一直致力于模擬與數字MCU混合芯片領域的研究、設計和開發應用。公司主攻電容式觸摸感應按鍵芯片設計,憑借多項獨有的專利技術,成功突破了行業內的技術難點。經過多年的努力,飛翼科技已成為該應用領域中技術最全面、市場份額最大的公司之一。其電容式觸摸感應芯片廣泛應用于各類電子產品中,為用戶帶來了更加便捷、智能的交互體驗。
飛翼股份在綠色礦山建設領域取得了顯著成就。作為國內礦山綠色開采行業的龍頭企業,飛翼股份與多家頂尖高校及行業權威專家緊密合作,自主創新了多項技術、裝備,填補了國內行業空白,達到國際先進水平。公司自主研發的膏體充填技術,實現了從源頭解決充填中各子系統間不兼容的難題,確保了系統運行的可靠性和高效性。飛翼股份不僅為礦山行業提供了綠色、環保的解決方案,還積極參與國際交流,推動了全球礦山綠色開采技術的進步。
深圳市飛翼科技有限公司自2006年成立以來,一直致力于模擬與數字MCU混合芯片領域的研究、設計和開發應用。公司主攻電容式觸摸感應按鍵芯片設計,憑借多項獨有的專利技術,成功突破了行業內的技術難點。經過多年的努力,飛翼科技已成為該應用領域中技術最全面、市場份額最大的公司之一。其電容式觸摸感應芯片廣泛應用于各類電子產品中,為用戶帶來了更加便捷、智能的交互體驗。
“創新動力”是Discrete Semiconductor Industries公司中一家以創新驅動發展的典范。該公司注重研發投入,積極引進和培養科技人才,建立了完善的研發體系。通過不斷的技術創新和產品升級,創新動力不斷推出具有市場競爭力的新產品。同時,公司還積極探索新的應用領域和市場機會,不斷拓展業務范圍。這種創新驅動的發展戰略使得創新動力在激烈的市場競爭中保持了強勁的發展勢頭。
本帖最后由 paulhyde 于 2014-9-15 09:48 編輯 你參加過電子設計競賽嗎?你知道每年都有哪些電子設計競賽能讓你大顯身手嗎?在此,總結出2008年度一些半導體廠商舉辦的電子競賽,你可以更全面的了解各個競賽圍繞的技術、競賽日程、獎項設置等信息 ...… 查看全部問答∨ |
本帖最后由 paulhyde 于 2014-9-15 08:58 編輯 9月的電子大賽,EE們應該都知道吧? 對出國有沒有用呢?不知道是不是該花時間在這個方面? … 查看全部問答∨ |
無線監控和傳統的監控方案相比,具有以下三大優點: 1、綜合成本低,只需一次性投資,無須挖溝埋管,特別適合室外距離較遠及已裝修好的場合;在許多情況下,用戶往往由于受到地理環境和工作內容的限制,例如山地、港口和開闊地等特殊 ...… 查看全部問答∨ |
我把6張1600x1000的圖PS成一張 1600x6000的,不知道什么的SHLoadImageFile加載位圖都返回時空?我用一張一張加載都沒問題。哪位能指點下呀!… 查看全部問答∨ |
網站被掛馬,被入侵,相信這是很多站長的一個心??! 針對這個問題,國內幾大idc主機提供商還沒有找到解決方案! 為什么我的網站沒有漏洞,還會被入侵?這個問題主要出現在服務器安全配置上! 攻擊者一般都是跨站攻擊,首先就是在同一個服務器 ...… 查看全部問答∨ |
|
在Linux下寫了一個存儲器的驅動程序,需要對這個存儲器進行片內尋址(片內地址為16位,分為高8位和低8位兩段),用llseek函數實現。 static loff_t llseek (struct file* mfile, loff_t offset,&nbs ...… 查看全部問答∨ |
剛接觸WINCE不久,用的是EVC4和自帶的模擬器,程序需要動態調用DLL,LoadLibrary(TEXT("\\WINDOWS\\XX.dll"))返回NULL,可能是路徑不正確,請指導下。 XX.dll已用Remote File Viewer導至模擬器\\WINDOWS目錄下 EVC生成的EXE文件是在模擬器根 ...… 查看全部問答∨ |
基于ARM體系,能夠自動檢測并且記錄異常發生位置(非打印trace),并能分析出調用函數棧,誤差率<1.2%,能極大的提高開發效率,節約調試時間,使用方便(just press one button)。 有意聯系nick198205@126.com… 查看全部問答∨ |