[ZLG-ARM] 系统有FIQ中断,但发生了IRQ中断,一直不能进入?

[复制链接]
2995|7
 楼主| hpy013 发表于 2008-1-7 10:08 | 显示全部楼层 |阅读模式
只会执行FIQ,这是怎么回事啊?一直停留在“取数据中止”。该怎么办啊?<br />那位以前也发生过,说说怎么解决的啊?
zlgarm 发表于 2008-1-7 13:13 | 显示全部楼层

看看你的程序

hpy013&nbsp;您好:<br /><br />1.确定,是否打开了内核中的IRQ中断.<br /><br />2.确定程序是否正确下载到芯片里.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;&nbsp;zlgarm_zhp<br /><br />
 楼主| hpy013 发表于 2008-1-7 17:58 | 显示全部楼层

我还是有点感觉有点奇对IRQ中断处理程序或者FIQ中断程序部

可能有点问题,不过还不清楚。为什么有时候可以,而有时候就不可以。<br />按理说,完成FIQ,就应该跳回去执行IRQ中断。<br />看来得花点时间,再找找。那位如果解决过有此类情况,欢迎能给小弟提供一下。<br />我的是FIQ,是Timer0&nbsp;0.5S的中断。产生16个脉冲。TOIR=0x00,结束中断。<br />IRQ中断是USBDMA传输中断。现在是:不打开FIQ中断,USB(IRQ)中断,没问题。一旦打开FIQ中断(在USB枚举后),好象程序一直再出来FIQ中断,不过IRQ有1~2次成功,但再继续就不行了。有时候,一次IRQ中断也不行。<br />我现在修改了FIQ_STACK_LEGTH大小了。设置成512。<br /><br />;设置系统模式堆栈&nbsp;也做了修改。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#0x1f&nbsp;;原来是0xdf。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;=StackUsr<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;R0<br /><br />欢迎大家帮我看看。谢谢zlgarm。
zlgarm 发表于 2008-1-7 19:28 | 显示全部楼层

FIQ

hpy013&nbsp;&nbsp;您好:<br /><br />有没有将Timer0的中断标志,清除掉?<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;&nbsp;zlgarm_zhp
 楼主| hpy013 发表于 2008-1-7 20:10 | 显示全部楼层

不好意思,上面写错了

&nbsp;TOIR=0x01&nbsp;清除了。也不知道怎么回事,我现在的程序,FIQ后,能进行一次IRQ中断。总算比以前好了那么一点点。
 楼主| hpy013 发表于 2008-1-7 20:41 | 显示全部楼层

我的FIQ中断程序:

//****************FIQ部分的程序****************************<br />extern&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Pulses(void);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;FIQ_Exception(void)<br />{<br />&nbsp;<br />&nbsp;&nbsp;Pulses();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;change&nbsp;it&nbsp;to&nbsp;your&nbsp;code&nbsp;&nbsp;这一句替换为自己的代码<br />&nbsp;&nbsp;<br />&nbsp;}<br /><br />/*********************************************************/<br /><br /><br /><br />下面是Pluses部分的程序<br />;-------------Pulses()------------------------------------<br />AREA&nbsp;&nbsp;&nbsp;&nbsp;AsmFunc,&nbsp;CODE,&nbsp;READONLY<br />&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;&nbsp;&nbsp;&nbsp;Pulses<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;send_data<br />Pulses<br />&nbsp;&nbsp;&nbsp;&nbsp;STMFD&nbsp;&nbsp;&nbsp;&nbsp;SP!,&nbsp;{R0-R10,&nbsp;LR}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;入栈<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R10,=send_data<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;[R10]<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R2,&nbsp;#0x10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;LR数据长度<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R3,&nbsp;#0x200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;P0.9&nbsp;MCK<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;#0x10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;P0.4&nbsp;DIN<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R9,&nbsp;=0xE0004000&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R8,&nbsp;=0xFFFFF030&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R7,&nbsp;#0<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R4,&nbsp;=0x3FFFC01C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;FIO0CLR0<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R5,&nbsp;=0x3FFFC018&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;FIO0SET0<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R6,&nbsp;#0x80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;P0.7&nbsp;WS&nbsp;<br />;WS=0&nbsp;16位循环&nbsp;&nbsp;&nbsp;&nbsp;<br />LOOP&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R3,&nbsp;[R4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;MCK=0<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R6,&nbsp;[R4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;WS=0<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />LOOP3<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R3,&nbsp;[R4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;MCK=0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;#0x80000000<br />&nbsp;&nbsp;&nbsp;&nbsp;BNE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOOP1<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;[R4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;DOUT=0<br />&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOOP2<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />LOOP1<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;[R5]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;DOUT=1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />LOOP2&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R7,&nbsp;R0,LSL&nbsp;#1<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;R7<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R3,&nbsp;[R5]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;MCK=1<br />&nbsp;&nbsp;&nbsp;&nbsp;SUBS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R2,&nbsp;R2,#1<br />&nbsp;&nbsp;&nbsp;&nbsp;BHI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOOP3<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R2,&nbsp;#0x10<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;[R10]<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R10,R0,LSL&nbsp;#16<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;R10<br />;WS=1&nbsp;16位循环&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />LOOP_SMALL<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R3,&nbsp;[R4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;MCK=0<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R6,&nbsp;[R5]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;WS=1<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />LOOP_SMALL3<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R3,&nbsp;[R4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;MCK=0<br />&nbsp;&nbsp;&nbsp;&nbsp;TST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;#0x80000000<br />&nbsp;&nbsp;&nbsp;&nbsp;BNE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOOP_SMALL1<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;[R4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;DOUT=0<br />&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOOP_SMALL2<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />LOOP_SMALL1<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;[R5]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;DOUT=1<br />LOOP_SMALL2<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R7,&nbsp;R0,LSL&nbsp;#1<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;R7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R3,&nbsp;[R5]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;MCK=1<br />&nbsp;&nbsp;&nbsp;&nbsp;SUBS&nbsp;&nbsp;&nbsp;&nbsp;R2,&nbsp;R2,#1<br />&nbsp;&nbsp;&nbsp;&nbsp;;CMP&nbsp;&nbsp;&nbsp;&nbsp;R2,&nbsp;#0<br />&nbsp;&nbsp;&nbsp;&nbsp;BHI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOOP_SMALL3<br />;循环结束<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R7,&nbsp;#0x01<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R7,&nbsp;[R9]<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R6,&nbsp;#0x00<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R6,&nbsp;[R8]<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;LDMFD&nbsp;&nbsp;&nbsp;&nbsp;SP!,&nbsp;{R0-R10,&nbsp;LR}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;返回<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;END<br />;--------------------------------------------------------
 楼主| hpy013 发表于 2008-1-7 21:11 | 显示全部楼层

继续

通过仿真调试,发现程序在以下范围内。不去执行USB了<br /><br /><br />;______________________________________________________<br />;取数据中止<br />DataAbort<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataAbort<br /><br />;快速中断<br />FIQ_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STMFD&nbsp;&nbsp;&nbsp;SP!,&nbsp;{R0-R3,&nbsp;LR}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FIQ_Exception<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDMFD&nbsp;&nbsp;&nbsp;SP!,&nbsp;{R0-R3,&nbsp;LR}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUBS&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;&nbsp;LR,&nbsp;&nbsp;#4<br /><br /><br />;______________________________________________________<br /><br />而且IRQ中断也不知道什么时候,就被一直关闭了。<br />大伙帮忙看看,我可没有关闭IRQ啊。<br />
 楼主| hpy013 发表于 2008-1-7 21:55 | 显示全部楼层

哈哈,有一点进展了

原来我对存储器加速模块的设置的值进行了修改,也会受到影响。<br />现在改回去了,不过好想可以发生IRQ的次数要多些了。再找问题。各位高手也帮我看看啊~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

516

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部