本人目前使用LPC23xx系列的ARM7芯片做通信的工程,整個(gè)程序只用到CAN、UART、Time幾個(gè)外設(shè),其中UART采用中斷接收方式,Time也開了中斷用于產(chǎn)生周期的定時(shí)信號(hào)值,串口的中斷優(yōu)先級(jí)要高于定時(shí)器的。其次主要實(shí)現(xiàn)的功能就是定時(shí)地通過CAN對(duì)CAN總線網(wǎng)絡(luò)的其他節(jié)點(diǎn)進(jìn)行收發(fā)信息操作,然后轉(zhuǎn)換成串口數(shù)據(jù)格式,再由串口進(jìn)行收發(fā)工作。這是基本情況。
可在實(shí)際的測(cè)試過程中,當(dāng)我開機(jī)后,采用每隔1.6s通過串口下發(fā)數(shù)據(jù)進(jìn)行查詢時(shí),過了差不多半個(gè)小時(shí)就沒有返回?cái)?shù)據(jù)了,采用MDK在線仿真發(fā)現(xiàn)每一次都是程序陷入了啟動(dòng)代碼的DAbt行,如下圖所示。
1號(hào)節(jié)點(diǎn)開機(jī)運(yùn)行死機(jī).png (277.91 KB, 下載次數(shù): 67)
下載附件
DAbt異常1
2018-5-31 21:43 上傳
然后我采用http://www.torrancerestoration.com/bbs/dpj-121124-1.html 的方法對(duì)R14寄存器中的地址值減8并在Command窗口中輸入后程序跳轉(zhuǎn)到定時(shí)器中斷服務(wù)程序中,如下圖所示。
反匯編查找2.png (336.95 KB, 下載次數(shù): 69)
下載附件
DAbt2
2018-5-31 21:44 上傳
想請(qǐng)教一下,這種問題的根本原因是因?yàn)槎褩R绯雎,解決這種問題的思路是什么?
謝謝。
|