|
|
| <!--插入廣告JS代碼--> |
摘 要:本文具體討論了基于TMS320VC5410的兩種看門狗實現方案,同時就實現方案的方式和各自的特點作了相應的比較。
關鍵詞:復位; 看門狗; 定時器
引言
在實際的DSP應用系統當中,運行時極有可能發生干擾和被干擾的現象。特別是產品化的DSP系統,可靠性是一個不容忽視的問題,嚴重時系統會出現程序“跑飛”現象。為了克服這種情況,在可能的情況下軟硬件都應作相應的處理。目前,看門狗技術就是這種處理的有效措施之一。本文根據 TMS320 VC5410(簡稱C5410)的自身特點,提出兩種實現方案。
C5410是一款定點數字信號處理器,有以下主要的特點:在時鐘和數據的處理速度方面,它的內部含有鎖相環時鐘產生器,通過編程可調時鐘的倍數,其操作速率可達100MIPS,并含有一個16位定時器;在信號的處理能力方面,采用了先進的改造型哈佛結構和多總線結構,含有40位算術邏輯單元、17×17乘法器和40位專用加法器等,具有單指令和塊指令重復操作的能力;在存儲器能力方面,內置16K×16bit ROM和64K×16bit RAM。同時它具有多種引導方式和中斷快速返回的特點。
利用片內定時器
工作原理
利用C5410內部的定時器,使C5410在一定的時間段T內,對其工作狀態進行****,如果出現程序“跑飛”現象,則采取中斷處理重新復位。C5410內置的定時器是一個減法計數器,在定時中斷允許和定時中斷的服務程序中含有復位程序片段的情況下,當它減到 0時,會引起定時中斷處理,完成復位工作。在正常的情況下,希望計數器不可以計數到零,同時正常的處理程序應繼續工作。而在“跑飛”的情況下,使計數器計數到零,中斷復位程序開始工作,重新初始化整個C5410芯片的設置,且程序從開始處運行。
實現方案
根據如上的分析,設計的軟件流程如圖1所示。
在本例中,設置定時器從計數開始到計數為零的時間為T=10ms,根據公式:
T=TCLKOUT*(PRD+1)*(TDDR+1)
其中TCLKOUT是C5410的工作時鐘周期,此處設置為fclkout=100MHz,則很容易得到PRD=0XF423, TDDR=0XF。如果將定時器的初始化和開中斷的程序段安排在有效環內,如:
while(1)
{
……
/***timer initialization****/
*TCR=*TCR|0x0010; /*timer stop*/
*PRD=0 x F423; /*setup the number of counter loop*/
*TCR=0 x 046F; /*initialize timer control register*/
/***request timer interrupt***/
*IFR=*IFR|0x8; /*clear last timer interrupt*/
*IMR=*IMR|0x8; /*allow timer interrupt*/
asm(" RSBX INTM "); /*enable all interrupt*/
……
}
中斷向量程序可編寫為:
.global _c_int00;
.global _c_IntX;
WORDWIDTH .set 16
.sect "vectors"
vectors:
B _c_int00;Reset Interrupt
NOP
NOP;an interrupt consists of four clock cycles
B _c_IntX ;NMI Interrupt
.space 2*WORDWIDTH ;
.space 17*4*WORDWIDTH; ;omit 17 interrupt service routines
RESET ;timer interrupt service routine
;implement reset
NOP
NOP
NOP
……
在此基礎上,同時要具備以下兩個要求:定時器的初始化和開中斷的程序段必須在程序運行的時間段T內運行一次;在正常工作時,中斷服務程序中優先權比定時中斷高的中斷服務程序不能工作。
利用片外看門狗器件
采用Maxim專用看門狗芯片MAX6370,通過設置它的三個SET引腳的電平值,可以實現不同的啟動延遲時間和看門狗時間。值得注意的是:啟動延遲時間必須滿足ms級,才可以使C5410的時鐘工作穩定,其后的初始化工作才能正常進行。在圖2中,三個SET引腳接了撥位開關和上拉電阻,通過對撥位開關的設置,啟動延遲時間和看門狗時間是可變的。為實際工作中的調試和程序的升級帶來了方便。
由圖2可知,只要使XF的電平在設置的看門狗時間內有變化就可以滿足要求。而且此電平的控制也比較簡單,通過
asm(“RSBX XF”); /*XF的輸出變為低電平*/
asm(“SSBX XF”); /*XF的輸出變為高電平*/
兩條語句就可以實現。但為了很好地執行看門狗功能,在軟件流程中,須注意電平設置的程序點,在看門狗軟件流程圖(圖3)中顯示,主程序中設置了XF為高電平,而只在子程序的循環中設置XF為低電平。但倘若在子程序的循環中XF的高低電平在同一程序點連續地設置,則有可能出現這種情況,如果該子程序由于受到某種干擾,使程序中的某個參數變化而導致它變為一個“死循環”,此時,看門狗功能就失效。
比較說明
以上的兩種看門狗措施,在許多方面有所差異。利用片外的專用看門狗電路,硬件成本較高,但與片內的定時器沒有約束關系,它的復位能使整個C5410全局復位,抗干擾能力較強,復位處理所需時間也長。利用片內的定時器,省去了片外的器件,降低硬件成本。但是,對于片內只含有單一定時器的C5410而言,定時器不可處理其他工作,因此該方式受到約束。同時它的復位結果只是進行程序的初始化,抗干擾能力較弱,復位處理所需時間較短。
結語
本文基于C5410提出了看門狗設計方案。在應用中,可根據實際情況進行選擇,當然也可交叉使用。如在利用片內定時器的看門狗措施中,定時器的中斷服務程序可以包含一條使XF為低電平的語句,而XF的輸出端通過上拉電阻接到C5410的復位引腳,也可實現看門狗功能。
參考文獻
1 TMS320C54x DSP Reference Set Volume 1: CPU and