打印

小菜之单片机多任务操作系统--再现江湖

[复制链接]
5045|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
singleywy|  楼主 | 2011-3-4 22:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
很早以前,我曾经许诺过:我要写一个C语言版的RTOS给大家,如今梦想已进入调试阶段,参考了UCOS,SMALLRTOS,RTXTINY等,结合各自的优点编写而成,其中包含了信号量、消息队列、信号、邮箱、动态任务删除、动态任务创建、任务休眠等系统服务功能,包含了中断管理部分,过些日子,调试好发给大家,也许大家不记得我先前发过什么了,我现在重述一下:
开始的时候,我编写了汇编语言版本的RTOS,Os_mini_short_v1.0从严格意义上来说,只是一个调度器,不能算是操作系统,虽然包含了任务等待,超时,简单通信等部分,后来有人提议,要求我写一篇C语言版本的,我于是就尝试写,虽然完成了,但是仍然属于调度器范畴,没有中断管理部分,但包含了超时等待、动态消息队列、发送消息等系统服务,自我感觉很一般,于是重头再来,认真审读计算机系统相关的书籍,以及网络上各种相关RTOS,才写出今天这一个完整版的C语言版本的,我将之命名为Os_MINI_C,可以给大家玩玩,运行在51上没有问题,
我写的代码,经过较多的优化,如局部变量的重复应用,数组操作改为指针操作,循环操作反汇编进行优化等,其中最大的优点是:
任务激活时,只支持8个激活任务,但可以在51上支持动态删除与创建任务,只要空间满足,理论上支持N个任务

相关帖子

沙发
singleywy|  楼主 | 2011-3-4 22:38 | 只看该作者
呵呵,沙发,我抢了

使用特权

评论回复
板凳
Hello_LeeHom| | 2011-3-4 22:40 | 只看该作者
出本书吧、、

使用特权

评论回复
地板
Hello_LeeHom| | 2011-3-4 22:44 | 只看该作者
顺便问一下楼主、我刚学了SMALLRTOS、这OS的基本工作流程懂了、但是不知道怎么在建立任务、、那什么重入函数搞得我很纠结、还有Keil中调用函数时怎么传参数和入栈的内容这些不清楚、等等很多问题、在网上找了很多零零碎资料、但是都不太明白、不是很清楚、、应该怎么学呢?楼主有这方面的资料吗?能共享一下吗、非常感谢、、

使用特权

评论回复
5
singleywy|  楼主 | 2011-3-4 23:27 | 只看该作者
本帖最后由 singleywy 于 2011-3-4 23:55 编辑

回复LS的话,
在SmallRTOS中
/*     "以下为程序配置"           */
/********************************/

//任务定义
#ifdef IN_OS_CPU_C
extern void TaskA(void);
extern void TaskB(void);
extern void TaskC(void);
void  (* const TaskFuction[OS_MAX_TASKS])(void)={TaskA,TaskB,TaskC};
//函数数组TaskFuction[]保存了各个任务初始PC指针,其按任务ID(既优先级次序)顺序保存

修改CONFIG.H配置文件,TASKA,TASKB,TASKC为你的任务的地址
如果你想要建立4个任务分别为
Taskone,Tasktwo,Taskthree,Taskfour
修改#define OS_TASK_MAXS 4
extern void Taskone(void);
extern void Tasktwo(void);
extern void Taskthree(void);
extern void Taskfour(void);
void  (* const TaskFuction[OS_MAX_TASKS])(void)={Taskone,Tasktwo,Taskthree,Taskfour};
即可

使用特权

评论回复
6
姬小仪(^_^)| | 2011-3-4 23:29 | 只看该作者
哇、师兄好厉害哟、崇拜ING、

使用特权

评论回复
7
singleywy|  楼主 | 2011-3-4 23:33 | 只看该作者
其实,网上资料都是来自KEIL本身,如果你遇到KEIL不懂得地方,最好的地方在KEIL软件本身帮助文档中,里面说明的很详细,也很权威,绝对比网上到处搜索准确的多,对于函数重入的问题,相对OS来说确实是一个很头疼的问题,主要来源于函数再次进入时,获得结果会不同,如对全局变量的读写,局部变量的相互覆盖,对独立资源的访问等,网上有很详细的参考资料,如搜索“函数重入问题”

使用特权

评论回复
8
singleywy|  楼主 | 2011-3-4 23:39 | 只看该作者
6# 姬小仪(^_^)
呵呵,人外有人,山外有山,我只是小菜罢了,不值一提

使用特权

评论回复
9
hsw_21| | 2011-3-4 23:42 | 只看该作者
MSP430上也可以跑吧,期待。。。

使用特权

评论回复
10
原野之狼| | 2011-3-4 23:57 | 只看该作者
LZ把资料给全点 到时候我给看看能不能胜过我写的GGOS:lol

使用特权

评论回复
11
singleywy|  楼主 | 2011-3-5 08:59 | 只看该作者
9# hsw_21
应该可以的,涉及汇编部分的很少

使用特权

评论回复
12
singleywy|  楼主 | 2011-3-5 09:02 | 只看该作者
10# 原野之狼
恩,等我调试好了之后,就发出来,不过这可能只是我完整C语言版的处女作,肯定有不少漏洞,跟您的作品比,可能会让您见笑了

使用特权

评论回复
13
jiabin1024| | 2011-3-5 09:41 | 只看该作者
期待LZ的作品

使用特权

评论回复
14
老鱼探戈| | 2011-3-5 10:00 | 只看该作者
不好意思,在下没看明白,因为不懂。
不过还是希望LZ能成功!

使用特权

评论回复
15
触觉的爱| | 2011-3-5 10:33 | 只看该作者
多任务操作,期待~:loveliness:

使用特权

评论回复
16
茫海千寻| | 2011-3-5 10:44 | 只看该作者
呵呵……单机也疯狂!厉害!

使用特权

评论回复
17
batsong| | 2011-3-5 12:12 | 只看该作者
楼主其实还是学生,厉害啊,那个汇编版本我已经膜拜了。

使用特权

评论回复
18
singleywy|  楼主 | 2011-3-5 13:19 | 只看该作者
13# jiabin1024
恩,努力完善中,查漏补缺......

使用特权

评论回复
19
singleywy|  楼主 | 2011-3-5 13:24 | 只看该作者
14# 老鱼探戈
首先谢谢你的支持,这个东西,其实简单的来说就是运行在单片机上的实时操作系统,(至于有关裸奔好还是OS好,在这里我就不讨论了,萝卜青菜各有所爱,存在即是合理的),类似电脑里的操作系统,不过单片机上注重的是实时性,要求在一定时间内一定要响应,而电脑中的操作系统,讲究的是交互性等

使用特权

评论回复
20
singleywy|  楼主 | 2011-3-5 13:26 | 只看该作者
本帖最后由 singleywy 于 2011-3-5 15:35 编辑

17# batsong
呵呵,您过奖了,还有很多东西要学,我会的只是略知皮毛罢了,膜拜~~岂敢!岂敢也!
原谅小弟不才,写错文字!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

295

帖子

3

粉丝