CC2640开发记录3 TI-RTOS TASK

原文地址 http://processors.wiki.ti.com/index.php/SYS/BIOS_Online_Training

上一篇文章谈到HWI与SWI的关系,笔者认为开发TI-RTOS HWI与SWI不是咱们关心的重点,绝大多数SWI是官方SDK提供的,HWI与硬件紧密相关,我们也很难开发。研究TASK和信号量要打起精神来!

//TASK

》使用TASK可以使用到更多的调度特性

- TASK可以处于BLOCK状态等待EVENT出现

- 启用其他层级的代码处理事件

》任务的数量和状态可以在运行中动态的改变

》任务的优先级可以动态改变

》调度机制由多任务内核提供

- 优先等级

TASK

逻辑完备的程序块包含如下组件

- 函数指针,定义程序块的开始运行入口

- 参数表

- 优先级

-独一无二的任务堆栈(作用是储存本地变量数据,嵌套函数调用)

中断运行在系统堆栈中

上图可以看出,一个TASK包含了五个块 fxn是C代码,ENV,优先级,堆栈,任务名。

TASK与SWI的不同点

图显然的展示了SWI和TASK的区别,SWI不存在BLOCK状态,一旦被调度必须执行完才肯罢休。而TASK是可以BLOCK的。

TASK的几种状态

TASK如果处于RUNNING状态,那么这个任务将会被调度器调度,调度器会给到他时间片去执行,如果TASK被信号量卡住了,那就是处于BLOCK状态,等待一个信号量POST使得TASK从BLOCK回到READY状态,在RUNNING状态的TASK可以被优先级更高的TASK打回READY状态!

小结:简单讲了一些关于TASK的几个状态,TASK与SWI的区别。

猜你喜欢

转载自blog.csdn.net/Clarence_happy/article/details/89485716