Embedded RTX isr_evt_集服务延迟

Embedded RTX isr_evt_集服务延迟,embedded,keil,cortex-m3,rtx,Embedded,Keil,Cortex M3,Rtx,我正在硅实验室的EFM微型gecko硬件上工作,使用4.22臂工具链运行RTX。 我有以下RTX配置: -NVIC分组7.1 -系统勾选和挂起系统服务中断优先级224。 -这两个中断都由我的代码流启用,并且从不禁用。 -PRIMASK和BASEPRI寄存器均为0 我的项目中的RTX代码已经有几年的历史了,我不确定它是哪个版本 我观察到以下问题:当使用isr_evt_set从RTC中断触发任务时,任务执行延迟。我发现当RTC中断结束时,不会调用“Pend System service”中断 当从R

我正在硅实验室的EFM微型gecko硬件上工作,使用4.22臂工具链运行RTX。 我有以下RTX配置: -NVIC分组7.1 -系统勾选和挂起系统服务中断优先级224。 -这两个中断都由我的代码流启用,并且从不禁用。 -PRIMASK和BASEPRI寄存器均为0

我的项目中的RTX代码已经有几年的历史了,我不确定它是哪个版本

我观察到以下问题:当使用isr_evt_set从RTC中断触发任务时,任务执行延迟。我发现当RTC中断结束时,不会调用“Pend System service”中断

当从RTC中断调用时,isr_evt_集合将“未决系统服务”置于挂起状态。RTC中断结束后,“挂起系统服务”中断不会激活。相反,处理器恢复线程模式并执行低优先级(电源管理)任务

我在RTC中断中将SCB寄存器SLEEPONEXIT位设置为0。4-10个RTC周期后,最终执行“Pend system service”中断

我希望“Pend system service”中断在RTC中断后运行。 你能解释一下为什么在RTC中断后,大脑皮层会回到线程模式吗

  • Cortex M3手册指出“Pend System Service”是一个例外,处理器必须返回到线程模式才能为其提供服务

  • 我发现在RTC中断发生之前,负责使系统进入睡眠状态的任务使用tsk_lock()。当从RTC中断调用isr_evt_set时,其激活“Pend System Service”的请求将被缓冲,并且只有在处理器恢复线程模式并使用tsk_unlock()后,才会提供服务,tsk_unlock()会立即为“Pend System Service”设置NVIC挂起标志。在调用tsk_unlock()后不久,使用调试器调用PendSV_Handler()