TMS320C645x DSP SRIO寄存器(五)——LSU和其他特殊事件中斷

本文是對TI的TMS320C645x DSP SRIO User’s Guide中5.21-5.24、5.28-5.31節內容的搬運
與第4章大部分內容相關

一、LSU中斷

LSU中斷狀態寄存器(LSU_ICSR)

LSU中斷狀態寄存器
LSU的中斷共8種,一個寄存器中每8位對應一個LSU。8中中斷情況如下:

  1. 邏輯層的發送緩衝區中該優先級的事務包數量未超過設定的閾值,因此沒有發送(在寄存器PER_SET_CNTL中設置閾值);
  2. 接收到了重發的門鈴事務的響應包或者發起的原子操作不允許;
  3. DMA數據傳輸出錯;
  4. 不支持的事務包類型,或者出現一些無效的編碼;
  5. 收到傳輸錯誤的響應包;
  6. 被“流控制”(flow control)阻塞;
  7. 事務包發送超時;
  8. 事務包傳輸完成,可以在LSU_REG4中對中斷是否產生進行設置。一般如果爲了高效傳輸,不用開啓傳輸完成中斷。

LSU中斷清除寄存器(LSU_ICCR)、LSU中斷路由寄存器(LSU_ICRR0-LSU_ICRR3)

與上一篇文章中提到的門鈴中斷、CPPI中斷相同。即一個ICS對應有一個ICC和ICR。最終將一箇中斷源指向8箇中斷目的之一。

二、其他中斷

錯誤、復位和特殊事件中斷狀態/清除寄存器(ERR_RST_EVNT_ICSR、ERR_RST_EVNT_ICCR)

其他中斷
中斷源包括設備復位、端口錯誤、接收到端口寫入請求、接收到廣播事務的控制符號。
其中的中斷狀態、中斷清除和中斷路由都和上述的幾種中斷情況相同。
比較特殊的是:有一些中斷的清除需要一些額外的步驟。主要和SP_IP_MODE和SPx_ERR_STAT寄存器有關。下面是表格中的部分內容,具體細節可以參考手冊97頁表38中提到的步驟。
中斷清除

三、中斷狀態解碼寄存器(INTDSTn_DECODE)

中斷源數量統計:

中斷源 數量
門鈴 64
CPPI 32
LSU 32
其他 8
合計 136

8箇中斷目的,當有中斷產生時,很難立刻判斷出具體是產生了什麼中斷。因此需要有專門的寄存器進行中斷解碼。每個中斷目的都有一個對應的中斷解碼寄存器。內容如下:
中斷解碼寄存器
例如:當中斷解碼寄存器中的第29位爲“1”時,就表明是CPPI的接收或者發射隊列中的第2個隊列產生了中斷,再進一步判斷RX_CPPI_ICSR和TX_CPPI_ICSR就可以得知是哪個中斷源產生的中斷。多箇中斷源都是採用邏輯連到同一個中斷解碼寄存器的標誌位中。
當然,在設計的時候可以人爲地把中斷目的和中斷源聯繫起來。比如只把某一種中斷源連到一箇中斷目的上,那樣就只要讀一次中斷解碼寄存器就能知道是哪個中斷源。
對應關係
這裏需要注意的是,CPPI的低位對應ISDR中的高位,而Doorbell是高位和ISDR中的高位對應。

四、中斷速率控制寄存器(INTDSTn_RATE_CNTL)

8箇中斷速率控制寄存器分別對應8箇中斷目的。8箇中斷目的,可以分別進行中斷速率控制。
中斷速率控制寄存器
往該寄存器存入一個32位的無符號數後,會立即開始倒計數,當計數值爲0後纔可以接收新的中斷。從而達到控制中斷產生速率的目的。計數的參考時鐘爲DMA時鐘。
這裏有兩點需要注意

  1. 一旦接收到中斷,如果沒有重新給該寄存器賦值,就不會在這個中斷目的接收到其他中斷;
  2. 即使不作中斷速率的控制,每次處理完中斷後也都需要給該寄存器寫“00000000h”
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章