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

安全苛求系統下的嵌入式C語言程序調試技巧

2014-02-11 04:03:38董高云周庭梁
鐵路計算機應用 2014年6期
關鍵詞:嵌入式調試故障

董高云,周庭梁

(1.卡斯柯信號有限公司 研發中心, 上海 200071;2.同濟大學 道路與交通工程教育部重點實驗室,上海 201804)

安全苛求系統下的嵌入式C語言程序調試技巧

董高云1,周庭梁2

(1.卡斯柯信號有限公司 研發中心, 上海 200071;2.同濟大學 道路與交通工程教育部重點實驗室,上海 201804)

介紹安全苛求系統下的嵌入式C語言程序調試的技巧。總結安全苛求系統的編碼和程序調試工作中的嵌入式C語言調試經驗,介紹正式代碼調試之前的3件準備工作,代碼調試的“版本升級比較法”,打印添加技巧以及其它調試技巧和經驗。

安全苛求系統;嵌入式系統; C語言;調試技巧

安全苛求系統(Safety Critical System),通常是指一旦發生故障或出現差錯,會帶來人員傷亡、大宗財產損失、環境遭受嚴重破壞的系統[1]。安全苛求系統多以計算機為核心子系統構成其監控系統,這類系統又被稱為安全苛求計算機系統,國內有的文獻也稱之為“安全關鍵計算機系統”。安全苛求計算機系統常用于軍事、航空航天、工業控制、銀行、醫療、通信等安全苛求領域,以避免由于計算機的失效造成重大事故。在鐵路信號領域的安全苛求系統包括車站聯鎖、區間閉塞,列車自動駕駛,列車超速防護和道口防護等。

對于安全苛求系統,需要從系統的規劃階段開始,在整個生命周期中給予特殊的關注。它的需求說明、設計、制作、驗證、安裝、使用維護等都有特殊的要求。除了需要利用一系列的容錯技術保證系統的可靠性以外,還需要采用故障–安全的技術來防護系統在故障或者軟件錯誤的情況下產生災難性的后果。例如在鐵路信號領域的聯鎖系統中經常采用的二乘二取二結構。

為了滿足安全苛求系統故障-安全的需要,高實時性、多任務的嵌入式操作成為首選。該系統廣泛應用于鐵路信號領域的聯鎖、列車控制車、載控制器(CC)、軌旁區域控制器/線路控制器(ZC/LC)等多個安全產品中。因此,掌握在嵌入式操作系統環境下的程序開發調試技巧,是從事相關工作的技術人員的迫切需要。

1 正式進行代碼調試之前的準備

安全苛求系統下的嵌入式程序故障表現為系統運行不穩定,或部分功能實現不正確,其原因大致可以分為以下幾類:硬件故障;驅動板級支持包(BSP)和操作系統的故障;配置文件錯誤;軟件本身的漏洞(BUG)。

正確的代碼調試步驟,應該是在確認和定位程序代碼的BUG之前,首先要排除前3類原因,然后再展開代碼本身的調試,也就是正式開始進行嵌入式操作系統程序代碼BUG調試之前所必須要做的3件事情。

(1)先排除硬件故障的可能。嵌入式系統本身是一個軟硬件緊密結合的系統,很多從表現上看是軟件的故障,實際查下來才發現是硬件所導致的。主要的硬件故障包括板卡本身的損壞和故障,板卡接觸不良,硬件插錯等。此外,用于網絡通信的交換機和集線器本身的故障,也會造成網絡通信的不正常,或者進行嵌入式程序調試時下載緩慢等。只有先排除了以上的各種硬件故障之后,再繼續下面的排查。

排除硬件的一個簡單方法是:在備件充足的情況下,通過交換硬件來進行硬件故障的確認。例如互為主備的聯鎖A機機柜故障,聯鎖B機機柜運行正常,若懷疑A機的某塊硬件板卡有問題,則與B機交換對等的硬件板卡,觀察故障是否跟著板卡走(即交換后,A機變為正常,B機變成故障),如果是的話,應該就是該塊硬件板卡的問題。

(2)確認驅動程序和BSP包是否正常。在代碼調試時,除非進行新產品開發,相關驅動尚未發布,否則必須選用已正式發布的驅動。在嵌入式系統調試過程中,經常會碰到由于硬件的驅動本身有BUG,導致通信有故障或通信功能不穩定的情況發生,此時如果貿然排查上層軟件的話,很可能走錯了查找的方向。

此外,已發布的驅動只是針對該驅動發布時的硬件和BSP包環境所進行的封版測試,并不一定能保證在所有的硬件和BSP包環境下的正常運行。為了定位是否為驅動本身的問題,在求助于驅動開發人員之前,調試人員需要先準備好一個驅動測試程序,該測試程序只保留與驅動相關的部分代碼,從而將問題定位至驅動本身,證明問題來源于驅動,也方便驅動開發人員進行驅動問題排查。

還有編譯環境的問題,調試某個版本的代碼時始終只有單網通信,無法實現雙網冗余,排查了所有原因,最終發現是進行調試所用的筆記本電腦所裝載的Tornado開發環境軟件包本身有問題,導致編譯后的可執行文件有缺陷。重裝Tornado后再進行編譯,故障就沒有再出現了。

(3)確認所調試程序的配置文件是正確無誤的,且各個配置文件都是基于同一版本發布基線的。在正式的程序調試之前,一定要確認該代碼相關的所有配置文件版本無誤,且是相互匹配的,在一個錯誤配置環境下的所有“故障”現象,由于其本身配置的不正常,都無法作為程序本身“故障”的參考。

2 版本升級對比法

版本升級對比法的具體操作為:在查找問題前,首先確保有一份舊版本且確認無BUG的代碼,對新舊版本的代碼展開對比調試。即:采用代碼比較軟件(如Beyond Compare),逐行對比新舊版本代碼。基于一個基本的出發點:新版本的代碼BUG是在舊版本的基礎上,進行升級過程中所引入的。

對于引起BUG的故障語句的定位,可以有兩種思路:添加法,即在舊代碼的基礎上,逐步添加升級代碼,每次只添加一個或兩個功能點的升級代碼,每添加完后進行編譯運行,觀察是否異常,一般情況下,在添加至某個功能點時,會出現“故障”現象,則可以定位為添加的功能點相關代碼是引起“故障”的源頭,從而實現“故障”代碼的定位。減少法,在新代碼的基礎上逐步刪減功能點,退回至穩定版本的舊代碼,在此過程中,會有某一功能點的減少,導致原來不穩定的代碼重新趨于穩定,這個功能點相關的代碼就是引起新代碼不穩定的“故障”代碼源頭。

當然,無論是添加法還是減少法,都需要提前規劃測試策略,注意做好測試版本的備份。在調試過程中,需要注意編譯環境的問題,注意全編譯和部分編譯的區別。每次“添加”或“刪減”一個功能點之后,進行運行拷機之前,最好要進行全編譯,以確保完全整合了所有的修改,保證編譯代碼的完整性。

3 面向接口的調試方法

進行嵌入式系統調試時,需要注意使用打印語句進行變量追蹤。由于嵌入式實時程序的特殊性,在非嵌入式(如Visual C++)程序調試時所使用的單步調試,加斷點、變量和語句的跟蹤等方法在大多數情況下無法使用。對于vxWorks這樣的操作系統,只能通過添加打印語句來實現。打印語句的添加需要注意兩點:(1)在中斷中,不能添加printf打印語句,只能添加logMsg()函數的打印語句。(2)無論是添加printf語句,還是添加logMsg(),都需要“慎用”,要考慮到這兩種打印語句對系統的穩定性所帶來的負面影響。

通過添加臨時全局變量的方式,實際上是“面向接口的調試方法”的一種,即增加專用的調試接口,以方便故障定位和程序調試。除了增加臨時變量的方式,還可以采用直接增加網絡消息處理函數,將相關的調試信息通過網絡接口直接發送到上位機的診斷維護支持系統中,從而使在線診斷和故障分析更加方便。與臨時添加打印變量相比,采用診斷維護支持系統來獲取調試信息的方式,能夠實現調試信息的在線實時存儲,有利于實現長時間拷機時的故障記錄,對于出現頻率低的故障收集和排查具有良好的效果。

4 其它調試技巧和經驗

除了以上的調試技巧之外,還需要強調的是從事嵌入式系統調試的相關人員,需要有一個良好的心態。嵌入式系統運行和啟動比較耗時,每次重啟之后,宿主機需要重新連接下位目標機。從事安全系統和安全軟件開發的技術人員都有一個基本理念,就是計算機本身可能受到隨機干擾的影響會出錯,所以才會引出安全計算機的概念。但是需要指出,在嵌入式代碼調試時,恰恰要反過來,不能夸大隨機干擾的影響。需要將系統性故障和隨機故障區分開,因為本身程序的BUG而引入的故障均為系統性故障,與CPU或RAM等隨機出錯引起的隨機性故障無關,相應的出錯概率也遠高于隨機故障的出錯概率。

在問題查找過程中,除了采用打印跟蹤之外,還可以考慮利用其它開發環境所提供的交互工具對嵌入式程序的運行進行監控,對程序架構和代碼中的關鍵變量,任務執行等進行分析。

5 結束語

對于短期內難以解決的疑難問題,必須堅持長期拷機,持續跟進測試,并定期發布拷機匯報,做好拷機記錄,不放過任何細節,嵌入式系統的調試人員只有抱著持之以衡的心態,采取正確的策略,理清相關的思路,才能攻堅克難獲得最終勝利。

[1]酈 萌, 吳芳美. 鐵路信號可靠性安全性理論及證實[M].北京:中國鐵道出版社, 2008.

[2]員春欣, 江建慧. 安全關鍵計算機系統[M]. 北京:中國鐵道出版社, 2003.

[3]鄺 堅. Tornado/VxWorks 入門與提高[M]. 北京:科學出版社,2004.

[4]Wind River. VxWorks/BSP 開發人員指南[M]. 王金剛,蘇 琪,楊錫勱,譯.北京:清華大學出版社,2003.

責任編輯 陳 蓉

Program debug skill of C Language in Embedded Operation System running in Safety Critical System

DONG Gaoyun1, ZHOU Tingliang2
( 1. Research and Development Center, CASCO Signal Company, Shanghai 200071, China; 2. Key Laboratory of Road and Traff i c Engineering of the State Ministry of Education, Tongji University, Shanghai 201804, China )

This paper introduced the program debug skills of C Language in Embedded Operation System running in Safety Critical System, summarized serials of debug experiences of C Language. The three preparing work was pointed out before formal code debugging. The “version updating &comparing method”was introduced. The print adding skills during debug process and other debug skills as well as the experiences for Safety Critical System were also introduced.

Safety Critical System; Embedded Operation System; C Language; debug skills

U284∶TP39

:A

1005-8451(2014)06-0062-03

2014-01-28

董高云 ,高級工程師;周庭梁,在讀博士研究生。

猜你喜歡
嵌入式調試故障
故障一點通
基于航拍無人機的設計與調試
電子制作(2018年12期)2018-08-01 00:47:44
搭建基于Qt的嵌入式開發平臺
FOCAS功能在機床調試中的開發與應用
無線通信中頻線路窄帶臨界調試法及其應用
電子制作(2017年19期)2017-02-02 07:08:38
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
奔馳R320車ABS、ESP故障燈異常點亮
調壓柜的調試與試運行探討
故障一點通
江淮車故障3例
主站蜘蛛池模板: 欧美亚洲国产日韩电影在线| 欧美色图久久| 国产美女无遮挡免费视频| 尤物精品国产福利网站| 伊人五月丁香综合AⅤ| 亚洲另类色| 国产导航在线| 精品国产aⅴ一区二区三区| 日韩在线成年视频人网站观看| 久996视频精品免费观看| 丰满少妇αⅴ无码区| 欧洲熟妇精品视频| 免费无码网站| 国产在线观看成人91| 久久国产亚洲欧美日韩精品| 国产精品一老牛影视频| 午夜视频www| 午夜福利网址| 中文字幕日韩久久综合影院| 女人18一级毛片免费观看| 亚洲精品视频免费| 视频二区亚洲精品| 久久这里只有精品免费| 日韩欧美国产精品| 国产综合另类小说色区色噜噜| 欧美日韩中文国产| 极品私人尤物在线精品首页 | 免费看美女毛片| 午夜视频免费一区二区在线看| 熟妇无码人妻| 久久夜夜视频| 国产成人亚洲精品色欲AV| 久久久久青草大香线综合精品 | 国产尤物在线播放| 日韩精品视频久久| 欧美日韩第三页| 亚洲欧美日韩精品专区| 欧美精品不卡| 一本色道久久88| 日韩精品专区免费无码aⅴ| 欧美福利在线| 91在线无码精品秘九色APP| 福利一区在线| 欧美日本在线观看| 天天综合天天综合| 亚洲综合精品香蕉久久网| 国产日韩久久久久无码精品 | 国产69囗曝护士吞精在线视频| 国产精品女同一区三区五区| 亚洲精品无码久久毛片波多野吉| 女同国产精品一区二区| 国产剧情伊人| 欧美精品一区在线看| 青青草国产精品久久久久| 区国产精品搜索视频| 国产视频只有无码精品| 中国国产A一级毛片| 色视频国产| 欧美亚洲日韩中文| 精品乱码久久久久久久| 秘书高跟黑色丝袜国产91在线| 亚洲国产日韩一区| 国产欧美日韩综合在线第一| 久久久久国产精品免费免费不卡| 国产精品亚洲一区二区在线观看| 二级特黄绝大片免费视频大片| 国产精品香蕉在线| 激情综合婷婷丁香五月尤物| 亚洲性日韩精品一区二区| 日韩中文字幕亚洲无线码| 手机成人午夜在线视频| 欧美色丁香| 欧美成人A视频| 国产精品成人不卡在线观看| 成人第一页| 国产精品福利一区二区久久| 欧美福利在线播放| 国产成人无码AV在线播放动漫| 久久无码免费束人妻| 在线无码九区| 成人夜夜嗨| 欧美亚洲香蕉|