百思不得其解的问题
我用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]