新聞中心

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

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

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

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

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

  1、通過(guò)逐次逼近縮小搜索范圍

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

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

  2、使用易于查看的測(cè)試模式

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

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

  3、從有問(wèn)題的一端開(kāi)始搜索

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

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

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

  5、首先消除噪聲干擾

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

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

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



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

評(píng)論


相關(guān)推薦

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

關(guān)閉