打印

8019中断 有时有延时响应

[复制链接]
1694|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ma1986|  楼主 | 2009-9-25 13:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
整个程序开始运行还是挺好的,但是有时候,pc发送数据,在板子上不能及时进入中断,大概有几秒的延时。
我在进入中断后,通过串口打印进入中断和退出中断的信息,但是就是发现:pc发了数据之后,通过dnw显示串口的数据过了很久才能过来。在中断中,我只是接受数据,并且保存到一个全局的变量中去。
请问这个到底是怎么回事呢???
为什么出现延时这么多才进入中断呢???

相关帖子

沙发
xinzha| | 2009-9-25 14:43 | 只看该作者
不要在中断中使用串口打印,这是非常危险的事,大忌。

使用特权

评论回复
板凳
wangkj| | 2009-9-25 15:15 | 只看该作者
这个和你的os有关,或者和裸奔方式有关。

使用特权

评论回复
地板
ma1986|  楼主 | 2009-9-26 09:57 | 只看该作者
2# xinzha
但是为什么他有时候会出现一下子延时很大,有时候很正常呀。而且我只是通过串口发送数据,按理不会出现什么太大的问题啊~~~

使用特权

评论回复
5
ma1986|  楼主 | 2009-9-26 10:06 | 只看该作者
3# wangkj
我没用OS~~~到底是什么回事啊??? 另外:8019 IMR=0x01 :只使能接收中断,但是进入接收中断后发现有时候ISR=0X40:(RDC:远程DMA操作完成后置“1”),这个是什么回事啊???

使用特权

评论回复
6
xinzha| | 2009-9-26 17:53 | 只看该作者
在中断里面调用串口打印,不论串口是轮询方式还是中断方式,都有可能产生问题,
1、如果是轮询方式,因为串口是一个慢速设备,等你发完所有串口数据,你可能已经丢了很多东西,中断占用这么长的时间是不可容忍的。
2、如果串口是中断传输方式,问题就更加严重,串口中断级别高于当前中断并且做好中断嵌套,还有可能正确返回,如果串口中断低于或者等于当前中断,你的串口打印将永远无法结束,当前中断也无法退出。后果就是系统挂掉。
不知道以上两点是否对你的问题有帮助,但是确实是日后要注意到的问题,串口打印要尽量放在中断外执行,可以采用类似于bottom half的方式。

使用特权

评论回复
7
ma1986|  楼主 | 2009-9-27 14:40 | 只看该作者
6# xinzha
恩。不过我在中断中只是发送了几十个字节的串口数据,然后pc接收这些打印信息,帮助调试用的,应该不会造成什么错误的,并不是使用中断方式发送。。。

我还遇到了一个奇怪的问题。我开放了外部中断1:eint1,也就是连到RTL8019 int0上面的接受中断,为什么我在程序中想关闭却关闭不了呢?
我直接设置rINTMSK寄存器不能屏蔽呢???然后直接调用
EXPORT DisableInt
DisableInt
mrs r0, cpsr
orr r0, r0, #NOINT
msr cpsr_cf, r0
MOV_PC_LR
这个才把中断关了。。这是什么回事呢???

使用特权

评论回复
8
xinzha| | 2009-9-27 20:01 | 只看该作者
你把总中断给关了...。
查询方式,几十个字节挺恐怖的了,你想想啊,只算串口传输速度,9600的波特率,一个字节1ms,115200的,也要十个字节1ms,再加上调用开销...
pc通过什么方式给你数据,也是串口?

使用特权

评论回复
9
ma1986|  楼主 | 2009-9-28 08:48 | 只看该作者
8# xinzha
pc不回数据,我们发串口数据只是方便调试,因为jtag调试感觉不太稳定。
不调用汇编关中断,直接关eint1的中断关不掉。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

101

帖子

1

粉丝