珊瑚虫 发表于 2005-7-20 10:39:40

百思不得其解的问题

我用sdt生成的bin文件,通过串口下载到sdram空间后,一切正常运行。
可同样的文件,我用ads编译链接生成bin文件后,下载到sdram空间后,有时能正常运行,有时不能正常运行:主要是涉及到中断的程序总是跑

飞,后来,我在主程序中加了一个ISR_Init()函数,这时总能正常运行。可是,在sdt下,在主程序中我没用这个函数也能正常响应中断啊。
Isr_Init()函数如下:

void Isr_Init(void)
{
    U32 i;
   
    pISR_UNDEF = (unsigned)HaltUndef;
    pISR_SWI= (unsigned)HaltSwi;
    pISR_PABORT = (unsigned)HaltPabort;
    pISR_DABORT = (unsigned)HaltDabort;
      
   for(i = _RAM_STARTADDRESS;i < (_RAM_STARTADDRESS+0x20);i += 4)
    {
      *((volatile unsigned *)i) = 0xEA000000+0x1FFE;   
    }

    rINTCON = 0x5;      /* 使能IRQ,不使用矢量模式,禁止FIQ */
   
    rINTMOD = 0x0;      /* 以IRQ模式响应所有中断 */
   
    rINTMSK |= BIT_GLOBAL;/* 屏蔽所有中断 */
   
}

事实上,在每个涉及到中断的函数里,我都进行了中断的相关设置即rINTCON、rINTMOD、rINTMSK,没必要在main()函数里调用
Isr_Init,用sdt生成的bin文件也总是能正常运行的。

奇怪,百思不得其解,按说ads功能应该更强的。

另外,上段程序的for循环空间是什么作用,一直没弄明白。为什么要把                                                

0x0c00_0000~0x0c00_001c这8个字单元都赋值为0xEA00_1FFE,0xEA001FFE是跳转指令,但是跳转到哪里呢?

不明白ing,郁闷中

期盼大侠指点

btw:我用的是44b0开发板
页: [1]
查看完整版本: 百思不得其解的问题