This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我在使用TI AM3358进行Linux定时器中断方面的测试,TI的SDK版本号为 linux-am335x-AM335XPSP_04.06.00.08,linux内核版本在linux3.2.0基础上打了实时补丁PREEMPT_RT(3.2.0_rt10)。
测试的过程中发现,定时器中断偶尔会不能及时触发,DmTimer的设定时间为100us,实际定时器中断有时260us才到来。
测试的方法:使用dmtimer注册定时器中断,设置定时器间隔时间为100us,查看定时器中断到来时间,在定时器中断处理函数中再次启动定时器,循环测试。
测试结果:正常情况下,定时器中断都可以正常到来,但测试次数大于100万次(2min左右)时,会出现1~2次中断延迟160us左右的大延迟点。
我用linux的ftrace工具对此现象进行了分析,在附件中,请专家们帮忙进一步分析定位,不胜感激!
@Jian:
从ftrace的log中可以看到,应该是定时器中断出现了不能定时到达的问题,31136行的__irq_svc出现的时间比预期出现的时间晚了151us(定时器设置的周期是100us,也就是说这次定时器到期时间相比上次到期时间中间间隔了251us,>> 100us)。__irq_svc是IRQ异常跳转的最早的入口,它来晚了和内核应该没有关系吧。
我现在怀疑是BSP或者硬件中定时器中断控制器什么的不稳定导致定时器事件不准了,如果先不考虑是硬件问题,那么会不会是BSP的问题?
@Jian,从问题描述上看测试环境的开发板的内核是基于的linux-am335x-AM335XPSP_04.06.00.08这个基线做的,请问该基线的TI的BSP部分是否有过DMTimer定时器不准的bugfix,我们是否需要升级相关的TI补丁?