新聞中心

EEPW首頁 > 模擬技術(shù) > 牛人業(yè)話 > 軟硬件調(diào)試九法:分而治之

軟硬件調(diào)試九法:分而治之

作者: 時間:2016-05-19 來源:網(wǎng)絡(luò) 收藏

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

本文引用地址:http://butianyuan.cn/article/201605/291401.htm

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

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

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

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

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

  實際案例:有次使用TFT顯示圖片,黑白的顯示正常,彩色的顏色失真,并且毛刺嚴(yán)重,以為顯示屏有質(zhì)量問題,使用彩色條后,發(fā)現(xiàn)顯示和顏色和設(shè)定的不一致,仔細(xì)對比才發(fā)現(xiàn)驅(qū)動程序發(fā)出的16位數(shù)據(jù),按照字節(jié)發(fā)送時,數(shù)據(jù)顛倒,所以調(diào)整后顯示正常。

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

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

  4、修復(fù)已知的bug

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

  5、首先消除噪聲干擾

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

  在軟件中,不合理的多線程、意外的沖入例程、未初始化的局部變量都會導(dǎo)致系統(tǒng)產(chǎn)生很多隨機(jī)行為,為工作帶來很多麻煩。

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



關(guān)鍵詞: 硬件調(diào)試

評論


技術(shù)專區(qū)

關(guān)閉