国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于DSP的中斷沖突避免機(jī)制的研究與實(shí)現(xiàn)*

2020-07-28 09:11郗洪柱
遙測遙控 2020年2期
關(guān)鍵詞:主程序中斷總線

劉 蓓,鄭 林,蒙 瑰,徐 暠,郗洪柱

基于DSP的中斷沖突避免機(jī)制的研究與實(shí)現(xiàn)*

劉 蓓,鄭 林,蒙 瑰,徐 暠,郗洪柱

(航天長征火箭技術(shù)有限公司 北京 100076)

針對(duì)基于DSP芯片TMS320C6701的嵌入式軟件系統(tǒng)設(shè)計(jì)過程中常見的中斷沖突問題,提出相應(yīng)的解決方法和簡單有效的避免機(jī)制。通過將周期性中斷改為主循環(huán)查詢模式、將DSP系統(tǒng)計(jì)時(shí)由定時(shí)器中斷改為FPGA同步計(jì)時(shí)等方式,使系統(tǒng)中多個(gè)中斷設(shè)計(jì)簡化為一個(gè)中斷,避免中斷間的沖突。針對(duì)中斷和主程序間的訪問沖突,通過在主程序中關(guān)中斷等方式,避免共享資源訪問沖突。針對(duì)DSP系統(tǒng)和外部總線的訪問沖突,通過約定接口的通信協(xié)議,避免時(shí)序沖突。通過靜態(tài)分析和動(dòng)態(tài)長周期測試驗(yàn)證,方法有效避免了中斷沖突,實(shí)現(xiàn)簡單;針對(duì)不同沖突機(jī)制,措施靈活。設(shè)計(jì)已應(yīng)用于星載相關(guān)設(shè)備,也可推廣至其他嵌入式軟件系統(tǒng)使用。

DSP;FPGA;1553B總線;中斷沖突

引 言

DSP芯片TMS320C6701具有很好的抗輻照特性,適用于深空探測和長時(shí)間在軌飛行,在運(yùn)載火箭上面級(jí)領(lǐng)域和星載領(lǐng)域得到廣泛應(yīng)用[1]?;贒SP的星載嵌入式軟件多為中斷驅(qū)動(dòng)型,即主程序加中斷的程序結(jié)構(gòu),屬于非常典型的實(shí)時(shí)并發(fā)軟件,要求能夠?qū)崟r(shí)處理各種隨機(jī)任務(wù)并完成多種計(jì)算活動(dòng)[2]。而在DSP中斷系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)過程中很容易引入諸如中斷嵌套錯(cuò)誤、現(xiàn)場保護(hù)錯(cuò)誤、開關(guān)中斷時(shí)機(jī)錯(cuò)誤等軟件錯(cuò)誤;一旦由于中斷造成了程序錯(cuò)誤,則會(huì)導(dǎo)致一系列不易追蹤的嚴(yán)重軟件故障,且大多問題對(duì)系統(tǒng)來說常常是致命的,嚴(yán)重時(shí)可導(dǎo)致系統(tǒng)或軟件失效[3,4]。由于航天型號(hào)軟件對(duì)可靠性和安全性有很高的要求,提出針對(duì)中斷沖突的解決方法和避免機(jī)制對(duì)于提高整個(gè)軟件的安全性具有重要意義[5]。

多數(shù)文獻(xiàn)對(duì)中斷沖突的研究集中在檢測方法上,主要側(cè)重于對(duì)軟件中存在的中斷沖突的測試和發(fā)現(xiàn)。本文對(duì)基于DSP的嵌入式軟件系統(tǒng)中常見的中斷沖突,從軟件設(shè)計(jì)和編碼角度出發(fā),提出有效改進(jìn)措施,避免沖突發(fā)生。

1 系統(tǒng)架構(gòu)

基于DSP的嵌入式軟件系統(tǒng)采用DSP+FPGA控制方式。FPGA周期性采集傳感器原始測量數(shù)據(jù)和電壓遙測數(shù)據(jù),并通過HPI(Host-Port Interface)接口發(fā)送給DSP;DSP完成傳感器數(shù)據(jù)處理和測量結(jié)果計(jì)算,并根據(jù)1553B總線命令完成與上級(jí)總線控制器BC(Bus Controller)的原始測量數(shù)據(jù)和遙測信息傳輸,實(shí)現(xiàn)系統(tǒng)代碼在線升級(jí)等功能。

DSP系統(tǒng)的外部接口圖如圖1所示,接口功能如下:

圖1 DSP外部接口

① DSP通過EMIF(External Memory Interface)接口的CE1口與可編程只讀存儲(chǔ)器PROM相連,PROM用于存放程序代碼。

② DSP通過EMIF接口的CE3口與1553B總線芯片B65170相連。DSP芯片可通過1553B總線接收上級(jí)總線控制器BC發(fā)送的總線指令和更新代碼;也可通過1553B總線向上級(jí)BC發(fā)送設(shè)備的數(shù)據(jù)和狀態(tài)信息。

③ DSP通過HPI接口與FPGA相連,由FPGA完成對(duì)磁阻式掉電非易失存儲(chǔ)器MRAM的讀寫訪問,實(shí)現(xiàn)對(duì)設(shè)備更新程序、更新標(biāo)識(shí)及復(fù)位標(biāo)識(shí)的保存工作。FPGA通過HPI接口周期性發(fā)送原始測量數(shù)據(jù)給DSP。

2 中斷沖突

基于DSP的嵌入式軟件系統(tǒng)在設(shè)計(jì)過程中,常見的中斷有:

① FPGA周期性發(fā)送的傳感器原始測量數(shù)據(jù)中斷和電壓遙測數(shù)據(jù)中斷。其中,傳感器原始測量數(shù)據(jù)中斷0.2s一次,電壓遙測數(shù)據(jù)中斷1s一次。

② 定時(shí)器中斷,用于系統(tǒng)計(jì)時(shí),定時(shí)周期25μs。

③ 接收1553B總線命令中斷,為隨機(jī)中斷。

由于中斷觸發(fā)的隨機(jī)性和不確定性,中斷與中斷間、中斷與主程序之間都有可能發(fā)生時(shí)序沖突。對(duì)于不受DSP控制的外部觸發(fā)中斷,在中斷初始化過程中,若初始化流程不當(dāng),可能會(huì)導(dǎo)致系統(tǒng)始終無法響應(yīng)外部觸發(fā)中斷,造成系統(tǒng)功能的失效。

系統(tǒng)中的中斷沖突可分為時(shí)序沖突和共享資源沖突。其中,時(shí)序沖突有初始化沖突、中斷間沖突、DSP與1553B總線訪問沖突;共享資源沖突又可細(xì)分為全局變量訪問沖突、內(nèi)存地址訪問沖突和外部接口訪問沖突等。

2.1 時(shí)序沖突

2.1.1 初始化沖突

DSP系統(tǒng)中三個(gè)中斷的啟動(dòng)機(jī)制如下:

① FPGA由DSP發(fā)送控制信號(hào)以開啟原始測量數(shù)據(jù)和電壓遙測數(shù)據(jù)采集,然后周期性發(fā)送原始測量數(shù)據(jù)、電壓遙測數(shù)據(jù)和中斷信號(hào)給DSP。

② 定時(shí)器中斷的開啟、暫停和停止都由DSP軟件進(jìn)行控制。

③ 1553B中斷由上級(jí)BC觸發(fā),對(duì)于DSP系統(tǒng)而言屬于隨機(jī)信號(hào)。上級(jí)BC通過1553B總線發(fā)送總線命令給1553B芯片B65170,芯片B65170在完成與上級(jí)BC的信息交互后,發(fā)送1553B中斷信號(hào)(低電平信號(hào))給DSP的外部中斷接口。DSP的外部中斷由下降沿觸發(fā)。DSP通過外部中斷接口接收到1553B中斷后,需通過讀B65170的中斷狀態(tài)寄存器以清除1553B中斷信號(hào)。若在DSP對(duì)外部中斷接口進(jìn)行初始化使能過程中,接收到1553B中斷信號(hào),由于DSP的外部中斷接口尚未使能,且初始化過程中有對(duì)DSP的外部中斷標(biāo)識(shí)進(jìn)行清零,就會(huì)使1553B中斷信號(hào)的狀態(tài)與DSP的外部中斷標(biāo)識(shí)不一致,導(dǎo)致1553B中斷信號(hào)始終保持低電平,無法進(jìn)行下降沿觸發(fā),后續(xù)整個(gè)系統(tǒng)將始終無法收到1553B中斷,與上級(jí)BC無法進(jìn)行正常通信。

FPGA中斷和定時(shí)器中斷都由DSP開啟,初始化過程中不存在時(shí)序沖突。而1553B中斷由外部設(shè)備觸發(fā),具有隨機(jī)性,在初始化過程中存在沖突的可能。為避免沖突造成系統(tǒng)功能失效,在1553B中斷初始化過程中,需對(duì)1553B總線進(jìn)行清中斷,具體初始化流程如圖2所示。在開全局中斷后,進(jìn)行清1553B中斷操作,可使系統(tǒng)在能夠響應(yīng)和處理1553B中斷時(shí),1553B中斷處于可觸發(fā)狀態(tài)。同時(shí),由于上級(jí)BC只有在輪詢到有效的自檢測字后,才會(huì)發(fā)送有效中斷指令給DSP系統(tǒng),不會(huì)存在先開全局中斷,再清除1553B中斷后,造成有效中斷指令丟失的情況。

因此,在對(duì)外部中斷進(jìn)行初始化時(shí),要注意時(shí)序沖突問題,保證外部中斷的隨機(jī)觸發(fā),不會(huì)使中斷信號(hào)被鎖死,造成系統(tǒng)功能失效。

圖2 1553B中斷初始化流程

2.1.2 中斷間沖突

DSP芯片TMS320C6701接收到中斷,在進(jìn)行中斷處理時(shí),硬件會(huì)先關(guān)閉全局中斷,禁用其他可屏蔽中斷。

基于DSP的嵌入式軟件系統(tǒng)有三個(gè)可屏蔽中斷,在運(yùn)行過程中可能會(huì)出現(xiàn)如下情況:

在FPGA中斷或1553B中斷處理過程中,若定時(shí)器中斷被觸發(fā),則會(huì)被屏蔽掉;定時(shí)器周期為25μs,而其他中斷處理時(shí)間若大于25μs,就會(huì)造成漏中斷的現(xiàn)象,造成系統(tǒng)計(jì)時(shí)誤差。

為避免出現(xiàn)定時(shí)器漏中斷的情況,需進(jìn)行中斷嵌套。在進(jìn)入其他中斷服務(wù)程序時(shí),需開全局中斷,使能定時(shí)器中斷,允許定時(shí)器中斷打斷其他中斷服務(wù)程序。在中斷嵌套時(shí),一次中斷時(shí)間可能是兩個(gè)中斷或三個(gè)中斷服務(wù)程序運(yùn)行時(shí)間的累加和,在進(jìn)行程序時(shí)域分析時(shí)應(yīng)注意。同時(shí),在允許被打斷的中斷服務(wù)程序中,需做好對(duì)中斷返回地址和全局中斷使能狀態(tài)的保存,防止中斷被打斷后中斷返回地址和全局中斷使能狀態(tài)丟失,造成程序運(yùn)行錯(cuò)誤。

由于系統(tǒng)存在三個(gè)可屏蔽中斷,F(xiàn)PGA中斷與1553B中斷間、嵌套后的FPGA中斷與1553B中斷間都可能存在時(shí)域沖突,且由于加入中斷嵌套后,對(duì)時(shí)域沖突的分析更加復(fù)雜。為簡化系統(tǒng)設(shè)計(jì),避免中斷沖突,利用三個(gè)中斷的特性,將三個(gè)中斷簡化為一個(gè)中斷。具體如下:

① FPGA中斷的最短周期為0.2s,主程序循環(huán)一次的時(shí)間小于50ms。通過在主循環(huán)中對(duì)FPGA中斷信號(hào)進(jìn)行輪詢,可滿足FPGA中斷的時(shí)序要求,且FPGA周期發(fā)送的傳感器原始測量數(shù)據(jù)采用乒乓緩存的方式,不會(huì)出現(xiàn)發(fā)送給DSP的原始數(shù)據(jù)由于DSP處理不及時(shí)被FPGA實(shí)時(shí)采集的數(shù)據(jù)覆蓋的現(xiàn)象。利用乒乓緩存模式,還可提高FPGA的采樣速率,保持?jǐn)?shù)據(jù)的連續(xù)性和周期性。

② 定時(shí)器中斷主要用于系統(tǒng)計(jì)時(shí),系統(tǒng)的時(shí)間分辨率為25μs;因此,定時(shí)周期也為25μs。系統(tǒng)采用DSP+FPGA控制方式,為避免定時(shí)器頻繁中斷,影響測量數(shù)據(jù)處理周期,且為避免中斷嵌套可能帶來的時(shí)序沖突,利用FPGA并行進(jìn)程的優(yōu)勢,采用FPGA進(jìn)行系統(tǒng)時(shí)間的計(jì)時(shí);DSP提供系統(tǒng)時(shí)間的定期更新數(shù)據(jù);在需要對(duì)原始測量數(shù)據(jù)、遙測數(shù)據(jù)進(jìn)行打時(shí)間標(biāo)時(shí),從FPGA實(shí)時(shí)讀取系統(tǒng)時(shí)間。

由于系統(tǒng)時(shí)間采用6字節(jié)進(jìn)行存儲(chǔ),DSP在向FPGA發(fā)送更新時(shí)間和讀取時(shí)間時(shí),應(yīng)注意讀寫時(shí)序被打斷的情況。為避免時(shí)間信號(hào)在讀寫過程中被打斷,造成系統(tǒng)計(jì)時(shí)錯(cuò)誤,在DSP向FPGA發(fā)送更新時(shí)間時(shí),F(xiàn)PGA接收到完整的6字節(jié)數(shù)據(jù)后,才對(duì)時(shí)間數(shù)據(jù)進(jìn)行鎖存和使用;在DSP從FPGA讀取系統(tǒng)時(shí)間時(shí),F(xiàn)PGA在接收到第一個(gè)讀信號(hào)后,即鎖存整個(gè)6字節(jié)的時(shí)間數(shù)據(jù),避免由于中斷影響造成讀取時(shí)間錯(cuò)位的情況發(fā)生。

③ 1553B中斷為外部中斷,由上級(jí)總線控制器BC啟動(dòng),對(duì)于DSP系統(tǒng)而言屬于隨機(jī)中斷。1553B中斷主要用于完成設(shè)備與上級(jí)系統(tǒng)間的通信;設(shè)備通過1553B總線發(fā)送原始測量數(shù)據(jù)、測量結(jié)果、設(shè)備健康狀態(tài)給上級(jí)系統(tǒng);上級(jí)系統(tǒng)通過1553B總線發(fā)送總線指令給DSP,完成設(shè)備復(fù)位、恢復(fù)出廠設(shè)置、程序在線更新等功能。由于1553B中斷為隨機(jī)中斷,發(fā)送周期不確定,若出現(xiàn)漏中斷或中斷無響應(yīng)情況,會(huì)對(duì)系統(tǒng)造成較大影響。因此,1553B中斷仍采用中斷觸發(fā)方式,對(duì)接收到的中斷進(jìn)行實(shí)時(shí)處理。

通過將FPGA中斷改為由主程序進(jìn)行周期性輪詢,將定時(shí)器計(jì)時(shí)中斷改為由FPGA進(jìn)行系統(tǒng)計(jì)時(shí),簡化為只有一個(gè)外部1553B中斷,系統(tǒng)不再有FPGA中斷和定時(shí)器中斷,使系統(tǒng)不存在中斷與中斷間沖突的可能。

針對(duì)1553B中斷,若前后兩次中斷的觸發(fā)時(shí)間小于中斷服務(wù)程序的執(zhí)行時(shí)間,則會(huì)出現(xiàn)漏中斷或中斷處理不及時(shí)情況。為避免該情況,中斷服務(wù)程序的執(zhí)行時(shí)間應(yīng)盡可能短。本系統(tǒng)中最短的總線消息為發(fā)送方式代碼矢量字,理論最短時(shí)間為68μs(方式指令+狀態(tài)字+數(shù)據(jù)字+響應(yīng)時(shí)間+消息間隔=20μs+20μs+20μs+4μs+4μs)。1553B中斷服務(wù)程序的執(zhí)行時(shí)間目前設(shè)置為20μs左右,可避免由于中斷服務(wù)程序運(yùn)行時(shí)間過長,造成漏中斷的情況發(fā)生。

2.1.3 DSP與1553B總線訪問沖突

1553B芯片B65170內(nèi)部RAM的數(shù)據(jù)區(qū)可由DSP系統(tǒng)和1553B總線共同進(jìn)行讀寫訪問。接收、發(fā)送和廣播查詢表可由DSP進(jìn)行讀寫訪問;1553B總線通過訪問數(shù)據(jù)區(qū)可對(duì)設(shè)置為循環(huán)緩存區(qū)的接收、發(fā)送和廣播查詢表中的地址指針進(jìn)行修改。因此,DSP系統(tǒng)和1553B總線在對(duì)芯片B65170內(nèi)部RAM的數(shù)據(jù)區(qū)和查詢表進(jìn)行訪問時(shí),可能存在時(shí)序沖突;由時(shí)序沖突引發(fā)的問題最終可表現(xiàn)為內(nèi)部RAM區(qū)的數(shù)據(jù)沖突,具體表現(xiàn)如下:

① 在1553B總線對(duì)芯片B65170內(nèi)部RAM數(shù)據(jù)循環(huán)緩存區(qū)進(jìn)行讀寫訪問時(shí),對(duì)應(yīng)查詢表的地址指針會(huì)隨之更改;此時(shí)若DSP系統(tǒng)對(duì)查詢表中的地址指針進(jìn)行初始化,就會(huì)造成1553B總線讀取數(shù)據(jù)重復(fù)、錯(cuò)位,寫數(shù)據(jù)被覆蓋、丟失等現(xiàn)象的出現(xiàn)。

② 在1553B總線對(duì)芯片內(nèi)部RAM數(shù)據(jù)區(qū)進(jìn)行讀原始測量數(shù)據(jù)、遙測數(shù)據(jù)等操作時(shí),若DSP系統(tǒng)進(jìn)行對(duì)應(yīng)數(shù)據(jù)區(qū)的寫入,就會(huì)造成1553B總線讀取的數(shù)據(jù)為新舊數(shù)據(jù)包的組合,造成數(shù)據(jù)丟幀現(xiàn)象的出現(xiàn)。

③ 在1553B總線對(duì)芯片內(nèi)部RAM數(shù)據(jù)區(qū)進(jìn)行寫更新代碼等操作時(shí),若DSP系統(tǒng)讀取不及時(shí),就會(huì)造成接收數(shù)據(jù)新舊結(jié)合、接收數(shù)據(jù)校驗(yàn)不正確或接收數(shù)據(jù)丟幀等現(xiàn)象的出現(xiàn)。

由于DSP對(duì)芯片B65170內(nèi)部RAM區(qū)的操作和1553B總線的讀寫訪問由不同的CPU系統(tǒng)控制,可通過約定接口的通信協(xié)議,避免DSP和1553B總線間的訪問沖突。具體措施如下:

① 針對(duì)查詢表中循環(huán)緩存區(qū)地址指針寫沖突問題,通過約定同一總線命令發(fā)送的最小間隔時(shí)間,可解決該問題。如:1553B總線讀原始數(shù)據(jù)周期為0.2s,讀遙測數(shù)據(jù)周期為1s,寫更新代碼的周期大于1s;而DSP系統(tǒng)是在1553B總線完成相應(yīng)讀寫操作、發(fā)送中斷后,才對(duì)循環(huán)緩存區(qū)地址指針進(jìn)行寫操作,完成指針初始化。DSP在接收到中斷后,在中斷服務(wù)程序中完成指針初始化,執(zhí)行時(shí)間約需20μs,遠(yuǎn)小于總線命令的發(fā)送周期,不會(huì)與下一周期發(fā)送的總線命令產(chǎn)生讀寫沖突。

通過約定1553B總線命令的訪問周期以及DSP系統(tǒng)的訪問時(shí)機(jī)和訪問時(shí)間,即可避免兩者之間的訪問沖突。

② 針對(duì)1553B總線讀操作和DSP系統(tǒng)寫操作沖突,可通過增加握手標(biāo)識(shí)解決該問題。如:將方式代碼矢量字設(shè)置為握手信號(hào),1553B總線在讀取到矢量字有效標(biāo)識(shí)后,開啟對(duì)原始測量數(shù)據(jù)、遙測數(shù)據(jù)的讀操作,讀完成后,發(fā)送中斷給DSP,DSP接收中斷后,在中斷服務(wù)程序中清矢量字有效標(biāo)識(shí)。DSP只有在矢量字標(biāo)識(shí)無效且有原始數(shù)據(jù)滿足發(fā)送條件時(shí),才會(huì)對(duì)總線芯片內(nèi)部RAM區(qū)進(jìn)行寫數(shù)據(jù)操作。

通過設(shè)置握手信號(hào),以及將1553B總線和DSP系統(tǒng)訪問的條件設(shè)置為互斥狀態(tài),避免兩者一讀、一寫產(chǎn)生訪問沖突。

③ 針對(duì)1553B總線寫操作和DSP系統(tǒng)讀操作沖突,可通過約定總線指令的發(fā)送周期,以及DSP系統(tǒng)的處理周期來避免兩者之間的讀寫沖突。如:1553B總線發(fā)送程序更新代碼的周期大于1s,而DSP系統(tǒng)接收到一次總線數(shù)據(jù)并完成處理的時(shí)間小于50ms,這樣就可避免由于DSP系統(tǒng)處理超時(shí)造成DSP在進(jìn)行總線數(shù)據(jù)接收處理時(shí)又有新的總線數(shù)據(jù)發(fā)送,導(dǎo)致出現(xiàn)數(shù)據(jù)被覆蓋及丟失的情況。

1553B總線指令的接收和保存在中斷服務(wù)程序中進(jìn)行,執(zhí)行和處理在DSP主程序中進(jìn)行。DSP系統(tǒng)通過保證主程序循環(huán)一次的運(yùn)行時(shí)間小于總線指令的最小發(fā)送間隔時(shí)間,如此可避免總線指令處理超時(shí)等情況的發(fā)生。

通過約定接口的通信協(xié)議,可避免由不同CPU控制的DSP芯片和1553B總線對(duì)同一內(nèi)存區(qū)訪問的沖突。

2.2 共享資源沖突

系統(tǒng)經(jīng)簡化設(shè)計(jì)后,只有一個(gè)外部1553B中斷,因此,系統(tǒng)產(chǎn)生中斷沖突的風(fēng)險(xiǎn)就存在于1553B中斷和主程序之間。

為減少中斷服務(wù)程序的執(zhí)行時(shí)間,避免執(zhí)行時(shí)間過長,造成漏中斷的現(xiàn)象,通常中斷服務(wù)程序只對(duì)1553B總線發(fā)送的命令進(jìn)行簡單的校驗(yàn)和記錄??偩€命令的處理在主程序中進(jìn)行。主程序循環(huán)一次的時(shí)間小于50ms,而所有需處理的1553B總線命令周期均大于50ms。通過主程序處理能保證1553B總線命令處理和接收的及時(shí)性,避免出現(xiàn)漏中斷情況。

1553B中斷和主程序之間可能存在共享資源沖突,常見的共享資源沖突有全局變量訪問沖突、內(nèi)存地址訪問沖突和外部接口訪問沖突。

2.2.1 全局變量訪問沖突

系統(tǒng)中主程序和1553B中斷服務(wù)程序都進(jìn)行寫操作的全局變量有接收1553B總線命令計(jì)數(shù)和接收廣播時(shí)間碼標(biāo)識(shí)。

① 1553B中斷服務(wù)程序在接收到總線命令后,會(huì)對(duì)接收1553B總線命令計(jì)數(shù)進(jìn)行加1操作;主程序在完成總線命令處理后,若已處理和接收總線命令個(gè)數(shù)不小于緩存區(qū)最大數(shù),則對(duì)已處理和接收總線命令計(jì)數(shù)減去緩存區(qū)最大數(shù),防止數(shù)據(jù)溢出。

為避免主程序和1553B中斷服務(wù)程序?qū)邮?553B總線命令計(jì)數(shù)的修改沖突,在主程序?qū)邮?553B總線命令計(jì)數(shù)進(jìn)行修改時(shí)需進(jìn)行關(guān)中斷操作。

② 1553B中斷服務(wù)程序在第一次接收到上級(jí)BC發(fā)送的廣播時(shí)間碼后,將接收廣播時(shí)間碼標(biāo)識(shí)置為有效;主程序在檢測到接收廣播時(shí)間碼標(biāo)識(shí)有效后,初始化時(shí)間標(biāo)識(shí),開啟對(duì)程序周期性檢測;為防止標(biāo)識(shí)被打翻,主程序?qū)邮諒V播時(shí)間碼標(biāo)識(shí)進(jìn)行大數(shù)判決,將被打翻的標(biāo)識(shí)進(jìn)行修正。

為避免主程序和1553B中斷服務(wù)程序?qū)邮諒V播時(shí)間碼標(biāo)識(shí)的修改沖突,增加一個(gè)全局變量標(biāo)識(shí),該標(biāo)識(shí)在中斷服務(wù)程序中,只要接收到廣播時(shí)間碼,即置為有效;在主程序中,對(duì)該標(biāo)識(shí)進(jìn)行判別,若該標(biāo)識(shí)有效且接收廣播時(shí)間碼標(biāo)識(shí)為無效,置接收廣播時(shí)間碼標(biāo)識(shí)為有效,且周期性對(duì)接收廣播時(shí)間碼標(biāo)識(shí)進(jìn)行大數(shù)判決。通過該方法,可解決主程序和1553B中斷服務(wù)程序間的寫沖突。

2.2.2 內(nèi)存地址訪問沖突

方式代碼矢量字對(duì)應(yīng)的數(shù)據(jù)字保存在芯片B65170內(nèi)部RAM 0x120地址中,主程序和1553B中斷服務(wù)程序?qū)υ搩?nèi)存地址都有寫操作。方式代碼矢量字用于標(biāo)識(shí)原始測量數(shù)據(jù)、遙測數(shù)據(jù)是否準(zhǔn)備好;上級(jí)讀取到方式代碼矢量字有效標(biāo)識(shí)后,對(duì)數(shù)據(jù)進(jìn)行讀取,讀取結(jié)束,發(fā)送中斷,DSP接收中斷后,在中斷服務(wù)程序中將方式代碼矢量字置為無效;主程序在得到有效數(shù)據(jù)后,會(huì)重新將方式代碼矢量字置為有效。由于方式代碼矢量字包含對(duì)原始測量數(shù)據(jù)、遙測數(shù)據(jù)和接收注入數(shù)據(jù)等數(shù)據(jù)的標(biāo)識(shí),因此主程序和1553B中斷服務(wù)程序間存在寫沖突。

內(nèi)存地址訪問沖突和全局變量訪問沖突性質(zhì)一致,也可通過在主程序中關(guān)中斷的方式,解決兩者間的寫沖突。

在主程序中進(jìn)行關(guān)中斷操作,應(yīng)注意關(guān)中斷的時(shí)間,防止出現(xiàn)由于關(guān)中斷而造成漏中斷的現(xiàn)象出現(xiàn)。本系統(tǒng)中關(guān)中斷時(shí)間都在μs量級(jí),可避免關(guān)中斷超時(shí)情況。

2.2.3 外部接口訪問沖突

由于系統(tǒng)由FPGA進(jìn)行時(shí)間計(jì)時(shí),DSP在1553B中斷服務(wù)程序中接收到廣播時(shí)間碼后,將廣播時(shí)間碼轉(zhuǎn)發(fā)給FPGA,由FPGA進(jìn)行時(shí)間修正。在主程序中,DSP完成初始化后,會(huì)發(fā)送時(shí)間碼給FPGA,以開啟FPGA的數(shù)采功能。由于主程序和1553B中斷服務(wù)程序都對(duì)FPGA接口進(jìn)行寫操作,因此可能存在沖突。

由于主程序只對(duì)FPGA接口進(jìn)行一次寫時(shí)間碼操作,為避免主程序和中斷服務(wù)程序間的沖突,將主程序中寫時(shí)間碼操作放在1553B中斷使能之前進(jìn)行。由于中斷使能所需的時(shí)間為μs級(jí),在寫時(shí)間碼啟動(dòng)FPGA數(shù)采功能后,F(xiàn)PGA至少需要0.2s發(fā)送測量數(shù)據(jù),不影響DSP對(duì)FPGA發(fā)送數(shù)據(jù)的及時(shí)接收。因此,將主程序中寫時(shí)間碼操作放在中斷使能之前,可避免中斷引起的訪問沖突,還可保證FPGA發(fā)送數(shù)據(jù)的正常接收。

根據(jù)存在中斷沖突的共享資源本身的特性,可通過增加全局變量、在主程序中關(guān)中斷以及改變寫操作的時(shí)機(jī)等方式避免中斷和主程序間的共享資源沖突。

3 未用中斷處理

基于DSP的嵌入式軟件系統(tǒng)通過查詢中斷向量表進(jìn)行中斷的處理。中斷向量表包含16條中斷,有復(fù)位中斷、不可屏蔽中斷、可屏蔽中斷及保留位。在本系統(tǒng)中,復(fù)位中斷跳轉(zhuǎn)到二次加載程序中,使用可屏蔽的外部中斷4作為1553B中斷(示于圖1);其他未用中斷若不作處理,則在程序指針誤跳入中斷向量表未用中斷進(jìn)程時(shí),程序運(yùn)行狀態(tài)將不可控,可能出現(xiàn)異常情況,造成系統(tǒng)混亂。

為增加程序可靠性,保證程序在誤入未用中斷后仍能正常跳出中斷,不影響系統(tǒng)的正常運(yùn)行,在未用中斷的中斷服務(wù)程序中,禁止未用中斷的中斷使能并清除對(duì)應(yīng)的中斷標(biāo)識(shí),使程序能正常退出中斷服務(wù)程序的同時(shí),保證下次不再進(jìn)入未用中斷。

4 結(jié)束語

針對(duì)基于DSP的嵌入式軟件系統(tǒng)中常見中斷沖突,從時(shí)序沖突和共享資源沖突兩方面進(jìn)行研究和分析,根據(jù)產(chǎn)生機(jī)理不同,提出了靈活有效的中斷沖突避免機(jī)制。對(duì)于系統(tǒng)未用中斷,提出相應(yīng)保護(hù)機(jī)制。經(jīng)驗(yàn)證,針對(duì)不同沖突機(jī)制,該方案實(shí)現(xiàn)簡單、措施靈活,目前已應(yīng)用于星載相關(guān)設(shè)備,也可推廣至其他嵌入式軟件系統(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]. 空間控制技術(shù)與應(yīng)用, 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)資源沖突檢測技術(shù)研究[J]. 計(jì)算機(jī)工程與設(shè)計(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]. 空間控制技術(shù)與應(yīng)用, 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]. 空間控制技術(shù)與應(yīng)用, 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

載人航天預(yù)研(20184112043);民用航天預(yù)研(B0104);中國科協(xié)青年人才托舉工程(2018QNRC001)

2020-03-03

Email:ycyk704@163.com

TEL:010-68382327 010-68382557

劉 蓓 1991年生,碩士,工程師,主要研究方向?yàn)榍度胧杰浖O(shè)計(jì)。

鄭 林 1987年生,碩士,工程師,主要研究方向?yàn)楣鈱W(xué)氣體檢測。

蒙 瑰 1985年生,碩士,高級(jí)工程師,主要研究方向?yàn)楣鈱W(xué)氣體檢測。

徐 暠 1990年生,碩士,工程師,主要研究方向?yàn)閭鞲衅鬈浖O(shè)計(jì)。

郗洪柱 1988年生,博士在讀,工程師,主要研究方向?yàn)閭鞲衅饔布O(shè)計(jì)。

猜你喜歡
主程序中斷總線
自動(dòng)升級(jí)程序在船舶監(jiān)測系統(tǒng)中的應(yīng)用
淺談數(shù)控銑削技術(shù)代碼程序的嵌套方式研究
電控冰箱軟件模塊化設(shè)計(jì)
基于FPGA的中斷控制器設(shè)計(jì)*
Linux中斷線程化分析及中斷延時(shí)測試
一種基于CAN總線的誤碼測試方法
跟蹤導(dǎo)練(二)(5)
千里移防,衛(wèi)勤保障不中斷
時(shí)光倒流 換回PotPlayer老圖標(biāo)
CAN總線并發(fā)通信時(shí)下位機(jī)應(yīng)用軟件設(shè)計(jì)
抚宁县| 清河县| 和政县| 桂阳县| 雷山县| 台安县| 河北省| 龙门县| 余姚市| 耿马| 海盐县| 桃园市| 社会| 枣阳市| 防城港市| 西盟| 普兰店市| 西华县| 凌云县| 托克逊县| 迁安市| 阿拉尔市| 二连浩特市| 崇明县| 商都县| 汽车| 合江县| 宁武县| 怀化市| 古交市| 新平| 凌海市| 亳州市| 哈巴河县| 米林县| 淮北市| 泉州市| 蒲城县| 鄂温| 凉山| 永善县|