μC/OSII的时钟中断技术研究
时间:06-30
来源:电子产品世界
点击:
时时间进行递减;
把所有要到期的任务链入到OSTCBRList链表中;
}
任务状态改为睡眠,调用OSSched ()进行任务调度;
}
在任务OSTimeTask()中,执行原来在时钟中断处理的用户函数OSTimeIickHook (),并实现将延时到期的任务链入到OSTCBRList链表中,这样在时钟中断程序中就只需要扫描任务到期的链表而不需要扫描整个链表,减少了关中断的时间。OSTCBRList为新建链表,它管理所有到期的任务。
同时,需要减少OSTimeTick ()的执行工作量,只对OSTCBRList链表扫描,这样也减少了关中断时间。OSTimeTick ()伪代码如下:
void OSTimeTick(void) {
OSTime++;
OS_TCB* ptcb="OSTCBList";// OSTCBRList指向所有到期任务的链表
while(ptchb!=null){
关中断;
唤醒任务;
开中断;
指针指向下一个任务;
}
}
3 小结
本文以开源的嵌入式操作系统μC/OSII为例,分析了操作系统的中断机制和中断应满足的条件。介绍了μC/OSII系统时钟节拍,探讨了时钟中断函数中存在的不足,并且给出了解决方案,从而有效提高了中断响应速度和μC/OSII的时钟精确度。
- LPC2292的伪中断与伪中断处理(03-25)
- Linux 2.4.x内核软中断机制(04-06)
- 嵌入式系统开发之中断控制的实现(04-18)
- uC/OS-II的任务切换机理及中断调度优化(05-11)
- 微内核RTOS的核外中断管理(07-27)
- TMS320C54x系列DSP的中断机制(08-08)