• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      一類在線調(diào)試技術在嵌入式系統(tǒng)軟件中的應用

      2012-09-19 10:29:06黃小波
      電子設計工程 2012年1期
      關鍵詞:控制指令測控串口

      黃小波,邵 威

      (中國電子科技集團公司第三十八研究所 安徽 合肥 230013)

      在嵌入式技術飛速發(fā)展的今天,嵌入式產(chǎn)品已出現(xiàn)在社會的各個領域,包括通信、軍事、儀表、航空、航天、工業(yè)控制及家庭消費等。從嵌入式系統(tǒng)的外觀上看,嵌入式系統(tǒng)像是一個“可編程”的電子“器件”;從構成上看,嵌入式系統(tǒng)是集軟硬件于一體的、可獨立工作的計算機系統(tǒng);從功能上看,它是對宿主對象進行控制,使其具有“智能”的控制器。從應用的角度看,嵌入式系統(tǒng)與通用計算機系統(tǒng)相比,有如下一些特點:

      1)專用性。由于嵌入式系統(tǒng)通常是面向某個特定應用的,所以嵌入式系統(tǒng)的硬件和軟件,尤其是軟件,都是為特定用戶群來設計的,它通常都具有某種專用性的特點。

      2)實時性。目前,嵌入式系統(tǒng)廣泛應用于生產(chǎn)過程控制、數(shù)據(jù)采集、傳輸通信等場合,主要用來對宿主對象進行控制。例如,對嵌入在武器裝各中的嵌入式系統(tǒng)、在火箭中的嵌入式系統(tǒng)等應用中的實時性要求就極高。實時性是對嵌入式系統(tǒng)的普遍要求,是設計者和用戶重點考慮的一個重要指標。

      嵌入式系統(tǒng)軟件的調(diào)試技術一直是一項困難而富有挑戰(zhàn)性的技術。嵌入式系統(tǒng)中的軟件調(diào)試與桌面軟件的調(diào)試有很大的不同[1]。調(diào)試嵌入式系統(tǒng)時,調(diào)試器和被調(diào)試程序往往是物理上分離的。調(diào)試器運行在宿主機上,而被調(diào)試程序運行在目標機上,宿主機與目標機之間通過某種媒介進行通信。同時,還要在目標機上運行一個稱為調(diào)試代理(Debug Agent)的監(jiān)控程序,由它來負責與運行在宿主機上的調(diào)試器進行通信,控制被調(diào)試程序的執(zhí)行,并將被調(diào)試程序的執(zhí)行情況及時反饋給調(diào)試器。對一些響應時間要求在毫秒或微妙的系統(tǒng)軟件中,在調(diào)試過程中,還要考慮設計的調(diào)試程序是否會導致系統(tǒng)延時、是否會破壞系統(tǒng)軟件的高實時性要求。本文針對工程實際應用背景,提出了一種基于數(shù)組動態(tài)保存、文件記錄和后期數(shù)據(jù)處理的在線調(diào)試技術,在滿足系統(tǒng)軟件高實時性要求的前提下,有效地解決了通訊數(shù)據(jù)丟包排查、數(shù)據(jù)誤碼率驗證和運行過程中關鍵變量的可持續(xù)跟蹤問題,對解決系統(tǒng)聯(lián)調(diào)中出現(xiàn)的問題有很強的現(xiàn)實價值。

      1 動態(tài)調(diào)試技術

      程序的動態(tài)調(diào)試就是實際上機調(diào)試。根據(jù)程序編譯、連接和運行時計算機給出的錯誤信息進行程序調(diào)試,這是程序調(diào)試中最常用的方法,也是最初步的動態(tài)調(diào)試。在此基礎上,通過分段隔離、設置斷點、跟蹤打印等對程序進一步調(diào)試。目前常用的動態(tài)調(diào)試方法包括:

      1)使用在線仿真器

      隨著低成本的在線調(diào)試能力的增強,如ARM的ICE[2-3](在線仿真器),通過指令單步調(diào)試變得更容易。這種方式可以查看和修改變量值,顯示寄存器的內(nèi)容,查看內(nèi)存塊。

      2)使用遠端調(diào)試器

      通過遠端調(diào)試器[4-5],登錄或接管目標系統(tǒng)操作權限,實現(xiàn)讀/寫內(nèi)存與寄存器、設置斷點、單步執(zhí)行和繼續(xù)執(zhí)行功能。

      3)在IDE(集成編輯環(huán)境)中使用動態(tài)調(diào)試

      很多IDE都帶有動態(tài)調(diào)試功能[6],諸如:單步運行、變量監(jiān)視等,有的甚至給出了寄存器、反匯編、函數(shù)調(diào)用堆棧。但上述方法通常只有在目標系統(tǒng)停止運行時候才可以實現(xiàn)。然而,很多實時系統(tǒng)是不能停止的,由此引出如下動態(tài)調(diào)試方法。

      4)使用 assert(斷言)

      目前一般嵌入式操作系統(tǒng)都支持C或C++語言。C或C++語言有一個很實用的系統(tǒng)函數(shù):assert()。一旦計算發(fā)生錯誤,程序就會立即終止,并提醒程序員有錯誤發(fā)生,在哪一行。使用斷言最根本的好處是自動發(fā)現(xiàn)許多運行時產(chǎn)生的錯誤,但斷言不能發(fā)現(xiàn)所有錯誤。

      5)使用 printf()函數(shù)

      對于用C或C++語言編寫的嵌入式軟件,可以將printf()函數(shù)來插入到代碼中的關鍵位置來查看或輸出對象的動態(tài)行為。但過度使用 printf()函數(shù)將導致程序臃腫,且會造成系統(tǒng)延時。當通過串口傳遞信息時,這個延時會更長。

      6)使用文件實時保存

      將變量實時寫入本地文件中,通過對保存的文件進行后續(xù)分析,查看系統(tǒng)在整個運行過程中行為的變化情況。由于文件實時讀寫過程中會強制占用系統(tǒng)時間,所以對于一些高實時性運行環(huán)境,使用文件實時讀取方式會破壞系統(tǒng)工作環(huán)境的完整性。

      2 具體設計

      基于數(shù)組動態(tài)保存、文件記錄和后期數(shù)據(jù)處理的在線調(diào)試技術的具體設計流程如圖1所示。

      圖1 在線調(diào)試技術處理流程圖Fig.1 Flow chart of online debugging technique process

      對上述流程圖中的執(zhí)行條件,可以在程序設計時預先定義好觸發(fā)條件,也可以通過外部發(fā)送控制命令(如通過網(wǎng)絡、串口或1553B總線等發(fā)送命令)來產(chǎn)生觸發(fā)事件。為考慮程序通用性,設計如下函數(shù):void WriteDataToBuf(unsiged char*pch,unigned short len);用于將需保存的單個數(shù)據(jù)或一串數(shù)據(jù)寫入到數(shù)組buf中。

      函數(shù)WriteDataToBuf使用如下:

      1)存放char或unsiged char類型數(shù)據(jù),如:unsiged char m_value=0x11; WriteDataToBuf(&m_value,1);

      2)存放short或unsiged short類型數(shù)據(jù),如 unsiged short m_value=0x1111; WriteDataToBuf(&m_value,2);

      3)存放占用4個字節(jié)長度的類型數(shù)據(jù) (long,float等),如 float m_value=12.345; WriteDataToBuf(&m_value,4);

      4)存放長度為len的數(shù)組,如 unsiged char m_value[20],WriteDataToBuf(m_value,20);

      為便于直觀查看文件pData中數(shù)據(jù),一般將文件pData生成后綴名為txt文件,生成的文件pData.txt一般采用16進制保存 (用戶可自行定義存儲方式)。對生成的pData.txt文件,依據(jù)實際應用需求,可進行后續(xù)加工處理。通常的處理方式包括:

      ①將變量存儲的類型轉換為10進制數(shù)據(jù);

      ②通過其它數(shù)據(jù)分析工具進行分析,如origin,excel,matlab等,以查看數(shù)據(jù)或一串數(shù)組的變化情況;

      ③編寫特制應用軟件進行數(shù)據(jù)分析處理。

      3 工程應用

      某SAR(Synthetic Aperture Radar,合成孔徑雷達)系統(tǒng)組成示意圖如圖2所示。

      圖2 SAR系統(tǒng)組成示意圖Fig.2 Schematic diagram of the SAR system components

      圖中虛線框內(nèi)為與SAR連接的外部設備。其中測控處理軟件固化在監(jiān)控分系統(tǒng)板載PC104中,采用QNX操作系統(tǒng),編寫語言為C++。測控處理軟件接收的控制指令由一體化顯控發(fā)送,發(fā)送的方式為非周期形式。由于為無線鏈路通訊方式,存在數(shù)據(jù)指令丟失的可能,為增加指令通訊的可靠性,每一控制指令連續(xù)發(fā)送3次。設一體化顯控發(fā)送的指令包記為A={A1,A2,A3,A4…An},n=16。 指令包經(jīng)過機載數(shù)據(jù)終端重新打包后形成指令包 B,記為 B={A,B1,B2,…Bm},m=44。 指令包A成為指令包B的子包。測控處理軟件通過異步串口接收機載數(shù)據(jù)終端發(fā)送的指令包B。

      為減少人工操作,一體化顯控界面設計了多種一鍵操作模式,點擊一個控制按鈕,會自動發(fā)送若干條控制指令,最多會一次發(fā)出10條以上控制命令,每條控制指令重復發(fā)送3次,兩條指令間隔時間在20 ms內(nèi),也即意味測控處理軟件在1秒內(nèi)會收到近50條控制指令。

      在實際聯(lián)調(diào)過程中,發(fā)現(xiàn)測控處理軟件收到的指令包A存在丟包現(xiàn)象。丟包的原因可以通過鏈路組成形成如下猜測(如下猜測之一或其組合):

      ①一體化顯控發(fā)送出來的指令包A已經(jīng)丟包;

      ②指令包A經(jīng)過無線鏈路傳輸?shù)綑C載數(shù)據(jù)終端前已經(jīng)丟包;

      ③機載終端接收指令包A,在處理過程及重新對數(shù)據(jù)打包形成指令包B過程中丟包;

      ④測控處理軟件通過串口接收到完整指令包,但在處理過程中丟包。

      由于虛線部分為外部設備,且已經(jīng)過聯(lián)調(diào)(當然沒有和SAR聯(lián)調(diào)過),如上猜測2)和3)暫時排除在外。而一體化顯控采用VC編程,可方便驗證猜測1)的情況。

      為便于測試,一體化顯控發(fā)送控制指令時,將某個字節(jié)定義為幀編號,每發(fā)送出一條指令時,幀編號加1。假設一體化顯控發(fā)送出去的控制指令都正確的話,如果測控處理軟件通過串口收到的控制指令丟包,正常的排查措施如下:

      ① 在測控處理軟件中使用printf函數(shù)將接收到的數(shù)據(jù)通過屏幕輸出的方式實時打印出來。帶來的問題是,屏幕刷新速度太快,無法確認數(shù)據(jù)實際接收情況;同時頻繁使用printf函數(shù)會造成系統(tǒng)延時,影響串口接收中斷,破壞了系統(tǒng)實際工作環(huán)境。

      ②累計1 s統(tǒng)計接收到的正確數(shù)據(jù)包,然后通過printf()函數(shù)輸出到屏幕上。帶來的問題是,無法確認是哪組指令出現(xiàn)丟包,每組指令丟包多少;

      ③在測控處理軟件中將從串口接收到的原始數(shù)據(jù)實時保存到文件中。帶來的問題是,采用實時文件讀寫方式會造成系統(tǒng)延時,影響串口接收中斷,破壞了系統(tǒng)實際工作環(huán)境。

      ④在機載數(shù)據(jù)終端送出數(shù)據(jù)時采用串口調(diào)試工具。帶來的問題是,由于現(xiàn)場條件約束,無法使用串口調(diào)試工具。

      針對上述調(diào)試手段的不足,現(xiàn)采用基于數(shù)組動態(tài)保存、文件記錄和后期數(shù)據(jù)處理的在線調(diào)試技術來查看數(shù)據(jù)丟包率及數(shù)據(jù)丟包可能的源頭。具體解決過程如下:

      ① 申請一個較大空間的數(shù)組,如可存字節(jié)長度為100 000個;

      ② 通過調(diào)試工具(一般可用網(wǎng)絡調(diào)試工具)向測控處理軟件發(fā)送數(shù)據(jù)存數(shù)組指令;

      ③一段時間后發(fā)送數(shù)據(jù)存文件指令,生成pData.txt文件;

      ④將生成的pData.txt文件用ftp工具下載到本地計算機;

      ⑤ 使用VC編寫一個自動分析數(shù)據(jù)的軟件,將文件pData.txt中的數(shù)據(jù)按照數(shù)據(jù)包B的長度進行抽取,以查看數(shù)據(jù)包B中數(shù)據(jù)是否存在數(shù)據(jù)錯位;

      ⑥在抽取出數(shù)據(jù)包B的基礎上,通過軟件再抽取出數(shù)據(jù)包A。并可以根據(jù)實際情況,自動分析數(shù)據(jù)中校驗和錯誤率、有效控制命令數(shù)、相鄰數(shù)據(jù)幀編號之差等。

      通過上述方法,就可以分析出數(shù)據(jù)的丟包數(shù)、丟包率、數(shù)據(jù)傳輸錯位情況,同時可判斷是由于機載數(shù)據(jù)終端送出時已丟包還是由于測控處理軟件在處理過程中產(chǎn)生了數(shù)據(jù)丟包。最終將問題定位在猜測2)上。

      4 結束語

      相比較一般常用調(diào)試方法,基于數(shù)組動態(tài)保存、文件記錄和后期數(shù)據(jù)處理的在線調(diào)試技術具有如下優(yōu)點:1)不中斷當前程序執(zhí)行過程;2)對程序動態(tài)實時性能影響較小,特別是對高實時性要求的系統(tǒng)軟件,此優(yōu)點尤其突出;3)可根據(jù)實際需求保存任意時間段、任意變量的數(shù)據(jù)值,便于后續(xù)分析;4)可查看變量在毫秒或微秒級內(nèi)的動態(tài)變化過程。

      [1]陳云川,羅克露.嵌入式軟件調(diào)試技術[M].北京,電子工業(yè)出版社,2009.

      [2]張春燕.嵌入式系統(tǒng)調(diào)試技術初探[J].電腦知識與技術,2010,6(30):8627-8629.

      ZHANG Chun-yan.Research of debugging technique to embedded system[J].Journal of Computer Knowledge and Technology,2010,6(30):8627-8629.

      [3]張楷,湯志忠.一種新的高速嵌入式系統(tǒng)軟件調(diào)試技術[J].計算機工程與應用,2003(29):59-62.

      ZHANG Kai,TANG Zhi-zhong.A new high speed embedded system software debug technology[J].Journal of Computer Engineering and Applictiaon,2003(29):59-62.

      [4]李紅衛(wèi).嵌入式遠程調(diào)試工具的研究與實現(xiàn)[J].微計算機信息,2009,25(2):87-89.

      LI Wei-hong.Study and realization of embedded remote debugging tool[J].Journal of Control&Automation,2009,25(2):87-89.

      [5]黃光紅,李鋼,張仁斌.通用嵌入式系統(tǒng)遠程調(diào)試器的研究與設計[J].計算機測量與控制,2008,16(6):853-855.

      HUANG Guang-hong,LI Gang,ZHANG Ren-bin.Research and design of universal embedded system remote debugger[J].Journal of Comouter Measurement&Control,2008,16(6):853-855.

      [6]魯愛國,萬曦.基于vxWorks的嵌入式軟件遠程調(diào)試[J].艦船電子工程,2007,27(6):151-154.

      LU Ai-guo,WAN Xi.Deep discourse about remote debugging of embeded software based on vxWorks[J].Journal of Ship Electronic Engineering,2007,27(6):151-154.

      猜你喜歡
      控制指令測控串口
      城軌車輛控制指令試驗裝置研制
      淺談AB PLC串口跟RFID傳感器的通訊應用
      宏指令控制的多軸系統(tǒng)研究及實現(xiàn)
      《測控電路》實踐教學改革探討
      電子測試(2018年22期)2018-12-19 05:12:58
      基于現(xiàn)代測控技術及其應用分析
      向著新航程進發(fā)——遠望7號測控船首航記錄
      太空探索(2016年12期)2016-07-18 11:13:43
      高速公路隧道通風、照明聯(lián)動控制方案探討
      科技視界(2016年13期)2016-06-13 23:11:43
      USB接口的多串口數(shù)據(jù)并行接收方法探索
      基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
      地礦測繪(2015年3期)2015-12-22 06:27:26
      基于USB2.0協(xié)議的通用測控通信接口設計
      寿阳县| 沽源县| 离岛区| 宁武县| 玉林市| 富蕴县| 奎屯市| 大化| 旌德县| 绍兴县| 上林县| 虹口区| 筠连县| 沙湾县| 手机| 崇州市| 衢州市| 托克逊县| 广南县| 高雄市| 高陵县| 资溪县| 绿春县| 竹北市| 枞阳县| 嘉定区| 炎陵县| 阜新市| 衡水市| 吴旗县| 山阴县| 玛沁县| 和平区| 浏阳市| 和龙市| 漳平市| 黔西| 民勤县| 大方县| 济南市| 台东市|