44B0中断响应时间问题

[复制链接]
3947|10
 楼主| fslth 发表于 2007-10-30 00:21 | 显示全部楼层 |阅读模式
44b0x没有remap功能,中断的初始部分代码必须在flash中执行,我用定时器去测中断响应时间,但是结果很奇怪。<br />当flash区和SDRAM都允许cache时,时间为3us左右,因为有cache的原因,中断响应时间每次都有可能不同。<br />问题是当我关闭了cache后,响应时间长了很多,这个可以理解,但是为什么这个时间不是固定的一个数呢?而是每次的时间都还是不同呢?<br />是不是我cache没有关闭掉?如果没有关闭,那响应时间长了又怎么解释呢?<br />希望大家帮忙分析下,谢谢。<br />
dld2 发表于 2007-10-30 08:02 | 显示全部楼层

呵呵请问是如何用定时器测中断响应时间的

何时开始计时,何时停止计时。
 楼主| fslth 发表于 2007-10-30 16:20 | 显示全部楼层

测中断响应时间方法

测量方法:启动定时器,进入用户中断程序时立即读出定时器当前计数值,与reload值之差即为中断发生到中断函数被执行的时间.44b0的手册上说,当定时器溢出时,申请中断并reload计数值继续计数,那么中断发生后,定时器是从reload值开始递减的,reload与当前值之差就是中断响应的时间.<br /><br />这样做法有错吗?
xieqin 发表于 2007-10-30 18:13 | 显示全部楼层

关键是你说的这个时间,它不叫"中断响应时间"

  
dld2 发表于 2007-10-30 19:14 | 显示全部楼层

随便说说

看了看44b0的手册,IRQ中断延迟从4个MCLK到28个MCLK。主要的不确定因素是发生中断时正在执行的那条指令需要多少个周期。<br />楼主说的这个测量方法,经过的环节太多,不确定因素也会更多。<br />不知道你测量的结果是多少个周期,在什么范围变动。<br /><br />感觉ARM并不是能够精确按指令计算执行时间的东东。<br />
 楼主| fslth 发表于 2007-10-30 22:13 | 显示全部楼层

44B0中断响应时间问题

多谢回复。<br />TO&nbsp;xieqin&nbsp;:可能用词有错误。<br /><br />如果打开cache,周期会在21到48周期左右波动,但不是固定值,一个周期为0.03us。<br />如果关闭cache,周期的变动范围更大点,也不是固定值。<br />现在最不能理解的就是为什么cache没有打开,也是不固定值呢?<br /><br />难道cache关闭后,每条指令的执行时间也不固定吗?<br />有点难理解。<br /><br />
pandafeng 发表于 2007-11-1 05:49 | 显示全部楼层

cpu并非是独占内部总线

要读出pwm&nbsp;timer的数据要经过<br />System&nbsp;Bus&nbsp;Bridge&nbsp;&&nbsp;Arbitration,System&nbsp;Bus&nbsp;Arbitration<br />比如,当中断产生(假如cpu已经接受)而同时sdram请求刷新,由于它有最高优先级,系统总线被它占用,cpu不得不等待直到刷新完成和没有其它的总线请求(如LCD_DMA,ZDMA,BDMA等)cpu才能读timer的数据。<br />所以随着打开的资源越多,cpu响应的时间越长,不确定性能越大。<br />
 楼主| fslth 发表于 2007-11-1 14:24 | 显示全部楼层

多谢回答

噢,多谢。<br />如果这样,那要使cpu的响应时间相对固定(us级),是没有办法的事情了吗?<br /><br />
pandafeng 发表于 2007-11-1 16:41 | 显示全部楼层

你的目的是什么?

我也没做个这方面的测试。<br /><br />ps:我都很久没碰440了。
 楼主| fslth 发表于 2007-11-1 23:08 | 显示全部楼层

有些工业控制对时间的要求非常严格。

多谢回复
pandafeng 发表于 2007-11-2 12:12 | 显示全部楼层

re:

如果你要求从中断到cpu的接管时间,那就难办了。<br />如果你要求从中断到数据响应时间,可以用dma试试。你做的那个测试可以用bdma1完成,相信会好很多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

10

帖子

0

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