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