搞了一年的单片机编程,具体的功能实现不难,仔细阅读手册之类的就可以了,但是如何比较科学合理的划分任务、安排任务顺序等等则比较麻烦。往往单片机上也用不着跑什么操作系统,这时候的多任务机制该如何实现呢???我下载了不少论文,讲的精彩的比较少,只能大体上有个概念,分别有如下几个机制:
1、定时中断策略:分为基于优先级和基于时间片轮换策略。对于后者我感觉只适用那些任务小,计算不复杂的系统,常用的是前者。但前者的优先级机制到底怎么实现呢?
2、基于任务状态的策略。思想是在一个完整的任务当中引入状态机的概念,将一个完整的任务划分成多个小任务,并为每一个子任务设定一个执行条件,每一次执行其中的一个子任务。
3、基于外部中断的策略。如果单片机控制的外部设备较多,实时性较高,通常采用外部中断方式切换任务。
还有说采用消息驱动形式的,设置任务发生标志位,主程序中判断这些标志位,然后决定是否转入相应的任务中去。
大家是如何架构嵌入式程序的呢???如何有效率的去验证程序架构是否出现逻辑上的冲突??有实例解说吗???谢谢啦 |