- 51單片機(jī)應(yīng)用開發(fā)從入門到精通(“十二五”國家重點圖書出版規(guī)劃項目)
- 張華杰編著
- 3358字
- 2019-01-02 09:17:12
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ī)是十分重要的。
- 輕松學(xué)會單片機(jī)
- FPGA嵌入式項目開發(fā)三位一體實戰(zhàn)精講
- ABAQUS 2016有限元分析從入門到精通
- VxWorks設(shè)備驅(qū)動開發(fā)詳解
- 基于HCS12的嵌入式系統(tǒng)設(shè)計
- 嵌入式Linux接口開發(fā)技術(shù)
- DSP技術(shù)與應(yīng)用實例
- 單片機(jī)應(yīng)用基礎(chǔ)教程(第二版)
- 51單片機(jī)逆向?qū)W習(xí)實戰(zhàn)教程(電子設(shè)計與嵌入式開發(fā)實踐叢書)
- STM32W無線射頻Zigbee單片機(jī)原理與應(yīng)用
- 單片微型計算機(jī)原理及應(yīng)用
- 單片機(jī)應(yīng)用技術(shù)實訓(xùn)指導(dǎo)
- 我和PIC單片機(jī):基于PIC18
- 案例解說組態(tài)軟件典型控制應(yīng)用
- 愛上單片機(jī)(第4版)