999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式軟件資源沖突自動檢測系統設計

2017-03-23 10:21:29爍,周
電子設計工程 2017年5期

白 爍,周 晴

(1.中國科學院國家空間科學中心 北京100190;2.北京理工大學 北京100181;3.中國科學院大學 北京100190)

嵌入式軟件資源沖突自動檢測系統設計

白 爍1,3,周 晴1,2

(1.中國科學院國家空間科學中心 北京100190;2.北京理工大學 北京100181;3.中國科學院大學 北京100190)

由于在眾多的軟件測試工具中,能自動檢測共享資源沖突的軟件非常少,而共享資源沖突問題是嵌入式軟件研制中最常犯的、最不易發現、隱藏最深的問題之一,同時該問題一旦發生,帶來的影響后果也極為嚴重,可能導致軟件無法正常運行。為了解決這一問題,本文分析了共享資源沖突情況,并提出了一種針對嵌入式軟件共享資源沖突問題檢測的方案,使用C#語言編程,實現了自動檢測系統,并進行了相關驗證。

軟件測試;資源沖突;自動檢測;嵌入式軟件

目前嵌入式軟件應用越來越廣泛。軟件規模日益龐大、結構趨于復雜,對軟件測試水平提出了更高的要求[1]。在嵌入式系統中,由于系統高實時性要求,經常使用嵌入式實時操作系統和中斷技術,使專用軟件操作更加靈活,功能更加強大,但同時這也可能會導致共享資源沖突。這種沖突在早期不易被人發現,在運行中一旦發生造成的后果是嚴重的,可能引入系統崩潰[2]。目前對于軟件共享資源沖突檢測的軟件少之又少,主要通過人工代碼走查來檢測資源沖突,過于依賴測試人員的個人經驗,漏檢概率較大[3]。基于“早測試、早發現”的原則[4],本設計采用靜態分析的方法,通過詞法分析、語法分析、語義分析以及軟件并發性分析,在軟件開發早期對代碼進行自動檢測,判斷是否存在共享資源沖突問題[5]。本系統主要針對嵌入式軟件中最常用的 80C51系統和VxWorks系統而設計的。

1 共享資源沖突情況分析

1.1 資源沖突類型分析

資源沖突產生的根本原因是在嵌入式軟件中存在不同優先級的任務或中斷,低優先級任務運行至任意位置隨時可能被高優先級任務或中斷打斷。若軟件對共享資源保護不足,即資源在使用(引用或修改)前未關中斷,使用后開中斷,將導致不同級別任務使用的同一資源數據不一致或不完整,甚至錯誤。

資源沖突歸為3種類型:引用——修改沖突,修改——引用沖突,修改——修改沖突[6]。

1)引用——修改沖突即正在運行的函數中引用某共享資源時,被響應的高優先級函數或中斷函數修改了該共享資源。如圖1所示,圖1左中的函數引用了共享資源a,圖1右中的優先級高的中斷函數中修改了共享資源a,會造成資源引用沖突。Start函數中y運行的結果并不是期望的8,而是中斷修改后的1。

圖1 引用--修改沖突

2)修改——引用沖突即正在運行的函數中修改某共享資源時,被響應的高優先級函數或中斷函數引用了該共享資源。如圖2所示,左圖中的函數修改了共享資源a,當i=1,a[1]=1;之后被優先級高的中斷打斷,右圖中的優先級高的中斷函數中引用了共享資源a,出現數組b并不與數組a一致(a[3]= {1,2,3},b[3]={1,0,0}),導致數組b獲取數組a數據不完整。

圖2 修改--引用沖突

3)修改——修改沖突即正在運行的函數中修改某共享資源時,被響應的高優先級函數或中斷函數修改了該共享資源。如圖3所示,左圖中的函數修改了共享資源a,當i=1,a[1]=1;之后被優先級高的中斷打斷,右圖中的優先級高的中斷函數中也修改了共享資源a[0],會造成資源不一致。Start函數中數組a運行結果并不是期望的0、1、2,而變為5、1、2。

1.2 共享資源分析

通過分析,歸納出以下幾種發生沖突的共享資源的形式:

圖3 修改--修改沖突

1.2.1 單字節變量

嵌入式軟件中,在內部存儲區定義的單字節變量,若未進行資源保護,會引起引用——修改;在外部存儲區定義的單字節變量,通過編譯后實質也是執行多條語句,則可能會發生引用——修改、修改——引用或修改——修改類型3種類型的共享資源沖突。

1.2.2 多字節變量

共享資源是多字節變量,如果未進行資源保護,也會發生同類錯誤。如圖4所示的CPU為80C32單片機的代碼實例中,變量X_PowerOnCount定義為整型2字節,由于指令數據都是按字節操作,主程序讀取X_PowerOnCount實際是分為兩步,先讀低字節再讀高字節。期間若發生中斷,中斷服務程序改寫該變量, 程序會出錯。 假定主程序訪問變量X_PowerOnCount值為0x12FC時,主程序首先讀取了低字節 0xFC,此時中斷發生該變量改寫為0x1310,中斷返回后主程序讀取的值為0x13FC,導致主函數代碼執行出錯,發生引用——修改沖突。

圖4 代碼實例

1.2.3 寄存器地址(包括宏定義的地址)

在嵌入式軟件中,軟件可以直接讀取寄存器地址(包括宏定義的地址)的數據,因此寄存器地址(包括宏定義的地址)也是一種共享資源。下面給出一個寄存器地址發生共享資源沖突的例子。圖5為某嵌入式軟件的主循環程序流程圖,圖6為該嵌入式軟件的其中一個中斷服務程序流程圖。由圖5和圖6可以看出,當主循環從“讀取CAN狀態寄存器(B)”到“關閉中斷”準備發送數據幀前,中斷服務程序判斷CAN芯片不為發送狀態且芯片發送緩沖區為空閑,則向CAN芯片寫入一幀數據。當中斷服務程序執行結束后,主循環從被中斷語句繼續執行,這是主循環依據“讀取CAN狀態寄存器(B)”獲得的過時狀態,判斷出CAN芯片不是發送狀態且芯片發送緩沖區為空閑,主循環錯誤地向CAN芯片寫入一幀新數據。因此,造成由于中斷已向CAN芯片寫入一幀數據,發送尚未正常結束時主循環又向其寫入另一幀數據,導致先寫入的數據被覆蓋或后寫入的數據丟失。發生修改——修改沖突。

圖5 主循環程序流程圖

1.2.4 形 參

上述單字節、多字節公共變量、寄存器地址在函數中,若以形參方式進行傳遞,可能在被調用的函數內發生引用或修改,若未進行資源保護,可能會造成隱式的共享資源沖突。

1.2.5 指 針

共享資源是大塊數據,軟件通常采用指針方式來操作大塊數據,同理在對大塊數據進行讀寫操作時,若未進行保護,也會造成資源沖突,引起數據不完整或不正確。

圖6 中斷服務程序流程圖

2 系統實現方案

本系統針對上述類型沖突完成自動檢測,采用C#語言,使用SQL Server數據庫記錄中間結果。系統的體系結構分為前端的winform界面、后端的數據搜索以及數據分析。從前端界面加載代碼,由后端程序處理數據,再由前端界面顯示結果。系統的總體流程圖如圖7所示。

圖7 系統流程圖

1)詞法分析

對源程序文本文件進行掃描,提煉關鍵詞,詞是語言中具有獨立意義的最小單位。對關鍵詞進行詞法分析,識別包括關鍵字、標識符、運算符、界符、常量和變量等。

由于除C語言中固定的關鍵字外,程序員可能會自定義變量類型和關鍵字(例如:#define LOCALstatic;typedefsigned charINT8),所以也需要掃描、識別出程序員自定義的變量類型及關鍵字。此外,還需查找出程序員聲明的結構體以及共用體,以便進行語法分析時使用。

2)語法分析

本系統采用自頂向下的語法分析方法,即給定文法G和源程序串r。從G的開始符號S出發,通過反復使用產生式對句型中的非終結符進行替換 (推導),逐步推導出r。在完成詞法分析基礎上,進一步進行語法分析,包括:

① 提取出該源代碼中所有的函數,并獲取每個函數的基本信息,包括函數名稱、函數所在文件,函數所在的任務。

②利用①中的分析結果進行二次分析,獲取該程序中所有任務的信息,包括任務名稱、任務優先級及每個任務所調用的函數。

③ 分析形成源代碼程序中聲明的所有的共享資源,包括資源名稱及資源類型。

④ 利用以上三條分析結果,獲取所有共享資源的使用情況,包括共享資源名稱、使用該資源的函數、所在的任務名稱及讀寫情況。

3)語義分析

在語法分析基礎上,進行一步分析獲得所有共享資源的使用情況,包括共享資源名稱、使用該資源的函數、所在的任務名稱及共享資源在不同函數中讀寫情況。中斷服務程序也可看成是一種任務。

4)軟件并發性分析

本階段是一個邏輯判斷過程,依據前文提及的共享資源沖突分析形成沖突規則集,對共享資源使用情況進行規則檢查,分析是否有同一共享資源同時出現在了兩個優先級不同的任務中。若違反規則則給出初步警告。

根據給出的警告信息,逐條返回到優先級較低的函數中,查看被測軟件在使用該資源前是否關閉中斷或者禁止高優先級任務搶占,若沒有則提醒該共享資源會發生沖突。

3 結 論

根據以上方案,編程實現了針對C51系統及VxWorks系統檢測共享資源沖突的測試工具。本設計對某嵌入式軟件的源代碼進行共享資源沖突測試,結果顯示該系統可以提示出該軟件的源代碼中可能發生的包括引用——修改、修改——引用及修改——修改這三種類型的共享資源沖突問題的共享資源名稱及使用該共享資源的函數及所在任務、讀寫操作等信息。本系統可對單字節變量、多字節變量、形參及寄存器地址類型的共享資源進行自動檢測。下一階段將完成對指針類型的共享資源進行檢測。

[1]單錦輝,姜瑛,孫萍.軟件測試研究進展[J].北京大學學報:自然科學版,2005(1):134-145.

[2]王雅文,宮云戰,楊朝紅.軟件測試工具綜述[J].北京化工大學學報,2007(S1):1-4.

[3]金凌紫.面向對象軟件測試技術進展[J].計算機研究與發展,1998(1):6-13.

[4]宋穎.面向嵌入式C的軟件缺陷檢測技術的研究與實現[D].北京:北京郵電大學,2011.

[5]文昌辭,王昭順.軟件測試自動化靜態分析研究[J].計算機工程與設計,2005(4):987-989.

[6]楊芳,齊璇,董麗,等.嵌入式軟件中斷系統資源沖突檢測技術研究[J].計算機工程與設計,2010,31(23):5036-5038.

[7]人杰.計算機軟件測試技術[M].北京:清華大學出版社,1992.

[8]航天.航天型號軟件測試[M].北京:宇航出版社,1999.

[9]朱少民.軟件測試方法和技術[M].北京:清華大學出版社有限公司,2005.

[10]R.·帕頓(美),Patton R,周予濱,等.軟件測試[M].北京:機械工業出版社,2002.

[11]鞠秀娟,趙明.軟件自動化測試概述及應用工具分析[J].計算機應用,2007,27(B06):317-318.

[12]楊宇,張健.程序靜態分析技術與工具[J].計算機科學,2004,31(2):171-174.

[13]張健.精確的程序靜態分析[J].計算機學報,2008,31(9):1549-1553..

[14]錫滋.軟件可靠性,安全性與質量保證 [M].北京:電子工業出版社,2002.

[15]蔡開元.軟件可靠性工程基礎[M].北京:清華大學出版社,1995.

Design of resource conflicts detection system for embedded software

BAI Shuo1,3,ZHOU Qing1,2
(1.National Space Science Center.CAS,Beijing 100190,China 2.Beijing Institute of Technology,Beijing 100181,China;3.University of Chinese Academy of Sciences,Beijing 100190,China)

Among the many software testing tools,the number of detecting shared resources conflict is very small,but the problem of shared resource conflict is often happened and is hard to be discovered,which can lead to serious consequences.In order to find the problem of the software as soon as possible,the conflicts are firstly analyzed,and then a scheme of testing shared resource conflicts for embedded software is brought forward,which can realize automatic detection.

software testing;resource conflicts;automatic detection;embedded software

TN0

:A

:1674-6236(2017)05-0061-04

2016-01-21稿件編號:201601192

白 爍(1990—),女,河北衡水人,碩士研究生。研究方向:軟件測試。

主站蜘蛛池模板: 婷婷色中文| 乱人伦中文视频在线观看免费| 亚洲性日韩精品一区二区| 久久久久亚洲Av片无码观看| 无码人妻免费| 激情综合图区| 四虎国产精品永久在线网址| 亚洲AⅤ无码日韩AV无码网站| 国产成人精品男人的天堂| 国产成人艳妇AA视频在线| 亚洲精品国产首次亮相| 久久亚洲中文字幕精品一区| 日韩在线成年视频人网站观看| 欧美成人二区| 一级毛片中文字幕| 男人天堂亚洲天堂| 91午夜福利在线观看精品| 久久综合九九亚洲一区 | 久久久黄色片| 亚洲天堂视频网站| 精品国产免费第一区二区三区日韩| 岛国精品一区免费视频在线观看| 丁香五月激情图片| 欧美a在线视频| 2020精品极品国产色在线观看| 亚洲激情99| 欧美亚洲国产一区| 日韩久久精品无码aV| 无码高潮喷水在线观看| 欧美伦理一区| 99久久99视频| 中文字幕乱码二三区免费| 日韩在线2020专区| 有专无码视频| 日本久久免费| 亚洲国产精品久久久久秋霞影院| 色老二精品视频在线观看| 幺女国产一级毛片| 午夜啪啪福利| 婷婷午夜天| 国产一区二区三区日韩精品| WWW丫丫国产成人精品| 99精品国产电影| 精品自窥自偷在线看| 亚洲国产欧美国产综合久久| 国产黄色片在线看| 99热这里只有成人精品国产| 色天天综合久久久久综合片| 高清码无在线看| 在线观看91精品国产剧情免费| 色婷婷成人| 亚洲第一区精品日韩在线播放| 成人韩免费网站| 亚洲第一区在线| 一区二区三区在线不卡免费| 精品久久久久久成人AV| 午夜福利在线观看入口| 欧美日本在线观看| 九九香蕉视频| 毛片视频网址| 99re热精品视频国产免费| 九九精品在线观看| 国产成人精品亚洲日本对白优播| 91色在线观看| 久久公开视频| 成人毛片免费在线观看| 日韩毛片免费| 国产黑丝视频在线观看| 日韩精品亚洲一区中文字幕| 亚洲国产日韩视频观看| 五月天丁香婷婷综合久久| 99热最新网址| 国产成人av大片在线播放| 亚洲婷婷在线视频| 第一区免费在线观看| 毛片免费高清免费| 国产高清免费午夜在线视频| 青青青国产免费线在| 国产老女人精品免费视频| 日韩成人午夜| 久久人与动人物A级毛片| аv天堂最新中文在线|