1、uC/OS-II的中断
中断:任务在运行过程中,应内部或外部异步事件的请求中止当前任务,而去处理异步事 件所要求的任务的过程叫做中断。
中断服务程序:应中断请求而运行的程序叫中断服务子程序(ISR)。
中断向量:中断服务子程序的入口地址叫中断向量。
CPU响应中断的条件:
至少有一个中断源向CPU发出中断信号
系统允许中断,且对此中断信号未予屏蔽
2、临界段的概念:
在应用程序中经常有一些代码段必须不受任何干扰地连续运行,这样的代码叫做临阶段。
3、开关中断的宏
当处理临界段代码时,需要关中断,处理完毕后,再开中断;
关中断时间是实时内核重要的指标之一;
在实际应用中,关中断的时间很大程度中取决于微处理器的结构和编译器生成的代码质量;
4、uC/OS-II的时钟
任何操作系统都要提供一个周期性的信号源,以供系统处理诸如延时、超时等与时间有关的事件,这个周期性的信号源叫做时钟。
5、任务的延时
由于嵌入式系统的任务是一个无限循环 , 且uC/OS-II是一个抢占式内核。
使高优先级的任务不至于独占CPU,uC/OS-II规定:除了空闲任务之外的所有任务必须在任务中延迟并进行一次任务调度,以让出CPU的使用权。
6、取消任务的延时
延时的任务可通过在其它任务中调用函数OSTimeDlyResume()取消延时而进入就绪状态。如果任务比正在运行的任务优先级高,则立即引发一次任务调度。
7、小结
(1) 在uC/OS-II中,中断服务子程序运行结束之后,系统将会根据情况进行一次中断级的任务调度去运行优先级更高的就绪任务,而不一定要接续运行被中断的任务。
(2) uC/OS-II的中断允许嵌套,用全局变量OSIntNesting来记录中断的嵌套数。
(3) uC/OS-II的中断服务程序的工作通常是由中断激活的一个任务来完成的。这样的优点是可以使应用程序的设计更为灵活。
(4) 在任务中可以用设置临界区的方法来屏蔽中断。设置临界区的宏有3种实现方法。
(5) uC/OS-II的时钟通常是一个由硬件计数器定时产生周期性中断信号来实现的,每一次中断叫做一个节拍,其中断服务程序叫做节拍服务程序。
(6) uC/OS-II在每一个节拍服务里要遍历系统中的全部任务的任务控制块,把其中记录任务延时时间的成员OSTCBDly减1,并使延时时间到的任务进入就绪态。
(7) uC/OS-II有10个函数提供了钩子函数,应用程序设计人员可以在钩子函数中编写一些自己的代码。
(8) 在uC/OS-I进行时间管理的函数中,最重要的是延时函数OSTimeDly()和I OSTimeHMSM()。他们的作用不仅仅是使任务的运行停止并等待一段时间,更重要的是,他们都要调用任务调度器进行一次任务调度,这样就使低优先级别的任务有了运行的机会。
中断:任务在运行过程中,应内部或外部异步事件的请求中止当前任务,而去处理异步事 件所要求的任务的过程叫做中断。
中断服务程序:应中断请求而运行的程序叫中断服务子程序(ISR)。
中断向量:中断服务子程序的入口地址叫中断向量。
CPU响应中断的条件:
至少有一个中断源向CPU发出中断信号
系统允许中断,且对此中断信号未予屏蔽
2、临界段的概念:
在应用程序中经常有一些代码段必须不受任何干扰地连续运行,这样的代码叫做临阶段。
3、开关中断的宏
当处理临界段代码时,需要关中断,处理完毕后,再开中断;
关中断时间是实时内核重要的指标之一;
在实际应用中,关中断的时间很大程度中取决于微处理器的结构和编译器生成的代码质量;
4、uC/OS-II的时钟
任何操作系统都要提供一个周期性的信号源,以供系统处理诸如延时、超时等与时间有关的事件,这个周期性的信号源叫做时钟。
5、任务的延时
由于嵌入式系统的任务是一个无限循环 , 且uC/OS-II是一个抢占式内核。
使高优先级的任务不至于独占CPU,uC/OS-II规定:除了空闲任务之外的所有任务必须在任务中延迟并进行一次任务调度,以让出CPU的使用权。
6、取消任务的延时
延时的任务可通过在其它任务中调用函数OSTimeDlyResume()取消延时而进入就绪状态。如果任务比正在运行的任务优先级高,则立即引发一次任务调度。
7、小结
(1) 在uC/OS-II中,中断服务子程序运行结束之后,系统将会根据情况进行一次中断级的任务调度去运行优先级更高的就绪任务,而不一定要接续运行被中断的任务。
(2) uC/OS-II的中断允许嵌套,用全局变量OSIntNesting来记录中断的嵌套数。
(3) uC/OS-II的中断服务程序的工作通常是由中断激活的一个任务来完成的。这样的优点是可以使应用程序的设计更为灵活。
(4) 在任务中可以用设置临界区的方法来屏蔽中断。设置临界区的宏有3种实现方法。
(5) uC/OS-II的时钟通常是一个由硬件计数器定时产生周期性中断信号来实现的,每一次中断叫做一个节拍,其中断服务程序叫做节拍服务程序。
(6) uC/OS-II在每一个节拍服务里要遍历系统中的全部任务的任务控制块,把其中记录任务延时时间的成员OSTCBDly减1,并使延时时间到的任务进入就绪态。
(7) uC/OS-II有10个函数提供了钩子函数,应用程序设计人员可以在钩子函数中编写一些自己的代码。
(8) 在uC/OS-I进行时间管理的函数中,最重要的是延时函数OSTimeDly()和I OSTimeHMSM()。他们的作用不仅仅是使任务的运行停止并等待一段时间,更重要的是,他们都要调用任务调度器进行一次任务调度,这样就使低优先级别的任务有了运行的机会。