这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » VXWORKS,NUCLEUS,keil,for,arm,01a,ccd,135

共2条 1/1 1 跳转至

,VXWORKS,NUCLEUS,keil,for,arm,01a,ccd,13581980230, 44B0程序跑飞问题,出现ENTER DEBUGUNF。高

院士
2006-09-17 18:14:16     打赏
,VXWORKS,NUCLEUS,keil,for,arm,01a,ccd,13581980230, 44B0程序跑飞问题,出现ENTER DEBUGUNF。高手请进!



关键词: VXWORKS     NUCLEUS     135819802    

院士
2006-12-22 22:43:00     打赏
2楼
问 440程序调试成功,烧写进去ARM开发板,开发板装于一机器上,当机器未开动保持静止状态时,程序运行正常,传感器控制机构工作正常。但当机器发动机一开动,程序进行了不到一分钟,原本向上位机发送的反馈信号,立刻出现ENTER DEBUGUNF,ENTER DEBUGUNF,ENTER DEBUGUNF等,程序瞬时中断。而当机器一关闭,开发板重新复位上电,程序正常工作。
请问一下,这是何原因呢,谢谢各位! 1: 检查电源电源在瞬间提供不了这么大的电流,电压下降,于是复位芯片输出复位 2: 请问一下如何解决这个问题呢?是不是从电源方面入手?我用的电源只有两个12V的车用蓄电池,可供100A电流!电路板需要的是9V 600ma的电源,配套电源就是一个交流220V转9V的变压器。我现在用12V,采用7809进行稳压,我查了数据手册,标准电流为500ma,我想问下,是否有电流更大的稳压芯片么?能否告之,谢谢! 3: ENTER DEBUGUNF是什么ENTER DEBUGUNF是什么?是不是发动机产生干扰,引起位处理的中断,或者是对存储器地址pin脚有影响,访问存储器失败。 4: 应该是未定义中断调试! 5: 我给点意见供参考应该是发动机的干扰引起的吧,信号有没有做隔离?看看地线是怎么处理的? 6: ENTER DEBUGUNF程序有时候不单出现ENTER DEBUGUNF,其他模式的比如Enter DebugDABORT、Enter DebugSWI都有出现过,程序瞬时死了。
所有这些错误,都是在机器发动机开打之后产生。电源问题目前应该可以说解决了,但是问题是,发动机打开之后车体震动厉害。目前我认为可能两种情况可能引起这个问题:
1,发动机干扰
2,车体震动导致接线接触不良引起

经过几番测试。现象如下:
控制盒放至驾驶员座位,简单用胶布粘贴,工作尚算稳定
控制盒直接拿开车体,放置车边桌上,工作尚算稳定

但,控制盒放置车上,用海绵垫子减震,工作不稳定,偶尔开始情况可以,但工作不了10分钟,仍然出现未知错误,程序跑飞,甚至紊乱,输出不正常。在发动机工作条件下,重新复位,亦不正常。但发动机关机后重新复位工作正常。
如何解决这个问题?谢谢,唉,情况棘手,不知道如何是好。工作不稳定,没办法做试验 7: 输出异常void ARMInitInterrupts(void)
{
    // Non-vectored,IRQ disable,FIQ disable    
    rINTCON = 0x0 ;      

    // All=IRQ mode
    rINTMOD = 0x0 ;      

    // All interrupt is masked.
    rINTMSK = BIT_GLOBAL;      

    //set interrupt vector routine
//    pISR_RESET                    //reserved
    pISR_UNDEF = (unsigned) DebugUNDEF;
    pISR_SWI = (unsigned) DebugSWI;
    pISR_PABORT = (unsigned) DebugPABORT;
    pISR_DABORT = (unsigned) DebugDABORT;
//    pISR_RESERVED = (unsigned) BreakPoint;        //not used
//    pISR_IRQ = (unsigned) 0;            //reserved
    pISR_FIQ = (unsigned) DebugFIQ;
    
    pISR_ADC= (unsigned) BreakPoint;
    pISR_RTC= (unsigned) BreakPoint;
    pISR_UTXD1= (unsigned) BreakPoint;
    pISR_UTXD0= (unsigned) BreakPoint;
    pISR_SIO= (unsigned) BreakPoint;
    pISR_IIC= (unsigned) BreakPoint;
    pISR_URXD1= (unsigned) BreakPoint;
    pISR_URXD0= (unsigned) OSURXD0ISR;
    pISR_TIMER5= (unsigned) BreakPoint;
    pISR_TIMER4= (unsigned) OSTIMER4ISR;
    pISR_TIMER3= (unsigned) BreakPoint;
    pISR_TIMER2= (unsigned) BreakPoint;
    pISR_TIMER1= (unsigned) BreakPoint;
    pISR_TIMER0= (unsigned) BreakPoint;
    pISR_UERR01= (unsigned) BreakPoint;
    pISR_WDT= (unsigned) BreakPoint;
    pISR_BDMA1= (unsigned) BreakPoint;
    pISR_BDMA0= (unsigned) BreakPoint;
    pISR_ZDMA1= (unsigned) BreakPoint;
    pISR_ZDMA0= (unsigned) BreakPoint;
    pISR_TICK= (unsigned) BreakPoint;
    pISR_EINT4567= (unsigned) BreakPoint;
    pISR_EINT3= (unsigned) BreakPoint;
    pISR_EINT2= (unsigned) OSEINT2ISR;
    pISR_EINT1= (unsigned) BreakPoint;
    pISR_EINT0= (unsigned) BreakPoint;

    pISR_TIMER0= (unsigned) OSTickISR;
    
}
void DebugUNDEF(void)
{
    Uart_Printf("Enter DebugUNDEF");

    while(1)
    {
        Led_Set( 0xf ) ;        Delay_Task( 1000 ) ;
        Led_Set( 0x0 ) ;        Delay_Task( 1000 ) ;
    }
}

//*******************************************************************************************************
void DebugSWI(void)
{
    Uart_Printf("Enter DebugSWI");

    while(1)
    {
        Led_Set( 0xf ) ;        Delay_Task( 1000 ) ;
        Led_Set( 0x0 ) ;        Delay_Task( 1000 ) ;
    }
}

//*******************************************************************************************************
void DebugPABORT(void)
{
    Uart_Printf("Enter DebugPABORT");

    while(1)
    {
        Led_Set( 0xf ) ;        Delay_Task( 1000 ) ;
        Led_Set( 0x0 ) ;        Delay_Task( 1000 ) ;
    }
}

//*******************************************************************************************************
void DebugDABORT(void)
{
    Uart_Printf("Enter DebugDABORT");

    while(1)
    {
        Led_Set( 0xf ) ;        Delay_Task( 1000 ) ;
        Led_Set( 0x0 ) ;        Delay_Task( 1000 ) ;
    }
}

//*******************************************************************************************************
void DebugFIQ(void)
{
    Uart_Printf("Enter DebugFIQ");

    while(1)
    {
        Led_Set( 0xf ) ;        Delay_Task( 1000 ) ;
        Led_Set( 0x0 ) ;        Delay_Task( 1000 ) ;
    }
}
至于有人不知道为什么会出现这些莫明的字符串,程序在此。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]