
你的位置:首頁(yè) > 測(cè)試測(cè)量 > 正文
超全面資料:DSP程序跑飛原因及解決方法
發(fā)布時(shí)間:2015-04-15 責(zé)任編輯:sherry
【導(dǎo)讀】編程的時(shí)候DSP程序跑飛的原因有哪些?我們?cè)撊绾谓鉀Q這些DSP技術(shù)問(wèn)題?今天小編搜羅來(lái)了程序跑飛的各種原因,同時(shí)也湊齊了各種解決程序跑飛的方法,希望能夠?qū)Υ蠹矣兴鶐椭?/strong>
DSP程序跑飛原因狀況一
一般調(diào)試代碼的步驟有兩種方案:方案一是先調(diào)試主程序,最后添加看門(mén)狗等保護(hù)電路;方案二是先搭建代碼環(huán)境,比如看門(mén)狗保護(hù)電路等,然后在該平臺(tái)上開(kāi)發(fā)主程序。為了更好的編寫(xiě)算法代碼,往往采用方案一。在調(diào)試代碼的過(guò)程中,遇到過(guò)如下一種程序跑飛的情況:
【原因】
硬件看門(mén)狗電路設(shè)計(jì)失誤。
【設(shè)計(jì)】
設(shè)計(jì)方案中,采用美信芯片MAX706AT設(shè)計(jì)硬件看門(mén)狗電路,看似非常完美的電路,在連接仿真器進(jìn)行簡(jiǎn)單方波輸出測(cè)試時(shí),發(fā)現(xiàn)DSP沒(méi)有任務(wù)輸出。程序已經(jīng)異常了,因?yàn)椴捎玫姆桨敢辉O(shè)計(jì)代碼,所以只知道異常,不知道原因。
【解決思路】
1、無(wú)數(shù)次的下載程序,并運(yùn)行程序,但是程序總是異常運(yùn)行。
2、慶幸的是,電路設(shè)計(jì)中有好幾個(gè)IO直接驅(qū)動(dòng)LED的電路,這時(shí)候,特別注意到LED顯示的亮度不正常,然后趕緊拿萬(wàn)用表測(cè)試IO電壓,結(jié)果只有1.6V左右。這時(shí)已經(jīng)明白,是看門(mén)狗異常了。
3、排查電路中的MAX706AT電路,一點(diǎn)問(wèn)題都沒(méi)有。查找MAX706AT的封裝和管腳對(duì)應(yīng)時(shí),發(fā)現(xiàn)了問(wèn)題的根源。芯片有SO和UMAX兩種封裝,說(shuō)來(lái)奇怪,名稱完全相同,封裝不同,加上管腳定義不同,造成了看門(mén)狗芯片的復(fù)位電壓總是低電壓。
終于找到問(wèn)題了。

DSP程序跑飛原因狀況二
【原因】
中斷處理超時(shí)引起程序跑飛
【設(shè)計(jì)】
設(shè)計(jì)基于TMS320F28335(4)的雙極性信號(hào)采集系統(tǒng),因?yàn)轭l率較高,因此采用了中斷采集方式,也就是說(shuō)用PWM輸出方波,觸發(fā)采集模塊開(kāi)始采集,當(dāng)采集鎖存之后會(huì)中斷。
告知dsp進(jìn)行數(shù)據(jù)讀取。那么數(shù)據(jù)讀取就是在中斷中進(jìn)行的。
在初版中,采用周期=20ms/256進(jìn)行采樣觸發(fā)。
很奇怪的問(wèn)題發(fā)生了,DEBUG模式下,沒(méi)有問(wèn)題,可以采集到數(shù)據(jù),但是RELEASE模式下,采集數(shù)據(jù)時(shí),程序跑飛。
當(dāng)意識(shí)到程序跑飛時(shí),懷疑到中斷程序太長(zhǎng),或者處理時(shí)間太長(zhǎng)。
[page]
【解決思路】
猜測(cè)周期太短,那么可以將周期增加,周期=20ms/128,仍然失敗告終。
再減周期=20ms/64,okay。
宜將剩勇追窮寇,周期減為=20ms/32,okay
第一次就這樣解決了。
【附】當(dāng)使用dsp進(jìn)行算法處理時(shí),一定要先對(duì)算法評(píng)估,否則,當(dāng)認(rèn)識(shí)到自己程序問(wèn)題時(shí),已經(jīng)來(lái)不及了,因?yàn)閰?shù)修改之后,有可能不能滿足系統(tǒng)的需求。
DSP程序跑飛原因狀況三
1.不小心操作到了子函數(shù)返回地址值。
2.數(shù)值溢出,讀寫(xiě)了超過(guò)范圍的存儲(chǔ)空間,堆棧溢出等 。
程序是帶有BIOS的程序,當(dāng)程序跑飛后我就在主函數(shù)的最后一行設(shè)置斷點(diǎn),結(jié)果程序可以跑到主函數(shù)的最后一行,接下來(lái)就是初始化BIOS操作系統(tǒng)了,操作系統(tǒng)的源代碼又是不可見(jiàn)的,所以一時(shí)陷入了僵局。不知道該怎么辦好。
在移植程序的時(shí)候跑飛的,后來(lái)我就拿程序的BIOS配置和另一個(gè)正常的BIOS配置比較,結(jié)果發(fā)現(xiàn)Stack Size是0x400(即默認(rèn)的配置),而另一個(gè)是0x1000,然后改過(guò)來(lái)之后程序恢復(fù)正常。
一開(kāi)始的時(shí)候意識(shí)到可能是堆棧溢出造成的程序跑飛,所以就增大了每塊存儲(chǔ)器上的動(dòng)態(tài)堆棧,即:create a heap in this memory heap size:0x08000 。結(jié)果不管用。
后來(lái)才修改的Stack Size (MAUs)選項(xiàng),即全局的堆棧大小,從0x400改到0x1000然后問(wèn)題排除。后來(lái)才明白,動(dòng)態(tài)堆棧是用來(lái)動(dòng)態(tài)的創(chuàng)建任務(wù)用的,并非是想要的那個(gè)堆棧。經(jīng)過(guò)反思感覺(jué)還是對(duì)BIOS系統(tǒng)不熟悉造成的大錯(cuò)!
DSP程序跑飛原因狀況四
過(guò)單片機(jī)的程序跑飛的有,靜電干擾。 超頻過(guò)大。導(dǎo)致不穩(wěn)定。
DSP程序跑飛原因狀況五
程序經(jīng)常跑飛的ti dsp 調(diào)試原因
1) 程序沒(méi)有結(jié)尾或不是循環(huán)的程序。
2)nmi管腳沒(méi)有上拉。
3)在看門(mén)狗動(dòng)作的時(shí)候程序會(huì)經(jīng)常跑飛。
4)程序編制不當(dāng)也會(huì)引起程序跑飛。
5)硬件系統(tǒng)有問(wèn)題
數(shù)值溢出,讀寫(xiě)了超過(guò)范圍的存儲(chǔ)空間,堆棧溢出,異常主要原因。復(fù)位芯片的原理,是為了防止程序出錯(cuò)。但是不能通過(guò)復(fù)位來(lái)解決異常問(wèn)題,所以,首先要調(diào)試代碼,做到代碼正常運(yùn)轉(zhuǎn),然后,再添加復(fù)位模塊。這樣才能做好產(chǎn)品,否則,為了復(fù)位而復(fù)位。
特別推薦
- 如何利用示波器快速判斷變壓器的同名端和異名端?
- 貿(mào)澤電子2024年新增逾60家供應(yīng)商持續(xù)為客戶擴(kuò)大產(chǎn)品代理陣容
- 操作AMP輸入保護(hù)可能很嘈雜
- 電阻測(cè)量問(wèn)題
- 革新視覺(jué)系統(tǒng)的設(shè)計(jì)和效率,這兩款圖像傳感器了解一下
- 利用信號(hào)切換估量設(shè)備的功耗
- 利用 D 類(lèi)放大器 1L 調(diào)制技術(shù)縮小汽車(chē)音響系統(tǒng)設(shè)計(jì)尺寸
技術(shù)文章更多>>
- 迎刃而解——華大九天Polas利器應(yīng)對(duì)功率設(shè)計(jì)挑戰(zhàn)
- 驅(qū)動(dòng)電路設(shè)計(jì)(一)—— 驅(qū)動(dòng)器的功能綜述
- 650V耐壓GaN HEMT新增小型、高散熱TOLL封裝
- 瑞典森爾(Senseair)發(fā)布全系列合規(guī)傳感器應(yīng)對(duì)制冷劑易燃性挑戰(zhàn)
- 借助隔離式電壓檢測(cè),實(shí)現(xiàn)功率轉(zhuǎn)換與電機(jī)控制效率飛躍
技術(shù)白皮書(shū)下載更多>>
- 車(chē)規(guī)與基于V2X的車(chē)輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車(chē)安全隔離的新挑戰(zhàn)
- 汽車(chē)模塊拋負(fù)載的解決方案
- 車(chē)用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門(mén)搜索
色環(huán)電感
上海豐寶
攝像頭
生產(chǎn)測(cè)試
聲表諧振器
聲傳感器
濕度傳感器
石英機(jī)械表
石英石危害
時(shí)間繼電器
時(shí)鐘IC
世強(qiáng)電訊
示波器
視頻IC
視頻監(jiān)控
收發(fā)器
手機(jī)開(kāi)發(fā)
受話器
數(shù)字家庭
數(shù)字家庭
數(shù)字鎖相環(huán)
雙向可控硅
水泥電阻
絲印設(shè)備
伺服電機(jī)
速度傳感器
鎖相環(huán)
胎壓監(jiān)測(cè)
太陽(yáng)能
太陽(yáng)能電池