官术网_书友最值得收藏!

1.5 測試方法和工具

完成一個用戶樣機(jī),首先要完成硬件組裝工作,然后進(jìn)入軟件設(shè)計、調(diào)試和硬件調(diào)試階段。硬件組裝就是在設(shè)計、制作完畢的印制板上焊好元件與插座,然后就可用仿真開發(fā)工具進(jìn)行軟件設(shè)計、調(diào)試和硬件調(diào)試工作。

1.用戶樣機(jī)軟件的設(shè)計、調(diào)試

用戶樣機(jī)軟件設(shè)計、調(diào)試的過程如圖1-25所示,可為以下幾個步驟。

第一步,建立用戶源程序。用戶通過開發(fā)系統(tǒng)的鍵盤、CRT顯示器及開發(fā)系統(tǒng)的編輯軟件,按照所要求的格式、語法規(guī)定,把源程序輸入到開發(fā)系統(tǒng)中,并存在磁盤上。

第二步,在開發(fā)系統(tǒng)機(jī)上,利用匯編軟件對第一步輸入的用戶源程序進(jìn)行匯編,變?yōu)榭蓤?zhí)行的目標(biāo)代碼。在匯編過程中,如果用戶源程序有語法錯誤,則在CRT上顯示出來,然后返回到第一步進(jìn)行修改,再進(jìn)行匯編,直至語法錯誤全部糾正為止。如無語法錯誤,則進(jìn)入下一個步驟。

第三步,動態(tài)在線調(diào)試。這一步對用戶源程序進(jìn)行調(diào)試。上述的第一步、第二步是一個純粹的軟件運行過程,而在這一步,必須要有在線仿真器配合,才能對用戶源程序進(jìn)行調(diào)試。用戶程序中分為與用戶樣機(jī)硬件無聯(lián)系的程序以及與及樣機(jī)硬件緊密關(guān)聯(lián)的程序。

對于與用戶樣機(jī)硬件無聯(lián)系的用戶程序,例如計算機(jī)程序,雖然已經(jīng)沒有語法錯誤,但可能有邏輯錯誤,使計算結(jié)果不正確,這樣必須借助于動態(tài)在線調(diào)試手段,如單步運行、設(shè)置斷點等,發(fā)現(xiàn)邏輯錯誤,然后返回到第一步修改,直至邏輯錯誤糾正為止。

圖1-25 用戶樣機(jī)軟件設(shè)計、調(diào)試原理圖

對于與用戶樣機(jī)硬件緊密相關(guān)的用戶程序,如接口驅(qū)動程序,一定要先把硬件故障排除以后,再與硬件配合,對用戶程序進(jìn)行動態(tài)在線調(diào)試,如果有邏輯錯誤,則返回到第一步進(jìn)行修改,直至邏輯錯誤消除為止。在調(diào)試這一類程序時,硬件調(diào)試與軟件調(diào)試是不能完全分開的。許多硬件錯誤是通過對軟件的調(diào)試而發(fā)現(xiàn)并糾正的。

第四步,將調(diào)試完畢的用戶程序通過EPROM編程器(也稱EPROM寫入器)固化在EPROM中。

2.用戶樣機(jī)硬件調(diào)試

對用戶樣機(jī)進(jìn)行調(diào)試,首先要進(jìn)行靜態(tài)調(diào)試,靜態(tài)調(diào)試的目的是排除明顯的硬件故障。

(1)靜態(tài)調(diào)試

靜態(tài)調(diào)試工作分為兩步。

第一步是在樣機(jī)加電之前,先用萬用表等工具,根據(jù)硬件邏輯設(shè)計圖,仔細(xì)檢查樣機(jī)線路是否連接正確,并核對元器件的型號、規(guī)格和安裝是否符合要求,應(yīng)特別注意電源系統(tǒng)的檢查,以防止電源的短路和極性錯誤,并重點檢查系統(tǒng)總線(地址總線、數(shù)據(jù)總線和控制總線)是否存在相互之間短路或與其他信號線的短路。

第二步是加電后檢查各插件上引腳的電位,仔細(xì)測量各點電位是否正常,尤其應(yīng)注意8031插座的各點電位,若有高壓,與仿真器聯(lián)機(jī)調(diào)試時將會損壞仿真器的器件。

具體步驟如下:

① 電源檢查。

當(dāng)用戶樣機(jī)板連接或焊接完成之后,先不插主要元器件,通上電源。通常用 + 5V直流電源(這是TTL電源),用萬用表電壓擋測試各元器件插座上相應(yīng)電源引腳電壓數(shù)值是否正確,極性是否符合。如有錯誤,要及時檢查、排除,使每個電源引腳的數(shù)值都符合要求。

② 各元器件電源檢查。

斷開電源,按正確的元器件方向插上元器件。最好是分別插入,分別通電,并逐一檢查每個元器件上的電源是否正確,以至最后全部插上元器件,通上電源后,每個元器件上電源正確無誤。

③ 檢查相應(yīng)芯片的邏輯關(guān)系。

檢查相應(yīng)芯片邏輯關(guān)系通常采用靜態(tài)電平檢查法。即在一個芯片信號輸入端加入一個相應(yīng)電平,檢查輸出電平是否正確。單片機(jī)系統(tǒng)大都是數(shù)字邏輯電路,使用電平檢查法可首先檢查出邏輯設(shè)計是否正確。選用的元器件是否符合要求,邏輯關(guān)系是否匹配,元器件連接關(guān)系是否符合要求等。

(2)聯(lián)機(jī)仿真、在線動態(tài)調(diào)試

在靜態(tài)調(diào)試中,對目標(biāo)樣機(jī)硬件進(jìn)行初步調(diào)試,只是排除了一些明顯的靜態(tài)故障。

用戶樣機(jī)中的硬件故障(如各個部件內(nèi)部存在的故障和部件之間連接的邏輯錯誤)主要是靠聯(lián)機(jī)仿真來排除的。

在斷電情況下,除8031外,插上所有的元器件,并把仿真器的仿真插頭插入樣機(jī)上8031的插座,然后與開發(fā)系統(tǒng)的仿真器連接,分別打開樣機(jī)和仿真器電源后,便可開始聯(lián)機(jī)仿真調(diào)試。

前面已經(jīng)講到,硬件調(diào)試和軟件調(diào)試是不能完全分開的,許多硬件錯誤是在軟件調(diào)試中發(fā)現(xiàn)和被糾正的。所以說,在上面介紹的軟件設(shè)計過程中的第三步動態(tài)在線調(diào)試中,也包括聯(lián)機(jī)仿真、硬件在線動態(tài)調(diào)試以及硬件故障的排除。

開發(fā)系統(tǒng)的仿真器是一個與被開發(fā)的用戶樣機(jī)具有相同單片機(jī)芯片的系統(tǒng),它是借助開發(fā)系統(tǒng)的資源來模擬用戶樣機(jī)的單片機(jī),對用戶樣機(jī)系統(tǒng)的資源(如存儲器、I/O接口)進(jìn)行管理。同時仿真開發(fā)機(jī)還具有跟蹤功能,它可將程序執(zhí)行過程中的有關(guān)數(shù)據(jù)和狀態(tài)在屏幕上顯示出來,這給查找錯誤和調(diào)試程序帶來了方便。同時,其程序運行的斷點功能、單步功能可直接發(fā)現(xiàn)硬件和軟件的問題。

下面介紹在仿真開發(fā)機(jī)上如何利用簡單調(diào)試程序檢查用戶樣機(jī)電路。

利用仿真開發(fā)機(jī)對用戶樣機(jī)的硬件檢查,常常按其功能及I/O通道分別編寫相應(yīng)簡短的實驗程序,來檢查各部分功能及邏輯是否正確,下面作以簡單介紹。

① 檢查各地址譯碼輸出

通常,地址譯碼輸出是一個低電平有效信號。因此在選到某一個芯片時(無論是內(nèi)存還是外設(shè))其片選信號用示波器檢查應(yīng)該是一個負(fù)脈沖信號。由于使用的時鐘頻率不同,其負(fù)脈沖的寬度和頻率也有所不同。注意在使用示波器測量用戶板的某些信號時,要將示波器電源插頭上的地線斷開,這是由于示波器測量探頭一端連到外殼,在有些電源系統(tǒng)中,保護(hù)地和電源地連在一起,有時會將電源插座插反,將交流220V直接引到測量端而將用戶樣機(jī)板全部燒毀,并且會殃及開發(fā)機(jī)。

下面來討論如何檢查地址譯碼器的輸出,例如,一片6116 存儲芯片地址為2000~27FFH,則可在開發(fā)機(jī)上執(zhí)行如下程序:

    LP:    MOV    DPFR,#2000H
    MOVX   A,@DPTR
    SJMP   LP

程序執(zhí)行后,就應(yīng)該從6116存儲器芯片的片選端看到等間隔的一串負(fù)脈沖,就說明該芯片片選信號連接是正確的,即使不插入該存儲器芯片,只測量插座相應(yīng)片選引腳也會有上述結(jié)果。

用同樣的方法,可將各內(nèi)存及外設(shè)接口芯片的片選信號都逐一進(jìn)行檢查。如出現(xiàn)不正確現(xiàn)象,就要檢查片選線連線是否正確,有無接觸不良或錯線、斷線的現(xiàn)象。

② 檢查RAM存儲器

檢查RAM存儲器可編一程序,將RAM存儲器進(jìn)行寫入,再讀出,將寫入和讀出的數(shù)據(jù)進(jìn)行比較,如發(fā)現(xiàn)錯誤則立即停止。將存儲器芯片插上,執(zhí)行如下程序:

    MOV      A,#00H
    MOV      DFFR,#RAM首地址
    LP:     MOVX  @DPTR,A
    MOV      R0,A
    MOVX     A,@DFFR
    CLR      C
    SUBB     A,R0
    JNZ      LPl
    INC      DPTR
    MOV      A,R0
    INC      A
    SJMP     LP
    LPl:    出錯停止

如一片RAM芯片的每個單元都出現(xiàn)問題,則有可能某些控制信號連接不正確,如一片RAM芯片中一個或幾個單元出現(xiàn)問題,則有可能這一芯片本身是不好的,可換一片再測試一下。

③ 檢查I/O擴(kuò)展接口

對可編程接口芯片(如8155、8255),要首先對該接口芯片進(jìn)行初始化,再對其I/O端口進(jìn)行I/O操作。初始化要按系統(tǒng)設(shè)計要求進(jìn)行,這個初始化程序調(diào)試好后就可作為正式編程的相應(yīng)內(nèi)容。程序初始化后,就可對其端口進(jìn)行讀寫。對開關(guān)量I/O來講,在用戶樣機(jī)板可利用鈕子開關(guān)和發(fā)光二極管進(jìn)行模擬,也可直接接上驅(qū)動板進(jìn)行檢查。一般情況下,用戶樣機(jī)板先調(diào)試,驅(qū)動板單獨進(jìn)行調(diào)試,這樣排除故障更方便些。

如用自動程序檢查端口狀態(tài)不易觀察時,就可用開發(fā)系統(tǒng)的單步功能單步執(zhí)行程序,檢查內(nèi)部寄存器的有關(guān)內(nèi)容或外部相應(yīng)信號的狀態(tài),以確定開關(guān)量輸入輸出通道連接是否正確。

若外設(shè)端口連接一片8255,端口地址為B000~ B003H,A口為方式0輸入,B口、C口都為方式0輸出,則可用下述程序進(jìn)行檢查:

                MOV    DPTR,#0B003H
                MOV    A,#90                  ;90H為方式控制字
                MOVX  @DPTR,A
                NOP
                MOV    DPTR,#0B000H
                MOVX   A,@DPTR                ;將A口輸入狀態(tài)讀入A,單步執(zhí)行完此步后,
                                        可暫停,檢查PA
                                     ;口外部開關(guān)狀態(tài)同A中相應(yīng)位狀態(tài)是否一致
                CLR       C
                MOV    A,#01H
                INC       DPTR
    LP:  MOVX         @KPTR,A                ;將01H送B口,此指令執(zhí)行完后,暫停。看
                                        B口連接的發(fā)光狀態(tài)
                                     ;二極管狀態(tài),第0位是否是高電平
                RLC       A                    ;將1從第0位移到第1位
                JNZ       LP
                INC       DPTR
                RLC       A
    LP1:  MOVX        @DPTR,A                ;將01H送C口,此指令執(zhí)行完后,看C口第0
                                        位的輸出狀態(tài)
                RLC       A
                JNZ       LP1

如使用同步I/O口,例如常用的鎖存器和緩沖器,可直接對端口進(jìn)行讀寫,不存在初始化過程。

通過上面介紹的開發(fā)系統(tǒng)調(diào)試用戶樣機(jī)的過程,可以體會到離開了開發(fā)系統(tǒng)就根本不可能進(jìn)行用戶樣機(jī)的調(diào)試,而調(diào)試的關(guān)鍵步驟——動態(tài)在線仿真調(diào)試,又完全依賴于開發(fā)系統(tǒng)中的在線仿真器。所以說開發(fā)系統(tǒng)性能的優(yōu)劣,主要取決于在線仿真器性能的優(yōu)劣,在線仿真器所能提供仿真開發(fā)的手段,直接影響設(shè)計者的設(shè)計、調(diào)試工作的效率。所以,它對于一個設(shè)計者來說,在了解了目前的開發(fā)系統(tǒng)的種類和性能之后,選擇一個性能/價格比高的開發(fā)系統(tǒng),并能夠熟練的使用它調(diào)試用戶樣機(jī)是十分重要的。

主站蜘蛛池模板: 台中市| 治县。| 闽清县| 祁连县| 体育| 叙永县| 专栏| 芮城县| 施甸县| 台安县| 长宁县| 南宫市| 大渡口区| 桦南县| 平昌县| 射洪县| 岳阳市| 临湘市| 秭归县| 东源县| 广元市| 翁牛特旗| 玛纳斯县| 合山市| 喀喇| 津市市| 通许县| 印江| 彝良县| 西丰县| 调兵山市| 六安市| 江都市| 社旗县| 安乡县| 即墨市| 新乡县| 阳泉市| 湟中县| 娱乐| 阳原县|