【原创】操作系篇——单片机多任务,隐藏重大哲学和陷阱

  • 冰山一角
  • LV5工程师
  • |      2014-11-28 11:14:20
  • 浏览量 853
  • 回复:9


下面开始讲课了,O(∩_∩)O哈哈~  开玩笑。【原创】操作系篇——单片机多任务,隐藏重大哲学和陷阱


多任务单片机如何实现,仁者见仁智者见智,但是实现起来可谓是千差万别,一任务没有结束,另外一个任务又开始运行,或者是死循环,或者主程序死机等等现象。归根到底是没有彻底理解多任务的实现机制。


下面所讲的都是在没操作系统的前提下:

     一、目前流行的设计方法:主程序(主循环 )  + (定时)中断。

    咋一看,合情合理。深究之,诸多不利:首先是中断可以在主程序的任何地方发生,随意打断主程序。其次主程序与中断之间的耦合性较大,这种做法使得主程序与中断缠绕在一起,必须仔细处理以防不测。所以导致很多程序跑飞,死机等等所谓的奇怪现象。

 

那么换一种思路,如果把主程序全部放入(定时)中断中会怎么样?

这种思想是单片机里面的,很多程序处理的时候我们直接放到定时器中,那么这样做是优是劣呢?这么做至少可以立即看到几个好处: 

系统可以处于低功耗的休眠状态,将由中断唤醒进入主程序; 如果程序跑飞,则中断可以拉回;

没有了主从之分(其他中断另计),程序易于模块化。


  那么如何实现呢?具体的方法如何呢?

任务:为了把主程序全部放入(定时)中断中,必须把程序化分成一个个的模块,即任务。

时基:每个任务完成一个特定的功能,例如扫描键盘并检测按键。 设定一个合理的时基 (tick), 例如  5,ms10ms

执行:每次定时中断,把所有任务执行一遍,为减少复杂性,一般不做动态调度(最多使用固定数组以简化设计,做动态调度就接近 os 了),这实际上是一种无优先级时间片轮循的变种。


哲学启示:多个任务同时进行,前提是单核,这是个问题,需要用哲学的观点去处理。O(_)O哈哈~


精彩内容,敬请关注下回讲解。


【原创】操作系篇——单片机多任务,隐藏重大哲学和陷阱

  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:10
冰山一角 2014-12-03
0   回复
举报
发布
dwwzl 2014-12-03
我现在用的还是时间机原理,想多了解一下时间片轮询的方法,能否举个示例呢
0   回复
举报
发布
冰山一角 2014-11-29
0   回复
举报
发布
癞头和尚 2014-11-29
看到哲学了........,好高深
0   回复
举报
发布
冰山一角 2014-11-28
0   回复
举报
发布
xidianzxc 2014-11-28
顶一个~
0   回复
举报
发布
冰山一角 2014-11-28
0   回复
举报
发布
Chen Yang 2014-11-28
必须速度
0   回复
举报
发布
冰山一角 2014-11-28
   够速度啊
0   回复
举报
发布
Chen Yang 2014-11-28
哇  我正需要呢   八错  第一个来顶了
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子