雙口RAM在嵌入式系統(tǒng)調(diào)試中的應(yīng)用
掃描二維碼
隨時隨地手機(jī)看文章
單片機(jī)系統(tǒng)的調(diào)試通常是在開發(fā)仿真系統(tǒng)上完成,后者把它的硬件(CPU和存儲器)和軟件資源(被調(diào)試程序和參數(shù))暫時出借給前者,并模擬其工作環(huán)境,對其軟、硬件進(jìn)行調(diào)試和修改。
嵌入式PLC 屬于單片機(jī)系統(tǒng),在調(diào)試過程中沒有購買價格昂貴的仿真裝置,而是充分利用雙端口RAM IDT7130的中介作用,以及上位機(jī)操作方便、運(yùn)行結(jié)果直觀的特點(diǎn),通過編寫一特殊程序,將其固化在89C52的EPROM中,根據(jù)該程序中設(shè)置的標(biāo)志條件,把硬件電路和軟件模塊按照分塊、聯(lián)調(diào)的順序進(jìn)行調(diào)試,具體做法結(jié)合圖3所示流程描述如下:
1)在上位機(jī)中以子程序的形式編寫好將要調(diào)試的嵌入式PLC系統(tǒng)的程序功能模塊,借助于工具軟件ASM51將其匯編為二進(jìn)制(.BIN)文件。
2)在上位機(jī)執(zhí)行DEBUG命令把該二進(jìn)制文件送到雙端口RAM對應(yīng)下位機(jī)地址#2100H開始的存儲單元中。
3)在下位機(jī)源程序中對#2000H和#2001H兩個存儲單元清零操作,當(dāng)程序執(zhí)行到RESET處,在這兩個存儲單元中定義了兩個程序開始運(yùn)行的標(biāo)志:99H和88H,從上位機(jī)可以利用DEBUG命令對這兩個標(biāo)志進(jìn)行改變,以控制嵌入式PLC中固化的程序是否繼續(xù)往下執(zhí)行;為了確認(rèn)兩個標(biāo)志被正確設(shè)置和程序往下運(yùn)行的情況,在存儲單元#2002H和#2003H中同樣定義了兩個確認(rèn)標(biāo)志:99H和88H。
4)運(yùn)行標(biāo)志設(shè)置正確后,執(zhí)行調(diào)用語句LCALL 2100H,使得程序指針PC指向所要調(diào)試的程序功能塊首地址處,開始調(diào)用執(zhí)行該程序功能模塊;子程序是否運(yùn)行正常,并且是否返回可通過存儲單元#2002H和#2003H標(biāo)志由99H和88H變?yōu)?2H來確認(rèn)。[!--empirenews.page--]
5)另外在硬件方面可借助輔助調(diào)試手段,使用示波器來測試P1口高四位的波形變化狀況,來判斷程序的運(yùn)行情況。
6)最后返回RESET繼續(xù)判斷運(yùn)行標(biāo)志調(diào)試程序。
7)結(jié)合中斷產(chǎn)生原理,在IDT7130的下位機(jī)地址2100H處裝入中斷服務(wù)程序,上位機(jī)向存儲單元#23FEH中寫1產(chǎn)生中斷,下位機(jī)轉(zhuǎn)而執(zhí)行中斷功能調(diào)試。
利用這種調(diào)試方法,可以通過上位機(jī)在雙口RAM中設(shè)置每一程序模塊的啟動和確認(rèn)標(biāo)志位,即可方便地控制單個模塊的調(diào)試或多個模塊的聯(lián)調(diào),最終實(shí)現(xiàn)系統(tǒng)的功能。
結(jié)語
實(shí)驗(yàn)證明,本系統(tǒng)采用雙口RAM作為主從CPU的中介,是一種實(shí)用、高效的系統(tǒng)設(shè)計(jì)方法。該方法使得信息交換方便快速可靠。利用雙口RAM的共享特點(diǎn),可將上下位機(jī)自身構(gòu)成一種開發(fā)裝置,簡捷有效地實(shí)現(xiàn)工程環(huán)境下的在線調(diào)試。