uC/OSii之任务划分
满足以下几个指标将会使软件设计比较简洁高效。
- 满足实时性指标
- 任务数目合理
- 简化软件系统
- 降低资源需求
- 设备依赖性划分:主要是对于一些输入输出设备进行划分,输入输出设备分为主动型和被动性。主动型有一个尽可能短的中断服务程序和一个与之关联的任务组成;被动性任务由于不能主动触发,必须有其他任务通过通信机制向该设备发出请求,激活该设备的相关任务。此类任务有键盘任务、显示任务、数据采集任务、控制输出任务和通信任务等。
- 发现关键功能,将其最关键部分剥离出来,用一个独立任务(或ISR)完成,剩余的部分用另外一个任务去实现,两者之间采用通信机制进行沟通。(关键任务是指:此任务对系统影响较大,如果少执行一次都会对系统造成重大影响)
- 发现紧迫任务,将其最紧迫部分剥离出来,用一个独立的高优先级的任务(或ISR)完成,剩余的部分用另外一个任务去实现,两者之间采用通信机制进行沟通。(紧迫性任务是指:此任务必须在规定时间内得到运权,并在规定时间之内执行完毕)
- 对于又关健又紧迫的功能,按紧迫功能处理。
- 将耗时较多的数据处理功能划分出来,封装为低优先级任务。(例如各种数据处理单元)
- 将关系密切的若干功能组合为一个任务,达到功能聚合的效果,省去任务之间负责的通行数据。
- 将相同事件触发的若干功能组合成为一个任务,从而免除事件分方法机制。
- 将若干周期相同的功能组合成为一个任务,避免一个时间事件触发几个任务,免除时间事件分发机制。
- 将若干按固定顺序执行的功能组合为一个任务,从而免除同步接力通信的麻烦。