我調(diào)試2407的一點經(jīng)驗之談!
本人為在校學生,前一段時間在外找了份兼職,任務(wù)是改動并移植兩個電機的控制程序(在240平臺上)到2407平臺(他們已搭好)上,老板剛交代任務(wù)的時候覺得還算簡單,結(jié)果拿到板子一看傻眼了.因為上邊沒有擴展的PROGRAM RAM.公司里以前沒有人搞過2407,他們設(shè)計好的板子也從來沒有人用過,讓我來搞八成是考慮我還是學生,反正報酬也不多,也不會影響他們的正常工作,順便檢驗一下板子設(shè)計的對不對.
接下來的兩個月我可慘了,調(diào)試程序只能一遍接一遍將程序燒到Flash里面,然后運行看現(xiàn)象,再判斷那里需要改動,然后改完再燒......就這樣花了九牛二虎之力搞定了.老板很滿意,于是在這塊2407平臺基礎(chǔ)上又加了好多功能,板子重新設(shè)計,要我來做.我想這次可得加RAM,否則打死我也不干了.
我以前搞過C32,也看過54X和C6000的一些資料,這些器件的中斷向量表是可以重定位的.但是2407的中斷向量表是不可重定位的,必須是程序存儲區(qū)的0000H-0040H,我設(shè)計板子的時候只是考慮了一下,沒有深想,覺得仿真的話我把程序調(diào)到RAM里應(yīng)該是可以的,再這將來程序肯定要燒到Flash里面,所以我就直接把MP&/MC引腳直接拉到地上了.
結(jié)果這次又掛了:(.我拿到新板子后,開始調(diào)試,發(fā)現(xiàn)根本不進中斷,弄了一天不知所以然,后來就懷疑MP/MC方式了,因為MP模式存儲器必須是外部的,于是我想割線跳線了,但是根本不行,因為板子是四層板,而MP/MC引腳引出的導(dǎo)線偏偏在DSP芯片下面,沒有辦法割,除非換芯片.
我極度郁悶,以為完蛋了!還得一遍遍燒flash了!后來查資料看到MP/MC模式可以通過軟件設(shè)定,但是程序運行之前的上電復(fù)位狀態(tài)是MC沒法改,所以我想了個辦法還挺有效:
先在程序代碼里將MP/MC位置1,然后運行一下(此時DSP運行在MC模式,片外Program RAM從8000H開始,CMD文件里的Program區(qū)從8000H開始即程序放置在外部RAM)將MP/MC位的狀態(tài)改成1,然后千萬不要復(fù)位DSP(括CC的復(fù)位操作),再將CMD文件里的Program區(qū)改為從0000H開始即可.然后將.out文件load到RAM里運行,呵呵,隨你設(shè)斷點,中斷一樣很正常能進.
不過大家如果要設(shè)計2407,最好還是在MP/MC引腳接入處加跳線為妙,這樣在調(diào)試時拉高為MP方式,調(diào)定后拉低為MC方式.
一點經(jīng)驗教訓(xùn),與大家共享,希望大家少走彎路! 進入?yún)⑴c討論。。。