level 11
huarkkk
楼主
http://wenku.baidu.com/view/0460fe3443323968011c929e.html
FreeRTOS
的使用说明
中断程序
FreeRTOS
中如果
ISR
中如果使用了
Quene
,则需要进行任务切换,需要在
ISR
设计时考虑
portEND_SWITCHING_ISR( ( cContextSwitchRequired ) );
如果没有任务切换,则无需特殊处理
任务调度
调度存在几种情况:
自动放弃时间(
SWI
)
,
yeild
以及
wait
导致的挂起都算
Tick
时间到(也进行调度)
VTaskSwitchContext
仅仅查找优先级最高的调度
相同的级别
占有相同的
PCU
时间
对于
IDLE
任务而言,如果用抢占式,并且执行到
IDLE
时,必须让出执行时间的话
a task that is sharing the idle priority
(与
IDLE
任务有相同优先级)
,则会让出。
假定该任务是
while
(
1
)
{}
,并且一直处于
Ready
状态,没有诸如挂起等操作,则一进入
IDLE
任务就让出
则
vApplicationIdleHook
()函数基本没有时间执行。也就失去了意义
CoRoutine
是一个函数,可以迅速执行完成
在
vApplicationIdleHook
中调用。
调度时,直接调用了
CreateCorountine
的任务函数
当执行完之后,
IDLE
任务会重新循环,检查是否有同级任务执行。
所以在
IDLE
层次上,有任务,但该任务执行完了还是需要释放一段时间以便让
hook
函数
执行操作。
否则
CoRoutine
函数基本上没有时间执行。
2015年05月26日 07点05分
1
FreeRTOS
的使用说明
中断程序
FreeRTOS
中如果
ISR
中如果使用了
Quene
,则需要进行任务切换,需要在
ISR
设计时考虑
portEND_SWITCHING_ISR( ( cContextSwitchRequired ) );
如果没有任务切换,则无需特殊处理
任务调度
调度存在几种情况:
自动放弃时间(
SWI
)
,
yeild
以及
wait
导致的挂起都算
Tick
时间到(也进行调度)
VTaskSwitchContext
仅仅查找优先级最高的调度
相同的级别
占有相同的
PCU
时间
对于
IDLE
任务而言,如果用抢占式,并且执行到
IDLE
时,必须让出执行时间的话
a task that is sharing the idle priority
(与
IDLE
任务有相同优先级)
,则会让出。
假定该任务是
while
(
1
)
{}
,并且一直处于
Ready
状态,没有诸如挂起等操作,则一进入
IDLE
任务就让出
则
vApplicationIdleHook
()函数基本没有时间执行。也就失去了意义
CoRoutine
是一个函数,可以迅速执行完成
在
vApplicationIdleHook
中调用。
调度时,直接调用了
CreateCorountine
的任务函数
当执行完之后,
IDLE
任务会重新循环,检查是否有同级任务执行。
所以在
IDLE
层次上,有任务,但该任务执行完了还是需要释放一段时间以便让
hook
函数
执行操作。
否则
CoRoutine
函数基本上没有时间执行。