亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2012-09-19 10:29:06黃小波
        電子設(shè)計(jì)工程 2012年1期
        關(guān)鍵詞:控制指令測控串口

        黃小波,邵 威

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

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

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

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

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

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

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

        1)使用在線仿真器

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

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

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

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

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

        4)使用 assert(斷言)

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

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

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

        6)使用文件實(shí)時保存

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

        2 具體設(shè)計(jì)

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

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

        對上述流程圖中的執(zhí)行條件,可以在程序設(shè)計(jì)時預(yù)先定義好觸發(fā)條件,也可以通過外部發(fā)送控制命令(如通過網(wǎng)絡(luò)、串口或1553B總線等發(fā)送命令)來產(chǎn)生觸發(fā)事件。為考慮程序通用性,設(shè)計(jì)如下函數(shù):void WriteDataToBuf(unsiged char*pch,unigned short len);用于將需保存的單個數(shù)據(jù)或一串?dāng)?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進(jìn)制保存 (用戶可自行定義存儲方式)。對生成的pData.txt文件,依據(jù)實(shí)際應(yīng)用需求,可進(jìn)行后續(xù)加工處理。通常的處理方式包括:

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

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

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

        3 工程應(yīng)用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        4 結(jié)束語

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

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

        [2]張春燕.嵌入式系統(tǒng)調(diào)試技術(shù)初探[J].電腦知識與技術(shù),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)試技術(shù)[J].計(jì)算機(jī)工程與應(yīng)用,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).嵌入式遠(yuǎn)程調(diào)試工具的研究與實(shí)現(xiàn)[J].微計(jì)算機(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)遠(yuǎn)程調(diào)試器的研究與設(shè)計(jì)[J].計(jì)算機(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的嵌入式軟件遠(yuǎn)程調(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.

        猜你喜歡
        控制指令測控串口
        城軌車輛控制指令試驗(yàn)裝置研制
        淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
        宏指令控制的多軸系統(tǒng)研究及實(shí)現(xiàn)
        《測控電路》實(shí)踐教學(xué)改革探討
        電子測試(2018年22期)2018-12-19 05:12:58
        基于現(xiàn)代測控技術(shù)及其應(yīng)用分析
        向著新航程進(jìn)發(fā)——遠(yuǎn)望7號測控船首航記錄
        太空探索(2016年12期)2016-07-18 11:13:43
        高速公路隧道通風(fēng)、照明聯(lián)動控制方案探討
        科技視界(2016年13期)2016-06-13 23:11:43
        USB接口的多串口數(shù)據(jù)并行接收方法探索
        基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時無線通信
        地礦測繪(2015年3期)2015-12-22 06:27:26
        基于USB2.0協(xié)議的通用測控通信接口設(shè)計(jì)
        欧美日韩国产亚洲一区二区三区 | 正在播放老肥熟妇露脸| 精品无码人妻一区二区三区不卡| 精品国产人妻一区二区三区| 欧美国产亚洲日韩在线二区| 97人妻人人做人碰人人爽| 亚洲国产精品久久人人爱| 激情综合色五月丁香六月亚洲 | 最近中文字幕视频完整版在线看 | 亚洲av无码乱码精品国产| 国产放荡对白视频在线观看| 国产乱色精品成人免费视频| 国产精品99久久国产小草| 亚洲国产综合专区在线电影| 亚洲香蕉av一区二区蜜桃| 国成成人av一区二区三区| 国产亚洲精品97在线视频一| 亚洲国产精品无码久久一区二区 | 亚洲国产精品无码久久电影| 在线观看精品国产福利片87| 中文国产成人精品久久一区| av毛片一区二区少妇颜射| 一区二区午夜视频在线观看| 国产精品18久久久白浆| 亚洲综合激情五月丁香六月| 美女黄18以下禁止观看| 日韩欧美亚洲国产一区二区三区| 亚洲av成人久久精品| 日本av亚洲中文字幕| 精品无码国产自产拍在线观看蜜 | 996久久国产精品线观看| 日韩精品中文字幕 一区| 亚洲av色av成人噜噜噜| 日本真人添下面视频免费| 免费看黄色电影| 在线观看av国产自拍| 亚洲天堂av大片暖暖| 日本一区二区不卡在线| 久久人人爽人人爽人人片av高请 | 女人高潮久久久叫人喷水| 亚洲熟女乱色综合亚洲av|