• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 模擬技術 > 牛人業話 > 軟硬件調試九法:分而治之

    軟硬件調試九法:分而治之

    作者: 時間:2016-05-19 來源:網絡 收藏

      通過二分法,逐次縮小問題范圍,在查找問題時,這個方法是唯一需要應用的規則,所有其它規則都是幫助你遵循這條規則。

    本文引用地址:http://www.czjhyjcfj.com/article/201605/291401.htm

      1、通過逐次逼近縮小搜索范圍

      通過二分法,逐次縮小問題范圍,在查找問題時,這個方法是唯一需要應用的規則,所有其它規則都是幫助你遵循這條規則。首先搜索前面1/2,如果有錯,則再搜索前1/4,如果沒錯,則搜索范圍就定在1/4-1/2之間,然后再次細分,幾次之后就會找到問題。

      實際案例:有次程序運行反應很慢,特別是蜂鳴器響一次后,要幾秒鐘的時間,才能相應按鍵。因此就采用這個方法,很快確定慢是由等待蜂鳴器時間過長導致,從程序邏輯看,等待蜂鳴器結束函數并沒有錯誤,但是其中while循環等待的蜂鳴器結束標志的變量,是在中斷中處理的,該標志由于未定義為volatile類型,因此被編譯器優化后,循環判斷時只獲取一次,所以只有循環延時超時退出時才結束。改為volatile類型后,問題解決。

      2、使用易于查看的測試模式

      在存儲器讀寫測試、通訊數據偶爾失敗測試時,發送00 55 AA FF或者1到100連續數據比使用隨機數據更容易發現錯誤。在測試彩色顯示屏顏色失真時,采用紅綠藍黃等色條比圖片要容易發現問題。

      實際案例:有次使用TFT顯示圖片,黑白的顯示正常,彩色的顏色失真,并且毛刺嚴重,以為顯示屏有質量問題,使用彩色條后,發現顯示和顏色和設定的不一致,仔細對比才發現驅動程序發出的16位數據,按照字節發送時,數據顛倒,所以調整后顯示正常。

      3、從有問題的一端開始搜索

      不要從正確的一端開始確認,正確的太多了,因此需要從錯誤的一端開始,然后向上游查找。

      4、修復已知的bug

      有時我們很難相信一個系統有很多bug,這使得分而治之的隔離原則變得困難,因此如果確實查明了其中一個問題時,應該立即修復它,然后再查找其它問題。只有修復了已知的錯誤,才能集中精力查找其它問題,有時修復一個問題,另一問題也消失了,也就是兩個問題時是一個bug。

      5、首先消除噪聲干擾

      在硬件中,噪音也可能因此各種難以查找的間歇性問題,因此查找問題前,應該首先注意短時脈沖干擾、時鐘回波、模擬信號噪聲、時序波動等不穩定因素;

      在軟件中,不合理的多線程、意外的沖入例程、未初始化的局部變量都會導致系統產生很多隨機行為,為工作帶來很多麻煩。

      另外,技術人員很容易成為完美主義者,為了達到高質量,把所有不好的設計都修復一遍,可能會因為前面一個程序編寫的看起來不好的程序代碼就刪掉重寫,但是如果沒有引起實際問題,最好還是保留他們吧,不要太過極端,你的精力在于找到bug并消除他們,這種修復耽誤了真正的研究時間。



    關鍵詞: 硬件調試

    評論


    技術專區

    關閉
    主站蜘蛛池模板: 鄄城县| 河西区| 天津市| 博白县| 定陶县| 饶平县| 河北区| 桑日县| 英德市| 江城| 西峡县| 佛冈县| 镇平县| 石家庄市| 南投县| 兴宁市| 科技| 将乐县| 方正县| 金溪县| 商洛市| 内丘县| 曲阳县| 泰州市| 得荣县| 巴东县| 阳曲县| 花莲县| 阿坝县| 长宁县| 铜鼓县| 五原县| 福泉市| 丰城市| 荣昌县| 毕节市| 浦江县| 金坛市| 德庆县| 汶上县| 德庆县|