DSP中斷向量表FAQ

admin @ 2014-03-25 , reply:0

    中斷向量表        

1) DSP('5402)的軟體中斷和硬體中斷在使用時,有什麼區別?
2)'5402的中斷向量地址是否和8051單片機一樣,是固定的?
3)中斷如何調用?

   

1).軟體中斷通常用於調試過程中或者程序有模擬中斷要求時。軟中斷有點想DOS下的INT 21H,它的入口地址是確定的,不會受代碼長度的影響。

2).不是,0X0FF80是固定的,也就是說默認情況下中斷起始在0X0FF80,但可通過改變PMST中的中斷向量位置設置改變它。

3).中斷調用和單片機的一樣呀,呵呵

       

請問關於pmst中iptr設置中斷向量表,具體這九位如何對應實際向量地址的?怎麼計算?比如1ff是ff80,為什麼00011000就是0c00了呢?

   

iptr存放中斷向量區的高9位地址,在其後補七個零即是實際中斷向量地址:

實際地址:1111 1111 1000 0000 (ff80h)
iptr存放:1111 1111 1 (1ffh)
再舉一例:
實際地址:0000 1100 0000 0000 (0c00h)
iptr存放:0000 1100 0 (018h)

       

c5402的中斷複位區域為rom,(ff80~)調試時無法寫入代碼的,那如果我要調試中斷怎麼辦?比如說產生了一個中斷,系統便要去ff80+n去找中斷服務程序的入口,而那個區域在調試的時候不能寫入,怎麼辦?

   

要先重定向到ram區域才行,你可在程序的開始重定向。

就是在程序一開始設置PMST:

首先定義:
K_IPTR .set 00011000b<<07 ;point 0C00H 新的向量區
K_MP_MC .set 0b<<06
K_OVLY .set 1b<<05
K_AVIS .set 0b<<04
K_DROM .set 0b<<03
K_CLKOFF .set 0b<<02
K_PMST_RESR .set 00b<<0
K_PMST .set
  K_IPTR|K_MP_MC|K_OVLY|
  K_AVIS|K_DROM|K_CLKOFF|K_PMST_RESR

在程序的開始:
STM #K_PMST,PMST ;從此向量區就改了!

明白了嗎?

       

是否自己定義的中斷都要在中斷向量表中說明,但中斷向量表是在 On-chip ROM(因為要用bootloader,所以要映射在片ROM)上的,如何重定向,定向在何處。

   

自己定義的中斷必須在中斷向量表中說明。Pmst的高9位可以決定了向量表的位置。對C54X你可以任意修改高位地址來決定中斷向量表。例如,C54X複位后 PMST的15-7BIT全為1,所以中斷向量表的位置在FF80。




[admin via 研發互助社區 ] DSP中斷向量表FAQ已經有1367次圍觀

http://cocdig.com/docs/show-post-42936.html