RH850 中斷相關


1.1 EBASE — Exception Handler Vector Address Register;

 

1.2 RBASE — Reset Vector Base Address Register

 

 

1.3中斷類型分類

 

FE level non-maskable interrupt (FENMI)

即使已生成另一個FE級別中斷FEINT,也將應答FENMI中斷。
−即使CPU系統寄存器PSW.NP = 1,也會應答FENMI中斷。
−無法從FENMI中斷返回,也無法恢復

FE level maskable interrupt (FEINT)

如果CPU系統寄存器PSW.NP = 0,則可以確認FEINT。如果PSW.NP = 1,則將其屏蔽。
−從FEINT中斷返回是可能的,因此恢復也可以。

EI level maskable interrupt (EIINT)

如果尚未生成FE級中斷(FENMI或FEINT),則可以確認EIINT中斷。
−如果CPU系統寄存器PSW.NP = 0,則可以確認EIINT。
如果正在處理PSW.NP = 1,具有更高優先級的EIINT或PSW.ID = 1,則將其屏蔽。
−可以從EIINT中斷返回,恢復也可以。
−可以為每個中斷通道指定中斷屏蔽。
−每個中斷通道可以指定16個中斷優先級
−在本節中,對應於中斷通道n的EIINT用“ INTn”表示,而EIINT表示
對應於中斷源xxx,用“ INTxxx”表示。

 

定義中斷的兩種方式:

1.直接向量法

在RH850 / F1KM中,輸入復位后或執行以下操作時從其執行處理程序的異常處理程序地址。
可以根據設置更改異常或中斷被確認。
重置和異常(包括中斷)的異常處理程序地址由直接向量確定
方法,其中可以使用PSW.EBV位來更改異常處理程序地址的參考點,
RBASE寄存器和EBASE寄存器。 對於中斷,可以使用直接向量法和表引用法
為每個通道選擇。 如果選擇了表引用方法,則執行可以跳轉到由表指示的地址。
內存中分配的異常處理程序表

 

CPU使用將表7BC.27(選擇基址寄存器/偏移地址)中所示的偏移量加到RBASE或EBASE寄存器指示的基址中的結果作為異常處理程序地址。

通過使用PSW.EBV位* 1,選擇將RBASE或EBASE寄存器用作基地址。 當PSW.EBV位設置為1時,EBASE寄存器的值用作基地址。 當PSW.EBV位清除為0時,RBASE寄存器的值用作基地址。
對於復位輸入和某些例外情況* 2,RBASE寄存器始終用作參考。
此外,用戶中斷請參見相應基址寄存器的RINT位,並根據位狀態減少偏移地址。 如果RBASE.RINT位或EBASE.RINT位設置為1,則所有用戶中斷的偏移量均為100H。 如果該位清零,則根據表7BC.27,基址寄存器/偏移地址的選擇確定偏移地址。

2.表參考方法

在下列任何一種情況下,異常處理程序地址都是使用直接向量方法確定的:
−當PSW.EBV = 0且RBASE.RINT = 1時
−當PSW.EBV = 1且EBASE.RINT = 1時
−中斷通道設置不是表參考方法時(模塊的中斷設置)

在以上的情況以外的情況下,計算表參考位置。
異常處理程序地址讀取位置= INTBP寄存器+通道號×4字節

 

INTBP — Base Address Register of the Interrupt Handler Address Table

當選擇表引用方法作為地址表時,該寄存器指示地址表的基地址。
中斷處理程序地址選擇方法

查看手冊內定義

 

 

 

 

在CS+工程內的匯編代碼找到

 

 

 

此處將地址加在到了INTBP寄存器

修改RESET section 時 需要在跳轉Main 函數之前賦值 EBASE值

Mov #__sRESET, r10 ; get RESET address
ldsr r10, 3, 1 ; set EBASE

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM