崩溃了,ARM的伪中断问题

[复制链接]
3341|4
 楼主| fhqmc 发表于 2007-2-11 19:13 | 显示全部楼层 |阅读模式
masashinakayama 发表于 2007-2-12 09:10 | 显示全部楼层

是个问题,呵呵呵

但是不严重,没啥
arzhiy 发表于 2007-2-14 15:14 | 显示全部楼层

关于LPC2000系列ARM7伪中断产生和处理

<br /><br />关于LPC2000系列ARM7伪中断产生和处理<br /><br />可到blog<br /><br />http://arzhiy.21ic.org/<br /><br />看看,根据自己看到遇到的,总结了一点点,并且在我自己的系统中伪中断也有所解决,写得不全,请大家接着补充。&nbsp;<br />&nbsp;<br />不知道你用的是不是LPC2000,但是伪中断大致处理类似。<br />
hotpower 发表于 2007-2-14 15:26 | 显示全部楼层

开关IRQ/FIQ不应该在用户级上进行

在用户级上应该用swi调用.<br />如;<br /><br />void&nbsp;__swi(0)&nbsp;Enable_IRQ(void);<br />void&nbsp;__SWI_0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void)&nbsp;{<br />int&nbsp;tmp;<br />&nbsp;&nbsp;__asm<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;MRS&nbsp;tmp,&nbsp;SPSR<br />&nbsp;&nbsp;&nbsp;&nbsp;BIC&nbsp;tmp,&nbsp;tmp,&nbsp;#0x80<br />&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;SPSR_c,&nbsp;tmp<br />&nbsp;&nbsp;}<br />}<br /><br />void&nbsp;__swi(1)&nbsp;Disable_IRQ(void);<br />void&nbsp;__SWI_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void)&nbsp;{<br />int&nbsp;tmp;<br />&nbsp;&nbsp;__asm<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;MRS&nbsp;tmp,&nbsp;SPSR<br />&nbsp;&nbsp;&nbsp;&nbsp;ORR&nbsp;tmp,&nbsp;tmp,&nbsp;#0x80<br />&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;SPSR_c,&nbsp;tmp<br />&nbsp;&nbsp;}<br />}<br /><br />void&nbsp;__swi(2)&nbsp;Enable_FIQ(void);<br />void&nbsp;__SWI_2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void)&nbsp;{<br />int&nbsp;tmp;<br />&nbsp;&nbsp;__asm<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;MRS&nbsp;tmp,&nbsp;SPSR<br />&nbsp;&nbsp;&nbsp;&nbsp;BIC&nbsp;tmp,&nbsp;tmp,&nbsp;#0x40<br />&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;SPSR_c,&nbsp;tmp<br />&nbsp;&nbsp;}<br />}<br /><br />void&nbsp;__swi(3)&nbsp;Disable_FIQ(void);<br />void&nbsp;__SWI_3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void)&nbsp;{<br />int&nbsp;tmp;<br />&nbsp;&nbsp;__asm<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;MRS&nbsp;tmp,&nbsp;SPSR<br />&nbsp;&nbsp;&nbsp;&nbsp;ORR&nbsp;tmp,&nbsp;tmp,&nbsp;#0x40<br />&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;SPSR_c,&nbsp;tmp<br />&nbsp;&nbsp;}<br />}<br /><br /><br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;Disable_IRQ();<br />&nbsp;&nbsp;Disable_FIQ();<br />//.................<br />&nbsp;&nbsp;Enable_FIQ();<br />&nbsp;&nbsp;Enable_IRQ();<br />&nbsp;&nbsp;while(i&nbsp;==&nbsp;0)&nbsp;{<br />&nbsp;&nbsp;}<br />}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

40

帖子

0

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