原文地址 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出现
- 启用其他层级的代码处理事件
》任务的数量和状态可以在运行中动态的改变
》任务的优先级可以动态改变
》调度机制由多任务内核提供
- 优先等级
扫描二维码关注公众号,回复:
6002270 查看本文章
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的区别。