robi:
分享下程序經(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)題
liulin126:
數(shù)值溢出,讀寫(xiě)了超過(guò)范圍的存儲(chǔ)空間,堆棧溢出,異常主要原因。
wjw1989:
我之前玩arm,應(yīng)該道理是相同的吧。
復(fù)位芯片的原理,是為了防止程序出錯(cuò)。但是不能通過(guò)復(fù)位來(lái)解決異常問(wèn)題,所以,首先要調(diào)試代碼,做到代碼正常運(yùn)轉(zhuǎn),然后,再添加復(fù)位模塊。這樣才能做好產(chǎn)品,否則,為了復(fù)位而復(fù)位。
wjw1989:
分享個(gè)別人的經(jīng)驗(yàn):
我所知道的DSP程序跑飛的原因有:
硬件:1.復(fù)位電路不穩(wěn)定;2.電源不穩(wěn)定;3.地線不穩(wěn)定。
軟件: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ò)!
wjw1989:
朋友也有一些分享,這里總結(jié)如下:
我所知道的DSP程序跑飛的原因有:
硬件:1.復(fù)位電路不穩(wěn)定;2.電源不穩(wěn)定;3.地線不穩(wěn)定。
軟件: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ò)!
我個(gè)人覺(jué)得,關(guān)于硬件,問(wèn)題無(wú)非就是一個(gè):電源。
電源不穩(wěn),芯片工作肯定不正常。不正常會(huì)出現(xiàn)什么問(wèn)題呢?
?。?)芯片不工作。哈哈。這是我這次卻發(fā)現(xiàn),當(dāng)IO輸出短路,會(huì)造成芯片不工作,現(xiàn)象是:芯片io電平不死3.3v,而是1.768v
(2)芯片不斷復(fù)位,這個(gè)問(wèn)題不說(shuō)了,如同芯片不斷上電斷電。
評(píng)論