EINT、DINT、ERTM、DRTM和INTM、DBGM解析

一、參考DSP281x_Device.h
#define  EINT   asm(" clrc INTM")  //INTM置0,開中斷
#define  DINT   asm(" setc INTM")  //INTM置1,關中斷
#define  ERTM   asm(" clrc DBGM")  //使能調試事件
#define  DRTM   asm(" setc DBGM")  //禁止調試事件
二、參考《TMS320C28x DSP CPU和指令集參考指南》中對INTM和DBGM的解釋
1、DBGM
Bit 1:調試啓用屏蔽位。當DBGM置位時,仿真器無法在實時狀態下訪問內存或寄存器。調試器無法更新其窗口。
    在實時調試模式中,若DBGM = 1,則CPU忽略停止請求或硬件斷點,直到DBGM清零。DBGM並不阻止CPU停止在軟件斷點。這點的一個影響可以在實時調試模式中看到。如果你在實時調試模式中單步執行一個指令,並且這條指令置位DBGM,CPU繼續執行指令,直到DBGM被清零。
    當你給TI調試器“實時”命令時(進入實時模式),DBGM強制爲0。令DBGM = 0確保了允許調試和測試直接內存訪問 (DT-DMAs);內存和寄存器的值可傳遞到主處理器,用於更新調試器窗口。
    CPU在執行中斷服務程序(ISR)之前將DBGM置位。當DBGM = 1時,來自主處理器和硬件斷點的停止請求被忽略。如果你想要單步執行程序或在對時間要求不嚴格的ISR中設置斷點,那麼你必須在ISR的開始處增加一條CLRC DBGM指令。
    DBGM主要用在時間要求嚴格的程序代碼部分的仿真,來阻止調試事件。DBGM使能或禁止調試事件,如下:
  調試事件使能。
  調試事件禁止。
    當CPU響應中斷時,DBGM的當前值存儲到堆棧中(當ST1存儲在堆棧中時),然後DBGM置位。當由中斷返回時,DBGM由堆棧中恢復。
    此位可分別由SETC DBGM指令和CLRC DBGM指令復位和清零。DBGM在中斷操作期間被自動置位。復位時,DBGM置位。執行ABORTI (中止中斷)指令也可以將DBGM置位。
2、INTM
Bit 0:中斷全局屏蔽位。此位從全局上使能或禁止所有可屏蔽CPU中斷(那些可由軟件阻止的中斷):
  可屏蔽中斷被全局使能。爲了被CPU認可,則可屏蔽中斷也必須被中斷使能寄存器(IER)局部使能。
  可屏蔽中斷被全局禁止。即使一個可屏蔽中斷被IER局部使能,也不會被CPU認可。
    INTM對非可屏蔽中斷沒有影響,包括硬件復位或軟件復位中斷NMI。此外,當CPU在實時仿真模式下被停止時,由IER和DBGIER使能的中斷將被響應,即使INTM設置爲禁止可屏蔽中斷。
    當CPU響應中斷時,INTM的當前值存儲到堆棧中(當ST1存儲在堆棧中時),然後INTM置位。當由中斷返回時,INTM由堆棧中恢復。
    此位可分別由SETC INTM指令和CLRC INTM指令復位和清零。復位時,INTM置位。INTM的值不會引起中斷標誌寄存器(IFR)、中斷使能寄存器(IER)或調試中斷使能寄存器(DBGIER)
的改變。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章