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

?

單片機(jī)軟件中斷測(cè)試技術(shù)研究

2015-06-24 13:16代曉倩尤志堅(jiān)
電腦知識(shí)與技術(shù) 2015年11期
關(guān)鍵詞:軟件測(cè)試單片機(jī)

代曉倩++尤志堅(jiān)

摘要:該文探討了單片機(jī)軟件測(cè)試的關(guān)鍵技術(shù)中斷測(cè)試技術(shù),并根據(jù)自己的測(cè)試實(shí)踐討論了型號(hào)項(xiàng)目軟件測(cè)試中出現(xiàn)的問題。

關(guān)鍵詞:軟件測(cè)試;中斷測(cè)試;單片機(jī)

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)11-0195-02

Research of interrupt testing technology of Single Chip Microcomputer

Dai Xiao-qian,You Zhi-jian

(Shanghai Aerospace Electronic Technology Institute, Shanghai 201109, China)

Abstract: This paper discusses the important technology about interrupt testing of Single Chip Microcomputer software, according to the authors testing practice it discuss some issues derived from the software testing of a type of project.

Key words: software testing; Interrupt testing; Single Chip Microcomputer

單片機(jī)因其高可靠性已被廣泛應(yīng)用于航天系統(tǒng)中,因此單片機(jī)軟件的可靠性也成為影響這些系統(tǒng)的非常關(guān)鍵的因素。由于中斷技術(shù)在軟件實(shí)時(shí)響應(yīng)、多任務(wù)處理和突發(fā)事件響應(yīng)中的優(yōu)勢(shì),使得它在航天型號(hào)軟件中不可或缺。但是中斷程序執(zhí)行的隨機(jī)性,使得中斷所帶來的問題具有偶發(fā)性和隱蔽性,在軟件測(cè)試中通常很難被發(fā)現(xiàn),這給軟件測(cè)試帶來了很大的困難。

因此,本文結(jié)合航天軟件測(cè)評(píng)工作的特點(diǎn),將單片機(jī)軟件中斷測(cè)試細(xì)化到以下測(cè)試類型包括代碼審查、性能測(cè)試、余量測(cè)試、強(qiáng)度測(cè)試中,力求中斷測(cè)試更充分有效,更多發(fā)現(xiàn)問題。

1 代碼審查

在實(shí)際應(yīng)用中,由于中斷和硬件、環(huán)境、以及應(yīng)用密切相關(guān),復(fù)雜性高,不可能進(jìn)行充分的測(cè)試,所以必須在進(jìn)行中斷測(cè)試之前做好比較完備的中斷代碼審查及分析,然后在此基礎(chǔ)上進(jìn)行一些必要的測(cè)試。以單片機(jī)軟件為例,做好中斷的代碼審查工作,除了編碼的正確性需要得到保證之外,還需要著重對(duì)以下幾個(gè)方面進(jìn)行審查。

1.1 未使用中斷向量是否處理

對(duì)未用中斷的中斷向量進(jìn)行處理,避免觸發(fā)未用中斷或者跳到未用中斷的中斷向量區(qū)而帶來的未知影響。處理方法可以采用跳轉(zhuǎn)到統(tǒng)一的陷阱處理程序等。

1.2 軟件復(fù)位是否進(jìn)行兩次中斷返回

MSC-51單片機(jī)有兩個(gè)中斷優(yōu)先級(jí),如果軟件在二級(jí)中斷嵌套時(shí)走飛,隨后由軟件陷阱轉(zhuǎn)入初始化程序時(shí),則當(dāng)前中斷服務(wù)狀態(tài)標(biāo)志有2個(gè),需要進(jìn)行2次RETI操作來清除中斷服務(wù)狀態(tài)標(biāo)志,否則,軟件無法響應(yīng)中斷請(qǐng)求。代碼實(shí)現(xiàn)如下:

1.3 檢查是否存在函數(shù)重入

Keil c51默認(rèn)環(huán)境下,函數(shù)如果不做特殊處理是不可重入的。如果函數(shù)調(diào)用有重入,會(huì)產(chǎn)生不同模塊間變量相互覆蓋的風(fēng)險(xiǎn)。對(duì)于無法避免重入函數(shù)的情況,設(shè)計(jì)師可編寫兩個(gè)語句相同名稱不同的子函數(shù)分別供主程序和中斷服務(wù)程序調(diào)用。

1.4 檢查變量類型是否合理

在單片機(jī)高級(jí)語言編程中,對(duì)于在主程序和中斷(或在不同優(yōu)先級(jí)的中斷)中同時(shí)用到的公共變量應(yīng)盡量定義為單字節(jié)變量如unsigned char型。下文描述了一個(gè)錯(cuò)誤的案例,代碼如下圖。

其中Int0為低優(yōu)先級(jí)中斷,Int1為高優(yōu)先級(jí)中斷。變量Cnt定義為16位unsigned int型,

在單片機(jī)中分高低字節(jié)存儲(chǔ)。Int0中斷服務(wù)子程序中Cnt加1(C語言描述為Cnt++)對(duì)應(yīng)的匯編代碼及解釋如下:

其中“Cnt+01H”和“Cnt”分別表示存放Cnt變量的低字節(jié)和高字節(jié)數(shù)據(jù)地址。從上述匯編代碼分析可知,當(dāng)Int0中斷服務(wù)子程序執(zhí)行完第一句后執(zhí)行第二句前,此時(shí)被高優(yōu)先級(jí)的Int1中斷打斷,而后在Int1中斷服務(wù)子程序中又將Cnt的高低字節(jié)均清為0,因此導(dǎo)致Int1中斷處理結(jié)束后,程序回到Int0中斷服務(wù)子程序執(zhí)行上面第二句代碼時(shí),誤以為是Cnt低字節(jié)加1溢出(0xff+1),因此將Cnt高字節(jié)加1(變?yōu)?x0100),進(jìn)而導(dǎo)致后續(xù)大于200條件判斷成立,即錯(cuò)誤執(zhí)行語句“Bus1553B= ERR;”從而導(dǎo)致軟件復(fù)位1553B總線芯片。

1.5 中斷資源沖突檢查

中斷程序可以在任何時(shí)刻運(yùn)行,如某一資源同時(shí)為兩個(gè)以上的中斷程序或中斷程序和主程序所使用,這時(shí)相互之間就可能發(fā)生資源沖突。當(dāng)軟件中斷程序很長變量較多,并且比較復(fù)雜的情況下,中斷資源沖突檢查的難度也將大大增加。怎樣才能做好中斷資源沖突檢查呢?目前,中斷資源沖突檢查主要還是采用人工分析方法,首先列出主程序和中斷程序中使用的公共資源,包括括寄存器、變量、緩沖區(qū)、IO端口等等,并明確這些資源在函數(shù)中的訪問特性,包括只讀、只寫、讀寫特性;接著對(duì)上述資源逐一分析,一般情況下,當(dāng)公共資源在中斷函數(shù)中為只讀狀態(tài),不會(huì)與主程序使用該資源產(chǎn)生沖突;而當(dāng)公共資源在中斷函數(shù)中為讀寫或者只寫狀態(tài)時(shí),就要注意資源使用沖突問題了。

做好中斷資源沖突檢查,測(cè)評(píng)人員不光要做到對(duì)中斷程序心中有數(shù),還要對(duì)整個(gè)系統(tǒng)運(yùn)行十分清楚,這需要在工程實(shí)踐中慢慢積累經(jīng)驗(yàn)。

2 性能測(cè)試

與中斷服務(wù)程序有關(guān)的性能好壞往往與軟件質(zhì)量有著密切的聯(lián)系。通??蓮囊韵聨追矫嫒胧郑?/p>

2.1 測(cè)試定時(shí)中斷執(zhí)行周期

主要測(cè)試定時(shí)中斷周期設(shè)置是否合理,在被高優(yōu)先級(jí)中斷推遲執(zhí)行的情況下,執(zhí)行周期是否滿足要求。

例如,若定時(shí)中斷程序每0.5ms執(zhí)行一次,且用來輸出某周期性控制信號(hào),而此周期信號(hào)的頻率又被下級(jí)軟件采集使用,則當(dāng)軟件中存在另一高優(yōu)先級(jí)中斷執(zhí)行將定時(shí)中斷推遲執(zhí)行后,會(huì)直接影響某周期信號(hào)的輸出,進(jìn)而對(duì)下級(jí)軟件的執(zhí)行產(chǎn)生影響。

2.2 測(cè)試中斷服務(wù)程序最長執(zhí)行時(shí)間

通常中斷服務(wù)程序執(zhí)行時(shí)間不應(yīng)太長,數(shù)據(jù)處理要盡量放在主程序中進(jìn)行。在中斷服務(wù)程序中應(yīng)避免出現(xiàn)延時(shí)等待的語句。發(fā)生嵌套時(shí)高優(yōu)先級(jí)的中斷處理完畢后低優(yōu)先級(jí)的中斷應(yīng)還有足夠的時(shí)間繼續(xù)處理。

測(cè)試的方法主要是利用性能測(cè)試的手段,得到高優(yōu)先級(jí)和低優(yōu)先級(jí)中斷的最長處理時(shí)間,當(dāng)中斷嵌套產(chǎn)生時(shí),高優(yōu)先級(jí)中斷最長處理時(shí)間加上低優(yōu)先級(jí)中斷最長處理時(shí)間應(yīng)小于低優(yōu)先級(jí)中斷的產(chǎn)生周期。

2.3 分析中斷執(zhí)行時(shí)間對(duì)主循環(huán)的影響

主循環(huán)最大執(zhí)行時(shí)間要考慮主循環(huán)被中斷打斷后的最大執(zhí)行時(shí)間,并確認(rèn)主循環(huán)最大執(zhí)行時(shí)間是否仍然滿足要求。

3 余量測(cè)試

中斷的余量測(cè)試主要測(cè)試以下兩點(diǎn):

1) 中斷執(zhí)行時(shí)間的余量,一般針對(duì)有周期性時(shí)間要求的中斷進(jìn)行,測(cè)試的方法主要是利用性能測(cè)試的手段,得到中斷的最長處理時(shí)間,中斷處理時(shí)間一般要求留有20%的余量,即中斷最長處理時(shí)間不應(yīng)超過中斷周期時(shí)間的80%。

2) 堆棧使用余量

函數(shù)/子程序嵌套、中斷嵌套以及函數(shù)和中斷之間的嵌套運(yùn)行都要占用堆??臻g,而堆??臻g的不足會(huì)導(dǎo)致不可預(yù)知的后果。所以軟件中斷內(nèi)代碼不能太多,涉及變量也不要太多,否則可能會(huì)導(dǎo)致比較大的堆棧需要,甚至導(dǎo)致堆棧溢出。

堆棧使用情況的測(cè)試通常是先采用人工分析方法找出程序的最大調(diào)用深度即最長執(zhí)行路徑,然后在仿真環(huán)境中運(yùn)行程序,記錄SP指針的初始值,然后沿最大調(diào)用深度執(zhí)行程序記錄SP指針的最大值,最后計(jì)算堆??臻g余量??紤]系統(tǒng)升級(jí)和擴(kuò)展的需要,堆棧使用余量要大于20%。

4 強(qiáng)度測(cè)試

中斷的強(qiáng)度測(cè)試就是測(cè)試中斷產(chǎn)生的頻率達(dá)到什么情況時(shí)軟件無法正常處理;一般都是對(duì)通訊類的中斷進(jìn)行強(qiáng)度測(cè)試,測(cè)試的方法是逐漸縮短中斷產(chǎn)生的時(shí)間間隔直到軟件無法正常響應(yīng),得到軟件中斷處理的強(qiáng)度。另外值得注意的是當(dāng)縮短中斷產(chǎn)生的時(shí)間間隔后,適當(dāng)延長軟件測(cè)試時(shí)間,往往可以加速暴露一些資源使用沖突問題,因此在進(jìn)行強(qiáng)度測(cè)試時(shí),在考慮增加頻率的情況下應(yīng)適當(dāng)延長軟件測(cè)試時(shí)間,使軟件問題充分暴露。

5 結(jié)束語

本文從四大測(cè)試類型即代碼審查、性能測(cè)試、余量測(cè)試、強(qiáng)度測(cè)試出發(fā),全面總結(jié)了單片機(jī)軟件中斷測(cè)試技術(shù)。其中中斷代碼審查技術(shù)是重點(diǎn)也是基礎(chǔ),性能、余量、強(qiáng)度測(cè)試是深入化的測(cè)試,測(cè)試人員需靈活運(yùn)用上述測(cè)試技術(shù),才能較好的發(fā)現(xiàn)中斷程序的問題,提高軟件質(zhì)量。

參考文獻(xiàn):

[1] 高鋒,單片微型計(jì)算機(jī)原理與接口技術(shù)[M].科學(xué)出版社,2007.

[2] 柳純錄.軟件評(píng)測(cè)師教程[M]. 清華大學(xué)出版社,2005.

猜你喜歡
軟件測(cè)試單片機(jī)
基于OBE的軟件測(cè)試課程教學(xué)改革探索
航天軟件測(cè)試模型構(gòu)建與應(yīng)用
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
基于單片機(jī)的層次漸變暖燈的研究
基于單片機(jī)的便捷式LCF測(cè)量儀
EXCEL和VBA實(shí)現(xiàn)軟件測(cè)試記錄管理
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
關(guān)于軟件測(cè)試技術(shù)應(yīng)用與發(fā)展趨勢(shì)研究
基于單片機(jī)的平衡控制系統(tǒng)設(shè)計(jì)
Microchip推出兩個(gè)全新PIC單片機(jī)系列