劉 蓓,鄭 林,蒙 瑰,徐 暠,郗洪柱
基于DSP的中斷沖突避免機制的研究與實現(xiàn)*
劉 蓓,鄭 林,蒙 瑰,徐 暠,郗洪柱
(航天長征火箭技術有限公司 北京 100076)
針對基于DSP芯片TMS320C6701的嵌入式軟件系統(tǒng)設計過程中常見的中斷沖突問題,提出相應的解決方法和簡單有效的避免機制。通過將周期性中斷改為主循環(huán)查詢模式、將DSP系統(tǒng)計時由定時器中斷改為FPGA同步計時等方式,使系統(tǒng)中多個中斷設計簡化為一個中斷,避免中斷間的沖突。針對中斷和主程序間的訪問沖突,通過在主程序中關中斷等方式,避免共享資源訪問沖突。針對DSP系統(tǒng)和外部總線的訪問沖突,通過約定接口的通信協(xié)議,避免時序沖突。通過靜態(tài)分析和動態(tài)長周期測試驗證,方法有效避免了中斷沖突,實現(xiàn)簡單;針對不同沖突機制,措施靈活。設計已應用于星載相關設備,也可推廣至其他嵌入式軟件系統(tǒng)使用。
DSP;FPGA;1553B總線;中斷沖突
DSP芯片TMS320C6701具有很好的抗輻照特性,適用于深空探測和長時間在軌飛行,在運載火箭上面級領域和星載領域得到廣泛應用[1]?;贒SP的星載嵌入式軟件多為中斷驅動型,即主程序加中斷的程序結構,屬于非常典型的實時并發(fā)軟件,要求能夠實時處理各種隨機任務并完成多種計算活動[2]。而在DSP中斷系統(tǒng)的設計和實現(xiàn)過程中很容易引入諸如中斷嵌套錯誤、現(xiàn)場保護錯誤、開關中斷時機錯誤等軟件錯誤;一旦由于中斷造成了程序錯誤,則會導致一系列不易追蹤的嚴重軟件故障,且大多問題對系統(tǒng)來說常常是致命的,嚴重時可導致系統(tǒng)或軟件失效[3,4]。由于航天型號軟件對可靠性和安全性有很高的要求,提出針對中斷沖突的解決方法和避免機制對于提高整個軟件的安全性具有重要意義[5]。
多數(shù)文獻對中斷沖突的研究集中在檢測方法上,主要側重于對軟件中存在的中斷沖突的測試和發(fā)現(xiàn)。本文對基于DSP的嵌入式軟件系統(tǒng)中常見的中斷沖突,從軟件設計和編碼角度出發(fā),提出有效改進措施,避免沖突發(fā)生。
基于DSP的嵌入式軟件系統(tǒng)采用DSP+FPGA控制方式。FPGA周期性采集傳感器原始測量數(shù)據(jù)和電壓遙測數(shù)據(jù),并通過HPI(Host-Port Interface)接口發(fā)送給DSP;DSP完成傳感器數(shù)據(jù)處理和測量結果計算,并根據(jù)1553B總線命令完成與上級總線控制器BC(Bus Controller)的原始測量數(shù)據(jù)和遙測信息傳輸,實現(xiàn)系統(tǒng)代碼在線升級等功能。
DSP系統(tǒng)的外部接口圖如圖1所示,接口功能如下:
圖1 DSP外部接口
① DSP通過EMIF(External Memory Interface)接口的CE1口與可編程只讀存儲器PROM相連,PROM用于存放程序代碼。
② DSP通過EMIF接口的CE3口與1553B總線芯片B65170相連。DSP芯片可通過1553B總線接收上級總線控制器BC發(fā)送的總線指令和更新代碼;也可通過1553B總線向上級BC發(fā)送設備的數(shù)據(jù)和狀態(tài)信息。
③ DSP通過HPI接口與FPGA相連,由FPGA完成對磁阻式掉電非易失存儲器MRAM的讀寫訪問,實現(xiàn)對設備更新程序、更新標識及復位標識的保存工作。FPGA通過HPI接口周期性發(fā)送原始測量數(shù)據(jù)給DSP。
基于DSP的嵌入式軟件系統(tǒng)在設計過程中,常見的中斷有:
① FPGA周期性發(fā)送的傳感器原始測量數(shù)據(jù)中斷和電壓遙測數(shù)據(jù)中斷。其中,傳感器原始測量數(shù)據(jù)中斷0.2s一次,電壓遙測數(shù)據(jù)中斷1s一次。
② 定時器中斷,用于系統(tǒng)計時,定時周期25μs。
③ 接收1553B總線命令中斷,為隨機中斷。
由于中斷觸發(fā)的隨機性和不確定性,中斷與中斷間、中斷與主程序之間都有可能發(fā)生時序沖突。對于不受DSP控制的外部觸發(fā)中斷,在中斷初始化過程中,若初始化流程不當,可能會導致系統(tǒng)始終無法響應外部觸發(fā)中斷,造成系統(tǒng)功能的失效。
系統(tǒng)中的中斷沖突可分為時序沖突和共享資源沖突。其中,時序沖突有初始化沖突、中斷間沖突、DSP與1553B總線訪問沖突;共享資源沖突又可細分為全局變量訪問沖突、內存地址訪問沖突和外部接口訪問沖突等。
2.1.1 初始化沖突
DSP系統(tǒng)中三個中斷的啟動機制如下:
① FPGA由DSP發(fā)送控制信號以開啟原始測量數(shù)據(jù)和電壓遙測數(shù)據(jù)采集,然后周期性發(fā)送原始測量數(shù)據(jù)、電壓遙測數(shù)據(jù)和中斷信號給DSP。
② 定時器中斷的開啟、暫停和停止都由DSP軟件進行控制。
③ 1553B中斷由上級BC觸發(fā),對于DSP系統(tǒng)而言屬于隨機信號。上級BC通過1553B總線發(fā)送總線命令給1553B芯片B65170,芯片B65170在完成與上級BC的信息交互后,發(fā)送1553B中斷信號(低電平信號)給DSP的外部中斷接口。DSP的外部中斷由下降沿觸發(fā)。DSP通過外部中斷接口接收到1553B中斷后,需通過讀B65170的中斷狀態(tài)寄存器以清除1553B中斷信號。若在DSP對外部中斷接口進行初始化使能過程中,接收到1553B中斷信號,由于DSP的外部中斷接口尚未使能,且初始化過程中有對DSP的外部中斷標識進行清零,就會使1553B中斷信號的狀態(tài)與DSP的外部中斷標識不一致,導致1553B中斷信號始終保持低電平,無法進行下降沿觸發(fā),后續(xù)整個系統(tǒng)將始終無法收到1553B中斷,與上級BC無法進行正常通信。
FPGA中斷和定時器中斷都由DSP開啟,初始化過程中不存在時序沖突。而1553B中斷由外部設備觸發(fā),具有隨機性,在初始化過程中存在沖突的可能。為避免沖突造成系統(tǒng)功能失效,在1553B中斷初始化過程中,需對1553B總線進行清中斷,具體初始化流程如圖2所示。在開全局中斷后,進行清1553B中斷操作,可使系統(tǒng)在能夠響應和處理1553B中斷時,1553B中斷處于可觸發(fā)狀態(tài)。同時,由于上級BC只有在輪詢到有效的自檢測字后,才會發(fā)送有效中斷指令給DSP系統(tǒng),不會存在先開全局中斷,再清除1553B中斷后,造成有效中斷指令丟失的情況。
因此,在對外部中斷進行初始化時,要注意時序沖突問題,保證外部中斷的隨機觸發(fā),不會使中斷信號被鎖死,造成系統(tǒng)功能失效。
圖2 1553B中斷初始化流程
2.1.2 中斷間沖突
DSP芯片TMS320C6701接收到中斷,在進行中斷處理時,硬件會先關閉全局中斷,禁用其他可屏蔽中斷。
基于DSP的嵌入式軟件系統(tǒng)有三個可屏蔽中斷,在運行過程中可能會出現(xiàn)如下情況:
在FPGA中斷或1553B中斷處理過程中,若定時器中斷被觸發(fā),則會被屏蔽掉;定時器周期為25μs,而其他中斷處理時間若大于25μs,就會造成漏中斷的現(xiàn)象,造成系統(tǒng)計時誤差。
為避免出現(xiàn)定時器漏中斷的情況,需進行中斷嵌套。在進入其他中斷服務程序時,需開全局中斷,使能定時器中斷,允許定時器中斷打斷其他中斷服務程序。在中斷嵌套時,一次中斷時間可能是兩個中斷或三個中斷服務程序運行時間的累加和,在進行程序時域分析時應注意。同時,在允許被打斷的中斷服務程序中,需做好對中斷返回地址和全局中斷使能狀態(tài)的保存,防止中斷被打斷后中斷返回地址和全局中斷使能狀態(tài)丟失,造成程序運行錯誤。
由于系統(tǒng)存在三個可屏蔽中斷,F(xiàn)PGA中斷與1553B中斷間、嵌套后的FPGA中斷與1553B中斷間都可能存在時域沖突,且由于加入中斷嵌套后,對時域沖突的分析更加復雜。為簡化系統(tǒng)設計,避免中斷沖突,利用三個中斷的特性,將三個中斷簡化為一個中斷。具體如下:
① FPGA中斷的最短周期為0.2s,主程序循環(huán)一次的時間小于50ms。通過在主循環(huán)中對FPGA中斷信號進行輪詢,可滿足FPGA中斷的時序要求,且FPGA周期發(fā)送的傳感器原始測量數(shù)據(jù)采用乒乓緩存的方式,不會出現(xiàn)發(fā)送給DSP的原始數(shù)據(jù)由于DSP處理不及時被FPGA實時采集的數(shù)據(jù)覆蓋的現(xiàn)象。利用乒乓緩存模式,還可提高FPGA的采樣速率,保持數(shù)據(jù)的連續(xù)性和周期性。
② 定時器中斷主要用于系統(tǒng)計時,系統(tǒng)的時間分辨率為25μs;因此,定時周期也為25μs。系統(tǒng)采用DSP+FPGA控制方式,為避免定時器頻繁中斷,影響測量數(shù)據(jù)處理周期,且為避免中斷嵌套可能帶來的時序沖突,利用FPGA并行進程的優(yōu)勢,采用FPGA進行系統(tǒng)時間的計時;DSP提供系統(tǒng)時間的定期更新數(shù)據(jù);在需要對原始測量數(shù)據(jù)、遙測數(shù)據(jù)進行打時間標時,從FPGA實時讀取系統(tǒng)時間。
由于系統(tǒng)時間采用6字節(jié)進行存儲,DSP在向FPGA發(fā)送更新時間和讀取時間時,應注意讀寫時序被打斷的情況。為避免時間信號在讀寫過程中被打斷,造成系統(tǒng)計時錯誤,在DSP向FPGA發(fā)送更新時間時,F(xiàn)PGA接收到完整的6字節(jié)數(shù)據(jù)后,才對時間數(shù)據(jù)進行鎖存和使用;在DSP從FPGA讀取系統(tǒng)時間時,F(xiàn)PGA在接收到第一個讀信號后,即鎖存整個6字節(jié)的時間數(shù)據(jù),避免由于中斷影響造成讀取時間錯位的情況發(fā)生。
③ 1553B中斷為外部中斷,由上級總線控制器BC啟動,對于DSP系統(tǒng)而言屬于隨機中斷。1553B中斷主要用于完成設備與上級系統(tǒng)間的通信;設備通過1553B總線發(fā)送原始測量數(shù)據(jù)、測量結果、設備健康狀態(tài)給上級系統(tǒng);上級系統(tǒng)通過1553B總線發(fā)送總線指令給DSP,完成設備復位、恢復出廠設置、程序在線更新等功能。由于1553B中斷為隨機中斷,發(fā)送周期不確定,若出現(xiàn)漏中斷或中斷無響應情況,會對系統(tǒng)造成較大影響。因此,1553B中斷仍采用中斷觸發(fā)方式,對接收到的中斷進行實時處理。
通過將FPGA中斷改為由主程序進行周期性輪詢,將定時器計時中斷改為由FPGA進行系統(tǒng)計時,簡化為只有一個外部1553B中斷,系統(tǒng)不再有FPGA中斷和定時器中斷,使系統(tǒng)不存在中斷與中斷間沖突的可能。
針對1553B中斷,若前后兩次中斷的觸發(fā)時間小于中斷服務程序的執(zhí)行時間,則會出現(xiàn)漏中斷或中斷處理不及時情況。為避免該情況,中斷服務程序的執(zhí)行時間應盡可能短。本系統(tǒng)中最短的總線消息為發(fā)送方式代碼矢量字,理論最短時間為68μs(方式指令+狀態(tài)字+數(shù)據(jù)字+響應時間+消息間隔=20μs+20μs+20μs+4μs+4μs)。1553B中斷服務程序的執(zhí)行時間目前設置為20μs左右,可避免由于中斷服務程序運行時間過長,造成漏中斷的情況發(fā)生。
2.1.3 DSP與1553B總線訪問沖突
1553B芯片B65170內部RAM的數(shù)據(jù)區(qū)可由DSP系統(tǒng)和1553B總線共同進行讀寫訪問。接收、發(fā)送和廣播查詢表可由DSP進行讀寫訪問;1553B總線通過訪問數(shù)據(jù)區(qū)可對設置為循環(huán)緩存區(qū)的接收、發(fā)送和廣播查詢表中的地址指針進行修改。因此,DSP系統(tǒng)和1553B總線在對芯片B65170內部RAM的數(shù)據(jù)區(qū)和查詢表進行訪問時,可能存在時序沖突;由時序沖突引發(fā)的問題最終可表現(xiàn)為內部RAM區(qū)的數(shù)據(jù)沖突,具體表現(xiàn)如下:
① 在1553B總線對芯片B65170內部RAM數(shù)據(jù)循環(huán)緩存區(qū)進行讀寫訪問時,對應查詢表的地址指針會隨之更改;此時若DSP系統(tǒng)對查詢表中的地址指針進行初始化,就會造成1553B總線讀取數(shù)據(jù)重復、錯位,寫數(shù)據(jù)被覆蓋、丟失等現(xiàn)象的出現(xiàn)。
② 在1553B總線對芯片內部RAM數(shù)據(jù)區(qū)進行讀原始測量數(shù)據(jù)、遙測數(shù)據(jù)等操作時,若DSP系統(tǒng)進行對應數(shù)據(jù)區(qū)的寫入,就會造成1553B總線讀取的數(shù)據(jù)為新舊數(shù)據(jù)包的組合,造成數(shù)據(jù)丟幀現(xiàn)象的出現(xiàn)。
③ 在1553B總線對芯片內部RAM數(shù)據(jù)區(qū)進行寫更新代碼等操作時,若DSP系統(tǒng)讀取不及時,就會造成接收數(shù)據(jù)新舊結合、接收數(shù)據(jù)校驗不正確或接收數(shù)據(jù)丟幀等現(xiàn)象的出現(xiàn)。
由于DSP對芯片B65170內部RAM區(qū)的操作和1553B總線的讀寫訪問由不同的CPU系統(tǒng)控制,可通過約定接口的通信協(xié)議,避免DSP和1553B總線間的訪問沖突。具體措施如下:
① 針對查詢表中循環(huán)緩存區(qū)地址指針寫沖突問題,通過約定同一總線命令發(fā)送的最小間隔時間,可解決該問題。如:1553B總線讀原始數(shù)據(jù)周期為0.2s,讀遙測數(shù)據(jù)周期為1s,寫更新代碼的周期大于1s;而DSP系統(tǒng)是在1553B總線完成相應讀寫操作、發(fā)送中斷后,才對循環(huán)緩存區(qū)地址指針進行寫操作,完成指針初始化。DSP在接收到中斷后,在中斷服務程序中完成指針初始化,執(zhí)行時間約需20μs,遠小于總線命令的發(fā)送周期,不會與下一周期發(fā)送的總線命令產生讀寫沖突。
通過約定1553B總線命令的訪問周期以及DSP系統(tǒng)的訪問時機和訪問時間,即可避免兩者之間的訪問沖突。
② 針對1553B總線讀操作和DSP系統(tǒng)寫操作沖突,可通過增加握手標識解決該問題。如:將方式代碼矢量字設置為握手信號,1553B總線在讀取到矢量字有效標識后,開啟對原始測量數(shù)據(jù)、遙測數(shù)據(jù)的讀操作,讀完成后,發(fā)送中斷給DSP,DSP接收中斷后,在中斷服務程序中清矢量字有效標識。DSP只有在矢量字標識無效且有原始數(shù)據(jù)滿足發(fā)送條件時,才會對總線芯片內部RAM區(qū)進行寫數(shù)據(jù)操作。
通過設置握手信號,以及將1553B總線和DSP系統(tǒng)訪問的條件設置為互斥狀態(tài),避免兩者一讀、一寫產生訪問沖突。
③ 針對1553B總線寫操作和DSP系統(tǒng)讀操作沖突,可通過約定總線指令的發(fā)送周期,以及DSP系統(tǒng)的處理周期來避免兩者之間的讀寫沖突。如:1553B總線發(fā)送程序更新代碼的周期大于1s,而DSP系統(tǒng)接收到一次總線數(shù)據(jù)并完成處理的時間小于50ms,這樣就可避免由于DSP系統(tǒng)處理超時造成DSP在進行總線數(shù)據(jù)接收處理時又有新的總線數(shù)據(jù)發(fā)送,導致出現(xiàn)數(shù)據(jù)被覆蓋及丟失的情況。
1553B總線指令的接收和保存在中斷服務程序中進行,執(zhí)行和處理在DSP主程序中進行。DSP系統(tǒng)通過保證主程序循環(huán)一次的運行時間小于總線指令的最小發(fā)送間隔時間,如此可避免總線指令處理超時等情況的發(fā)生。
通過約定接口的通信協(xié)議,可避免由不同CPU控制的DSP芯片和1553B總線對同一內存區(qū)訪問的沖突。
系統(tǒng)經(jīng)簡化設計后,只有一個外部1553B中斷,因此,系統(tǒng)產生中斷沖突的風險就存在于1553B中斷和主程序之間。
為減少中斷服務程序的執(zhí)行時間,避免執(zhí)行時間過長,造成漏中斷的現(xiàn)象,通常中斷服務程序只對1553B總線發(fā)送的命令進行簡單的校驗和記錄??偩€命令的處理在主程序中進行。主程序循環(huán)一次的時間小于50ms,而所有需處理的1553B總線命令周期均大于50ms。通過主程序處理能保證1553B總線命令處理和接收的及時性,避免出現(xiàn)漏中斷情況。
1553B中斷和主程序之間可能存在共享資源沖突,常見的共享資源沖突有全局變量訪問沖突、內存地址訪問沖突和外部接口訪問沖突。
2.2.1 全局變量訪問沖突
系統(tǒng)中主程序和1553B中斷服務程序都進行寫操作的全局變量有接收1553B總線命令計數(shù)和接收廣播時間碼標識。
① 1553B中斷服務程序在接收到總線命令后,會對接收1553B總線命令計數(shù)進行加1操作;主程序在完成總線命令處理后,若已處理和接收總線命令個數(shù)不小于緩存區(qū)最大數(shù),則對已處理和接收總線命令計數(shù)減去緩存區(qū)最大數(shù),防止數(shù)據(jù)溢出。
為避免主程序和1553B中斷服務程序對接收1553B總線命令計數(shù)的修改沖突,在主程序對接收1553B總線命令計數(shù)進行修改時需進行關中斷操作。
② 1553B中斷服務程序在第一次接收到上級BC發(fā)送的廣播時間碼后,將接收廣播時間碼標識置為有效;主程序在檢測到接收廣播時間碼標識有效后,初始化時間標識,開啟對程序周期性檢測;為防止標識被打翻,主程序對接收廣播時間碼標識進行大數(shù)判決,將被打翻的標識進行修正。
為避免主程序和1553B中斷服務程序對接收廣播時間碼標識的修改沖突,增加一個全局變量標識,該標識在中斷服務程序中,只要接收到廣播時間碼,即置為有效;在主程序中,對該標識進行判別,若該標識有效且接收廣播時間碼標識為無效,置接收廣播時間碼標識為有效,且周期性對接收廣播時間碼標識進行大數(shù)判決。通過該方法,可解決主程序和1553B中斷服務程序間的寫沖突。
2.2.2 內存地址訪問沖突
方式代碼矢量字對應的數(shù)據(jù)字保存在芯片B65170內部RAM 0x120地址中,主程序和1553B中斷服務程序對該內存地址都有寫操作。方式代碼矢量字用于標識原始測量數(shù)據(jù)、遙測數(shù)據(jù)是否準備好;上級讀取到方式代碼矢量字有效標識后,對數(shù)據(jù)進行讀取,讀取結束,發(fā)送中斷,DSP接收中斷后,在中斷服務程序中將方式代碼矢量字置為無效;主程序在得到有效數(shù)據(jù)后,會重新將方式代碼矢量字置為有效。由于方式代碼矢量字包含對原始測量數(shù)據(jù)、遙測數(shù)據(jù)和接收注入數(shù)據(jù)等數(shù)據(jù)的標識,因此主程序和1553B中斷服務程序間存在寫沖突。
內存地址訪問沖突和全局變量訪問沖突性質一致,也可通過在主程序中關中斷的方式,解決兩者間的寫沖突。
在主程序中進行關中斷操作,應注意關中斷的時間,防止出現(xiàn)由于關中斷而造成漏中斷的現(xiàn)象出現(xiàn)。本系統(tǒng)中關中斷時間都在μs量級,可避免關中斷超時情況。
2.2.3 外部接口訪問沖突
由于系統(tǒng)由FPGA進行時間計時,DSP在1553B中斷服務程序中接收到廣播時間碼后,將廣播時間碼轉發(fā)給FPGA,由FPGA進行時間修正。在主程序中,DSP完成初始化后,會發(fā)送時間碼給FPGA,以開啟FPGA的數(shù)采功能。由于主程序和1553B中斷服務程序都對FPGA接口進行寫操作,因此可能存在沖突。
由于主程序只對FPGA接口進行一次寫時間碼操作,為避免主程序和中斷服務程序間的沖突,將主程序中寫時間碼操作放在1553B中斷使能之前進行。由于中斷使能所需的時間為μs級,在寫時間碼啟動FPGA數(shù)采功能后,F(xiàn)PGA至少需要0.2s發(fā)送測量數(shù)據(jù),不影響DSP對FPGA發(fā)送數(shù)據(jù)的及時接收。因此,將主程序中寫時間碼操作放在中斷使能之前,可避免中斷引起的訪問沖突,還可保證FPGA發(fā)送數(shù)據(jù)的正常接收。
根據(jù)存在中斷沖突的共享資源本身的特性,可通過增加全局變量、在主程序中關中斷以及改變寫操作的時機等方式避免中斷和主程序間的共享資源沖突。
基于DSP的嵌入式軟件系統(tǒng)通過查詢中斷向量表進行中斷的處理。中斷向量表包含16條中斷,有復位中斷、不可屏蔽中斷、可屏蔽中斷及保留位。在本系統(tǒng)中,復位中斷跳轉到二次加載程序中,使用可屏蔽的外部中斷4作為1553B中斷(示于圖1);其他未用中斷若不作處理,則在程序指針誤跳入中斷向量表未用中斷進程時,程序運行狀態(tài)將不可控,可能出現(xiàn)異常情況,造成系統(tǒng)混亂。
為增加程序可靠性,保證程序在誤入未用中斷后仍能正常跳出中斷,不影響系統(tǒng)的正常運行,在未用中斷的中斷服務程序中,禁止未用中斷的中斷使能并清除對應的中斷標識,使程序能正常退出中斷服務程序的同時,保證下次不再進入未用中斷。
針對基于DSP的嵌入式軟件系統(tǒng)中常見中斷沖突,從時序沖突和共享資源沖突兩方面進行研究和分析,根據(jù)產生機理不同,提出了靈活有效的中斷沖突避免機制。對于系統(tǒng)未用中斷,提出相應保護機制。經(jīng)驗證,針對不同沖突機制,該方案實現(xiàn)簡單、措施靈活,目前已應用于星載相關設備,也可推廣至其他嵌入式軟件系統(tǒng)使用。
[1] 霍宏, 李蘭蘭, 劉衛(wèi)東, 等. 基于TMS320C6701的飛行軟件加載模式研究[J]. 航天控制, 2014, 32(1): 85–88. HUO Hong, LI Lanlan, LIU Weidong, et al. Research of three-level loading mode based on TMS320C6701 for the flight software[J]. Aerospace Control, 2014, 32(1): 85–88.
[2] 黃晨, 董燕, 王小麗, 等. 基于表格的中斷數(shù)據(jù)沖突靜態(tài)分析方法[J]. 空間控制技術與應用, 2016, 42(5): 57–62. HUANG Chen, DONG Yan, WANG Xiaoli, et al. Static analysis method for table-based interruption data conflictions[J]. Aerospace Control and Application, 2016, 42(5): 57–62.
[3] 楊芳, 齊璇, 董麗, 等. 嵌入式軟件中斷系統(tǒng)資源沖突檢測技術研究[J]. 計算機工程與設計, 2010, 31(23): 5036–5059. YANG Fang, QI Xuan, DONG Li, et al. Research of interrupt system resource conflict detection technology for embedded software[J]. Computer Engineering and Design, 2010, 31(23): 5036–5059.
[4] 陳睿, 楊孟飛. 基于編碼規(guī)則的中斷數(shù)據(jù)訪問沖突檢測方法[J]. 空間控制技術與應用, 2017, 43(3): 59–65. CHEN Rui, YANG Mengfei. Coding rule based interrupt data race detection method[J]. Aerospace Control and Application, 2017, 43(3): 59–65.
[5] 侯成杰. 航天器C51語言軟件中斷資源沖突分析方法[J]. 空間控制技術與應用, 2015, 41(4): 58–62. HOU Chengjie. Interrupt resource conflict analysis for spacecraft C51 language software[J]. Aerospace Control and Application, 2015, 41(4): 58–62.
Research and implementation of interrupt conflict avoidance mechanism based on DSP
LIU Bei, ZHENG Lin, MENG Gui, XU Hao, XI Hongzhu
(Aerospace Long March Lauch Vehicle Technology Co. Ltd., Beijing 100076, China)
To solve the interrupt conflict problems in the program based on the TMS320C6701 DSP embedded software system, the solution and valid avoidance mechanism are proposed. To avoid the conflict between the interrupts, there are some methods by which the system can be configured with just one interrupt instead of multiple interrupts, such as using polling mode replaced the periodic interrupt, the system time counting by FPGA instead of DSP timer counting interrupt. The interrupt conflict between the interrupt service routine and the main program could be avoided by disabling the interrupt in the main program. By ensuring reliable interface communication protocol logic to avoid the access conflict between the DSP system and the 1553B Bus. It is verified the validity of the interrupt conflict avoidance mechanism by static analysis and dynamic long-periodic test. The design has provided the ultimate flexibility and simplification for a variety of conflicts in the space devices, which could also be applied in other areas.
DSP; FPGA; 1553B Bus; Interrupt conflict
TP311
A
CN11-1780(2020)02-0049-06
載人航天預研(20184112043);民用航天預研(B0104);中國科協(xié)青年人才托舉工程(2018QNRC001)
2020-03-03
Email:ycyk704@163.com
TEL:010-68382327 010-68382557
劉 蓓 1991年生,碩士,工程師,主要研究方向為嵌入式軟件設計。
鄭 林 1987年生,碩士,工程師,主要研究方向為光學氣體檢測。
蒙 瑰 1985年生,碩士,高級工程師,主要研究方向為光學氣體檢測。
徐 暠 1990年生,碩士,工程師,主要研究方向為傳感器軟件設計。
郗洪柱 1988年生,博士在讀,工程師,主要研究方向為傳感器硬件設計。