你的位置:首頁(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ù)位。
特別推薦
- 兆易創(chuàng)新GD32F30x STL軟件測(cè)試庫(kù)獲得德國(guó)萊茵TüV IEC 61508功能安全認(rèn)證
- 芯科科技第三代無(wú)線開(kāi)發(fā)平臺(tái)引領(lǐng)物聯(lián)網(wǎng)發(fā)展
- MSO 4B 示波器為工程師帶來(lái)更多臺(tái)式功率分析工具
- 艾為電子推出新一代高線性度GNSS低噪聲放大器——AW15745DNR
- 瑞薩發(fā)布四通道主站IC和傳感器信號(hào)調(diào)節(jié)器, 以推動(dòng)不斷增長(zhǎng)的IO-Link市場(chǎng)
- e絡(luò)盟現(xiàn)貨供應(yīng) Abracon 新推出的 AOTA 系列微型鑄型電感器
- 加賀富儀艾電子推出支持Wi-Fi 6和藍(lán)牙的無(wú)線局域網(wǎng)/藍(lán)牙組合模塊
技術(shù)文章更多>>
- 一文掌握UV LED在空凈消殺領(lǐng)域的主要應(yīng)用
- 【“源”察秋毫系列】 Keithley在碳納米管森林涂層纖維復(fù)合材料的應(yīng)用
- 數(shù)字驅(qū)動(dòng)工業(yè),智能賦能制造 AMTS & AHTE SOUTH CHINA 2024同期會(huì)議全公開(kāi)!
- 團(tuán)體觀展招募!104CEF開(kāi)啟組團(tuán)觀眾通道,解鎖更多禮遇
- 觸摸式OLED顯示屏有望重新定義汽車用戶界面
技術(shù)白皮書(shū)下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門(mén)搜索
電阻觸控屏
電阻器
電阻作用
調(diào)速開(kāi)關(guān)
調(diào)諧器
鼎智
動(dòng)力電池
動(dòng)力控制
獨(dú)石電容
端子機(jī)
斷路器
斷路器型號(hào)
多層PCB
多諧振蕩器
扼流線圈
耳機(jī)
二極管
二極管符號(hào)
發(fā)光二極管
防靜電產(chǎn)品
防雷
防水連接器
仿真工具
放大器
分立器件
分頻器
風(fēng)力渦輪機(jī)
風(fēng)能
風(fēng)扇
風(fēng)速風(fēng)向儀