[求助] 裸机怎么跑多任务呢?

飞鸿浩劫   2016-11-21 17:12 楼主
最近遇到点麻烦,裸机跑多任务不知道怎么搞了,翻了论坛的帖子,找到了这篇讲时间轮询的原帖地址问题是帖中的方法怎么解决当单个任务执行时间过长的情况呢?比如我要跟从机通信,而通信速率非常之慢,或者刷屏刷的也很慢,这个问题也可以说成是,怎么解决任务当中delay函数的实现……
看了ucos里面的解决方法,需要保护任务现场用汇编,如果这样不如直接上操作系统,不知道这个问题在裸机下是如何解决的?


回复评论 (12)

既然裸机就没有真正的多任务了,有一种“操作系统”是共享栈空间的操作系统,貌似在Zigbee系统中应用的很多,contiki和FreakZ操作系统可以参考参考,我也不知道具体原理是什么。不过话说为什么就不用操作系统呢?
亚里士缺德
点赞  2016-11-21 18:01
虾扯蛋,蛋扯虾,虾扯蛋扯虾
点赞  2016-11-21 18:10
引用: 汤权 发表于 2016-11-21 18:01 既然裸机就没有真正的多任务了,有一种“操作系统”是共享栈空间的操作系统,貌似在Zigbee系统中应用的很多 ...
新人没做过完整的项目,也没有人交代……当初写代码的时候没考虑清楚,现在写了十多天,驱动写完发现问题了 大任务里面主要是运算太多或者夹杂的延时很长,能不能用状态机把大任务分割成小段,对于里面的大延时重新给任务计时器赋值,这样是不是可以用状态机保存大任务的状态?或者说用状态机把大任务分割成小任务 本帖最后由 飞鸿浩劫 于 2016-11-21 18:17 编辑
点赞  2016-11-21 18:12
引用: littleshrimp 发表于 2016-11-21 18:10
http://blog.sina.com.cn/s/blog_65f813c20100qfxf.html

谢谢虾哥找了一天的资料,不如刚才吃饭那会儿想的清楚……看样子只有根据实际情况拆分了
不知道裸机上有没有比这个更好用的方法
点赞  2016-11-21 18:20
引用: 飞鸿浩劫 发表于 2016-11-21 18:12
新人没做过完整的项目,也没有人交代……当初写代码的时候没考虑清楚,现在写了十多天,驱动写完发现问题 ...

定时器定时中断实现状态机是可以的,可以实现延时时间的充分利用,不知道你的具体要求是什么也不知道具体怎么说。
亚里士缺德
点赞  2016-11-21 18:43
引用: 汤权 发表于 2016-11-21 18:43
定时器定时中断实现状态机是可以的,可以实现延时时间的充分利用,不知道你的具体要求是什么也不知道具体 ...

我就是觉得状态机,可以每次运行一个状态,可以拆分大任务,用的stm32,定时器看看用Systick吧,这个问题上午问我老大,老大说看看有多少定时器,需要多少任务需要大延时,一个任务来一个定时器用突然觉得没法交流了……
点赞  2016-11-21 18:47
老大厉害,可能任务少是可以的,不过貌似光定时器初始化什么的就够烦人的了,stm32运行一个实时系统不是很easy的么??
亚里士缺德
点赞  2016-11-21 18:53
引用: 汤权 发表于 2016-11-21 18:53
老大厉害,可能任务少是可以的,不过貌似光定时器初始化什么的就够烦人的了,stm32运行一个实时系统不是很e ...

就想知道不用操作系统能不能完美解决这些问题,难道以前没有操作系统的时候就没办法了?办法肯定是有的只不过我才找了一天还没找到
点赞  2016-11-21 19:04
引用: 飞鸿浩劫 发表于 2016-11-21 19:04
就想知道不用操作系统能不能完美解决这些问题,难道以前没有操作系统的时候就没办法了?办法肯定是有的只 ...

哦哦,这样啊,操作系统本身说白了不就是一个裸机程序嘛,既然这样肯定能直接实现功能啊。加油,祝你成功
亚里士缺德
点赞  2016-11-21 19:51
使用时间分片、轮转的方式实现,把大任务分割成几个时间片,也就是小任务,然后几个大任务轮转执行,把需要对时间要求较高的任务分片少一点,执行时间长和有延时的任务就分片多一点,应该是和你说的状态机类似
刻苦学习,共同进步
点赞  2016-11-21 20:45
引用: 迈尔风随 发表于 2016-11-21 20:45
使用时间分片、轮转的方式实现,把大任务分割成几个时间片,也就是小任务,然后几个大任务轮转执行,把需要 ...

嗯,谢谢
点赞  2016-11-21 21:17
https://github.com/ianhom/MOE
我自己写的一个小的调度,事件驱动或protothread方式都可以,可以试试看
点赞  2016-11-22 00:02
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复