搜索
bottom↓
楼主: rainyss

给51 DIY超轻量级多任务操作系统

  [复制链接]

出0入0汤圆

发表于 2013-2-8 12:59:38 | 显示全部楼层
清雨影 发表于 2013-2-1 13:53
好帖啊……可是为什么能够10行就了事呢……我看人家最简单的操作系统也有100行啊……留着慢慢研究了 ...

有所舍便有所得啊。牺牲部分相对不那么重要的,换取相对更加重要的。

出0入0汤圆

发表于 2013-2-8 13:45:37 | 显示全部楼层
barryliu 发表于 2013-2-8 12:59
有所舍便有所得啊。牺牲部分相对不那么重要的,换取相对更加重要的。

那请教一下,在Keil里面关于Project Option有Operating设置,其中有None Tiny Full,这个是别人写好的现成的系统吗?

出0入0汤圆

发表于 2013-2-8 13:55:05 | 显示全部楼层
清雨影 发表于 2013-2-8 13:45
那请教一下,在Keil里面关于Project Option有Operating设置,其中有None Tiny Full,这个是别人写好的现 ...

貌似是的。传闻RTOS51是收费的,TINY免费。

出0入0汤圆

发表于 2013-2-21 22:55:31 | 显示全部楼层
rainyss 发表于 2008-8-18 11:49
我说的速度是在保证可靠性的前提下.

很感谢楼主让我知道了什么事操作系统,但是在下有一点疑问:
1,51的RAM不大,如果有以下程序片段:(可以理解为你task_n函数while(1)里扣掉调用任务切换器的那一段剩下的代码)
prog1,占用95byteRAM
prog2,占用72byteRam
如果用状态机的话,扣掉main函数和其他某些函数(比如延时函数)占用的大约十几byte的内存,完全可以跑起这两个子程序
就是这样:
while(1){
    switch(flag){
    case 0:
        prog1();
        break;
    case 1:
        prog2();
        break;
    }
}
如果使用操作系统,需要同时申请(95+72+十几)byte内存,是不是会不够用呢?
本人新手,希望您能解惑.

出0入0汤圆

发表于 2013-2-21 23:05:28 | 显示全部楼层
rainyss 发表于 2009-4-22 01:00
AVR上已经有很多现成的轻量系统,没必要自已做.
你把我专为51写的系统拿到AVR上用是不行的,不是改一点代码就 ...

个人比较倾向VC++的环境.请问VC++能够搭建类似的平台做轻量级操作系统吗?

出0入0汤圆

发表于 2013-2-22 09:59:07 | 显示全部楼层
清雨影 发表于 2013-2-21 22:55
很感谢楼主让我知道了什么事操作系统,但是在下有一点疑问:
1,51的RAM不大,如果有以下程序片段:(可以理解 ...

调度才是关键,时分复用内存空间。

出0入0汤圆

发表于 2013-2-22 10:27:49 来自手机 | 显示全部楼层
收藏了,好好研究下

出0入0汤圆

发表于 2013-2-22 12:16:14 | 显示全部楼层
谢谢楼主分享~~

出0入0汤圆

发表于 2013-2-22 12:24:07 | 显示全部楼层
很好,有参考价值

出0入0汤圆

发表于 2013-2-22 13:42:13 | 显示全部楼层
谢谢楼主分享~~

出0入0汤圆

发表于 2013-2-22 17:27:50 | 显示全部楼层
很好 学习下

出0入0汤圆

发表于 2013-2-23 08:44:59 | 显示全部楼层

顶一下,好思路!

出0入0汤圆

发表于 2013-3-6 14:45:12 | 显示全部楼层
void task_load(unsigned int fn, unsigned char tid){
        task_sp[tid] = task_stack[tid] + 1;
        task_stack[tid][0] = (unsigned int)fn & 0xff;
        task_stack[tid][1] = (unsigned int)fn >> 8;
楼主你好:请问为什么在 task_sp[tid] = task_stack[tid] + 1;
这一句要加1呢??期望你的解答哦。

出0入0汤圆

发表于 2013-3-7 00:46:27 来自手机 | 显示全部楼层
有分量!改天详细拜读

出0入0汤圆

发表于 2013-3-7 14:52:20 | 显示全部楼层
本帖最后由 barryliu 于 2013-3-7 15:00 编辑
nnnwu 发表于 2013-3-6 14:45
void task_load(unsigned int fn, unsigned char tid){
        task_sp[tid] = task_stack[tid] + 1;
     ...


先从51的堆栈机制说起,很简单的一条:堆栈出栈的时候是先从SP指向的地址取数,然后才减1,想象一下,当栈为空时,栈指针SP的值是栈是不是应该为堆栈的基地址-1?
进一步想,如果当前栈里已经存了2字节返回地址了,那么栈指针是不是应该为栈的基地址+2-1?

task_load做的实际上就是将任务函数的首地址事先存在私栈里(占2字节),并将SP指向私栈+2的地址处,所以SP的值应该是私栈基地址+2-1

把代码稍稍改改你就能看明白了:

void task_load(unsigned int fn, unsigned char tid){
        task_sp[tid] = task_stack[tid] - 1;    //将堆栈指针指向堆栈的基地址
        task_stack[tid][0] = (unsigned int)fn & 0xff;   //向堆栈中压入任务函数地址低8位
        task_stack[tid][1] = (unsigned int)fn >> 8;   //向堆栈中压入任务函数地址高8位
        task_sp[tid] +=2;  //修正堆栈指针,因为压入了2字节,所以堆栈指针+2  。吗?
}

看看,
task_sp[tid] = task_stack[tid] - 1;
task_sp[tid] +=2;
两句合起来不就是
task_sp[tid] = task_stack[tid] + 1
吗?

出0入0汤圆

发表于 2013-3-8 15:00:02 来自手机 | 显示全部楼层
新手没看明白,以后重新温习

出0入0汤圆

发表于 2013-3-19 16:02:32 | 显示全部楼层
有空试一下。

出0入0汤圆

发表于 2013-3-21 21:16:27 | 显示全部楼层
在51上弄这个,牛啊,不过不实用。51的资源太少,功能不高,高精尖的控制与处理几乎不用。不过练手还是不错的。

出0入0汤圆

发表于 2013-3-25 17:16:40 | 显示全部楼层
mark,留名,慢慢研究^_^

出0入0汤圆

发表于 2013-3-25 18:46:40 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2013-3-25 20:47:41 | 显示全部楼层
MARK,已经看过一次了,以后闲着没事就看看

出0入0汤圆

发表于 2013-3-25 23:04:45 | 显示全部楼层
给51 DIY超轻量级多任务操作系统  mark

出0入0汤圆

发表于 2013-3-25 23:38:00 | 显示全部楼层
楼主真强啊···

出0入0汤圆

发表于 2013-3-31 03:04:49 | 显示全部楼层
标记慢慢看太强悍了!

出0入0汤圆

发表于 2013-3-31 19:32:32 | 显示全部楼层
好东西。。。。

出0入0汤圆

发表于 2013-3-31 20:53:34 | 显示全部楼层
这个应该顶

出0入0汤圆

发表于 2013-4-1 15:23:17 | 显示全部楼层
不是并行的,,,

出0入0汤圆

发表于 2013-4-5 18:56:02 来自手机 | 显示全部楼层
高手高手,高高手!

出0入0汤圆

发表于 2013-4-5 19:32:41 来自手机 | 显示全部楼层
任务调度。

出0入0汤圆

发表于 2013-4-5 19:57:43 | 显示全部楼层
标记下~~~~~··

出0入0汤圆

发表于 2013-4-5 22:25:47 | 显示全部楼层
LZ这方面知道的太多了。。。。。

出0入0汤圆

发表于 2013-4-9 10:37:31 | 显示全部楼层
好贴,研究研究!!

出0入0汤圆

发表于 2013-4-11 16:02:27 | 显示全部楼层
一路狂找,找到了这篇文章的出生地。泪奔啊

出0入0汤圆

发表于 2013-4-11 16:25:42 | 显示全部楼层
好东西,值得收藏!

出0入0汤圆

发表于 2013-4-11 23:07:20 | 显示全部楼层
不错,学习下!

出0入0汤圆

发表于 2013-4-12 03:08:39 来自手机 | 显示全部楼层
mark                  

出0入0汤圆

发表于 2013-4-13 16:53:17 | 显示全部楼层
建议至酷,顶

出0入0汤圆

发表于 2013-4-14 11:51:20 | 显示全部楼层
多谢楼主分享

出0入0汤圆

发表于 2013-4-21 00:23:57 | 显示全部楼层
初步看了下,很强大。谢谢分享!

出0入0汤圆

发表于 2013-4-21 05:10:47 | 显示全部楼层
Mark!!,!!!!!!?

出0入0汤圆

发表于 2013-4-21 10:08:18 | 显示全部楼层
学生学习了

出0入0汤圆

发表于 2013-4-21 12:45:20 | 显示全部楼层
好东西,值得收藏

出0入0汤圆

发表于 2013-4-21 15:41:31 | 显示全部楼层
回来慢慢研究!!!

出0入0汤圆

发表于 2013-5-3 10:51:33 | 显示全部楼层
rainyss 发表于 2008-8-14 01:50
四.用KEIL写多任务系统的技巧与注意事项

C51编译器很多,KEIL是其中比较流行的一种.我列出的所有例子都必须 ...

谢谢楼主的分享,本人很笨,刚学51不久,看的半懂,我把3个任务扩展到5个任务,2路PWM输出(延时模拟),2路检测信号,1路用于蜂鸣器,用在STC12C5A60S2。想了很久,有许多还是出现覆盖问题,如void delay(uint x),假如带入口参数怎么办?
而且是多个,如何解决呢?跪求楼主分析

出0入0汤圆

发表于 2013-5-3 11:11:55 | 显示全部楼层
先谢谢,再学习!!!

出0入0汤圆

发表于 2013-5-4 10:27:23 | 显示全部楼层
简单看了下,看的迷迷糊糊的,不过绝对是个好帖子啊,有时间在好好看两遍

出0入0汤圆

发表于 2013-5-4 17:09:13 | 显示全部楼层
不错   我得下下来研究研究

出0入0汤圆

发表于 2013-5-9 18:46:45 | 显示全部楼层
mark,回头过来再看一遍,认真学习。

出0入0汤圆

发表于 2013-5-10 16:57:34 | 显示全部楼层
标记一下,有空看看!

出0入0汤圆

发表于 2013-5-21 11:57:54 | 显示全部楼层
谢谢你的回复,明白了。。楼主以后还要继续完善这个系统。

出0入0汤圆

发表于 2013-5-21 11:58:30 | 显示全部楼层
barryliu 发表于 2013-3-7 14:52
先从51的堆栈机制说起,很简单的一条:堆栈出栈的时候是先从SP指向的地址取数,然后才减1,想象一下,当 ...

谢谢你的回复,明白了。。楼主以后还要继续完善这个系统

出0入0汤圆

发表于 2013-5-23 23:19:07 | 显示全部楼层
这个必须顶!!!

出0入0汤圆

发表于 2013-5-25 11:36:11 | 显示全部楼层
耳目一新,还是第一次听说,51可以上操作系统,呵呵!

出0入0汤圆

发表于 2013-5-30 13:10:02 | 显示全部楼层
标记 ~~~~~~

出0入0汤圆

发表于 2013-5-30 23:24:44 | 显示全部楼层
rainyss 发表于 2008-8-14 01:50
四.用KEIL写多任务系统的技巧与注意事项

C51编译器很多,KEIL是其中比较流行的一种.我列出的所有例子都必须 ...

太牛逼了,学习了

出0入0汤圆

发表于 2013-5-30 23:47:06 来自手机 | 显示全部楼层
还不错,明天仔细研究下

出0入0汤圆

发表于 2013-6-1 14:23:00 | 显示全部楼层
这个看起来就需要mark一下的说

出0入0汤圆

发表于 2013-6-1 20:46:33 | 显示全部楼层
好贴,mark              

出0入0汤圆

发表于 2013-7-12 15:17:14 | 显示全部楼层
高手 学习

出0入0汤圆

发表于 2013-7-15 23:09:20 | 显示全部楼层
偶的好学习 目标呀   顶

出0入0汤圆

发表于 2013-7-19 21:05:59 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2013-7-26 11:25:43 | 显示全部楼层
好,对我们傻呼呼玩51的人有启蒙意义,从此进入OS世界,留下脚印

出0入0汤圆

发表于 2013-7-30 17:02:44 | 显示全部楼层
强。。。。。。。。

出0入0汤圆

发表于 2013-8-2 10:45:43 | 显示全部楼层
不错的思路,很有参考学习价值

出0入0汤圆

发表于 2013-8-2 12:31:24 | 显示全部楼层
这个贴是长盛不衰啊,强帖就是牛B

出0入0汤圆

发表于 2013-8-3 13:30:44 | 显示全部楼层
好贴好思路..一定要做出自己的操作系统..未来领域发展潜力大..

出0入0汤圆

发表于 2013-8-3 14:16:46 | 显示全部楼层
楼主NB啊

出0入0汤圆

发表于 2013-8-10 12:50:56 | 显示全部楼层
收下~~~~~~

出0入0汤圆

发表于 2013-8-12 00:22:01 | 显示全部楼层
mark            

出0入0汤圆

发表于 2013-8-12 00:22:17 | 显示全部楼层
51其实很强大        

出0入0汤圆

发表于 2013-8-13 19:31:36 | 显示全部楼层
zlpvch 发表于 2013-8-12 00:22
51其实很强大

51自身并不强大,搞笑的256字节内部存储早已不能满足技术狂人们的控制欲望。
但51的资源是强大的,它伴随了整整两代人的成长,从上世纪80年代到今天,30年的“研究”已把51的能力发挥到了极限,51理论上能做到的,几乎都已经被人做到了。
继续用吧,只要够用就行,能杀死51的,估计只有价钱。

出0入0汤圆

发表于 2013-8-14 11:41:58 | 显示全部楼层

记号,这个负担太重,要好好准备一下

出0入0汤圆

发表于 2013-8-14 12:06:21 来自手机 | 显示全部楼层
mark……
顶一个…

出0入0汤圆

发表于 2013-9-3 22:29:06 | 显示全部楼层
估摸着要慢慢吸收呀

出0入0汤圆

发表于 2013-9-3 23:47:29 | 显示全部楼层
先顶一个,再看!!!!

出0入0汤圆

发表于 2013-9-4 19:09:45 | 显示全部楼层
厉害!学习学习!顶下!

出0入0汤圆

发表于 2013-9-22 22:24:55 | 显示全部楼层
强帖留名

出0入0汤圆

发表于 2013-9-23 16:09:09 | 显示全部楼层
顶        

出0入0汤圆

发表于 2013-9-23 16:28:24 | 显示全部楼层
支持一下。

出0入0汤圆

发表于 2013-9-30 16:45:14 | 显示全部楼层
马克 参考 2013.09.30 51多任务

出0入0汤圆

发表于 2013-9-30 16:59:04 | 显示全部楼层
好东西,学习了

出0入0汤圆

发表于 2013-10-7 10:00:31 | 显示全部楼层
思路很开阔,虚心受教。

出0入0汤圆

发表于 2013-10-8 22:39:42 | 显示全部楼层
怎样对红外遥控解码如NEC协议。

出0入0汤圆

发表于 2013-10-8 23:33:16 | 显示全部楼层
以前在哪里看过的,谢谢了

出0入79汤圆

发表于 2013-10-10 21:28:45 | 显示全部楼层
很不错 。。打算用在M3上试试  不知道 有没有 更新  ?

出0入0汤圆

发表于 2013-10-10 22:00:31 | 显示全部楼层
好帖一定要顶

出0入0汤圆

发表于 2013-10-10 22:13:42 | 显示全部楼层
mark,好东西

出0入0汤圆

发表于 2013-10-11 12:58:30 | 显示全部楼层
有帮助,谢谢

出0入0汤圆

发表于 2013-10-11 21:56:31 | 显示全部楼层

出0入0汤圆

发表于 2013-10-19 15:30:59 | 显示全部楼层
不错,学习了。

出0入0汤圆

发表于 2013-10-19 18:05:49 | 显示全部楼层
虽然看的我一头雾水,那是我水平所限, 顶!

出0入0汤圆

发表于 2013-10-23 10:16:16 来自手机 | 显示全部楼层
楼主辛苦了!

出0入0汤圆

发表于 2013-10-25 12:21:40 | 显示全部楼层
先顶,顶完再细细看。

出0入0汤圆

发表于 2013-11-5 22:36:01 | 显示全部楼层
好文   学习

出0入0汤圆

发表于 2013-11-5 23:19:44 | 显示全部楼层
很通俗易懂

出0入0汤圆

发表于 2013-11-6 08:54:56 | 显示全部楼层
深入持久的学习....................

出0入0汤圆

发表于 2013-11-7 20:00:02 | 显示全部楼层
看完了,感觉还是不咋懂,谢谢楼主

出0入0汤圆

发表于 2013-11-13 17:31:43 | 显示全部楼层
楼主描写的很详细,可以作为入门的资料,虽然我还没有看完

出0入0汤圆

发表于 2013-11-14 14:48:07 | 显示全部楼层
非常好,不过不是实用际性不怎高,但学习了

出0入0汤圆

发表于 2013-11-17 21:12:56 | 显示全部楼层
好的,学习了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2025-4-19 02:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表