打印

建立一个属于自己的51实时操作系统

[复制链接]
11556|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
风城少主|  楼主 | 2007-10-29 17:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文中的例子,是我学习RTOS时参看了一些网上资料写的,

    参照了很多现成的实时操作系统(如陈明计的SMALL RTOS51;基于51的圈圈操作系统;UCOSII等)

    黄健昌在网上的发表的《 建立一个属于自己的AVR的RTOS》 让我对RTOS的原理有了深刻的认识

    阅读完陈明计的smallrots让我对实时操作系统提供的功能及其实现有了更深的了解;

    在此向上面提到的人致以真诚的感谢

    本文中的例子,基本上用keil调试仿真成功,一定可能存在某些方面的缺陷,因为学习上时间的压力,就没有进一步查找。 

    但我相信,大家通过学习,会一步步了解一个内核的具体实现形式,慢慢完善,并且最终写出一个属于自己的内核。 

    当掌握一定的基本知识后,再回头看看 UCOSII和small rots51等,可能会有更深的体会,对进一步了解嵌入式系统和操作系统,条理会更加明析。希望本文能帮助大家做到这一点。 

    希望大家能够提出自己宝贵的意见,并尽可能地不断改进。 

    牛顿曾说过,“我能够看得更远,是因为站在巨人的肩膀上。” 

    希望大家都能出一份力,推动我们的嵌入式的事业的进一步发展。 

  2007年10月29日 希望同行多多交流。 

作者 焦进星   风城少主
QQ :376637405   
e-mail: wyoujtg@sina.com
相关链接:https://bbs.21ic.com/upfiles/img/200710/20071029174844579.rar

相关帖子

沙发
computer00| | 2007-10-29 18:32 | 只看该作者

哈哈~~~终于也有人看看偶的51_00_os了,高兴~~~~

使用特权

评论回复
板凳
wxj1952| | 2007-10-29 18:40 | 只看该作者

一点疑问。

为什么不能像RTX51TNY那样做成库?留给用户的工作就是编写任务程序的工作。例如:
void job0(void) _task_ 0  {
while(1)
{ LED1=!LED;
os_wait(K_TMOD,200)
}
}
看不到操作系统在工作,就象DOS,用户只要执行COPY等系统命令,看不到main()什么的。
看了几位大师的作品,却没找到这种方法!还是我没有耐心找?

使用特权

评论回复
地板
computer00| | 2007-10-29 18:45 | 只看该作者

这个需要编译器和硬件的支持.

使用特权

评论回复
5
wxj1952| | 2007-10-29 18:58 | 只看该作者

另一个问题。

圈圈和风城少主能否顺便告之一下所写的RTOS如果应用将占用系统多大ROM?1K/2K?3K/4K?,假设简单的几个调度功能:非抢占,时间片循环+主动放弃CPU。

1、等待/发送/清除信号;
2、延时等待(放弃CPU);

使用特权

评论回复
6
computer00| | 2007-10-29 19:04 | 只看该作者

这样的话,应该只需要几百字节的ROM吧。

使用特权

评论回复
7
ayb_ice| | 2007-10-29 21:18 | 只看该作者

学习可以,使用意义不大。。。

使用特权

评论回复
8
邓裕文| | 2007-10-30 09:59 | 只看该作者

111

顶一下

使用特权

评论回复
9
gyt| | 2007-10-30 10:04 | 只看该作者

赞成7楼ayb_ice的意见

使用特权

评论回复
10
工控秀才| | 2007-10-30 13:53 | 只看该作者

了解下我的硬件RTOS吧

比你这强多了,目前8路PC,如果跑8MHZ的时钟,1us就切换完所有的任务了.

使用特权

评论回复
11
etual| | 2007-10-30 21:46 | 只看该作者

51资源比较少,有种绑手绑脚的感觉。

慢慢找个合适的平台再写~~

使用特权

评论回复
12
wxj1952| | 2007-10-30 22:15 | 只看该作者

中国的现场总线标准有望了

8核?LonWorks的MCU是3核的——网络/IO/管理,中国的特级教授研究多年,也只触皮毛。“工控秀才”根本不用研究国外,另辟蹊径,一下子就超过世界水平,谁说中国总落后于世界,谁说中国没有自己的现场总线?!

1us完成切换?!中国的核电站控制设备化了多少亿美元给德国/日本,就是为了要求几十us(也许是十几us)之内完成快速保护,我是不是应该向他们总师推介一下“工控秀才”的研究,——中国的工控设备控制反应速度比国外快得多。



使用特权

评论回复
13
huangqi412| | 2007-10-31 08:44 | 只看该作者

学习一下

使用特权

评论回复
14
古道热肠| | 2007-10-31 09:57 | 只看该作者

谢谢发表。

  实时操作系统的确能在复杂系统中大显身手,但要用好它,也得费不少折腾。

使用特权

评论回复
15
一朝成名| | 2007-10-31 12:17 | 只看该作者

留个脚印

使用特权

评论回复
16
工控秀才| | 2007-10-31 14:31 | 只看该作者

谢谢wxj1952的推荐

如题,多路PC协同处理,必将刷新微控制领域的新篇章,相对于传统8位机而言,哈哈!所以,与其还去自己写什么OS,不如研究下FPPA算了.

使用特权

评论回复
17
freebenben| | 2007-10-31 20:34 | 只看该作者

哈哈灌一个

使用特权

评论回复
18
jerkoh| | 2007-10-31 21:00 | 只看该作者

我去看看

我去下载看看 学习下~~

使用特权

评论回复
19
bird777| | 2007-10-31 23:56 | 只看该作者

^_^

void OS_Task_Switch(void) 任务切换这个函数设计思想上存在问题.
1.代码最后这个EA = 1; 用户要搞发疯的. 要先看环境,如果切到了女儿国,
有可能不要这个礼物.第一次就算了,姑娘们将EA=0,怎么再切过来时EA又变成了1呢?怎么这么不讲文明呢?!!!
2.还有切换前和老苏一样,去杭州就去了,只记下了大老婆的黄瓜脸,小老婆们都全不要了,真的方便啊.
3.唯一比较像样的只有信号量这块,有两个地方改改可能会漂亮一些,
要体现在8位机上跑,要考虑速度和空间,省掉一些保护也是可以的,
比如:Sem[Index].OSEventState++; 不必考虑超过255,
但是计数型的信号量对应的操作资源我想来想去除了显示接口(其实也可以不要)实在不太好找了,Sem[Index].OSEventState |= 1;比较通用一些.
bb:.... goto bb; 用do{...}while1(1);好看.
4.这个核只有作者自己能用,自己作维护.
5.以上乱谈,本人才疏学浅,没有恶意!
=================================================================

8位8核并行处理器好,俺也是一家不知名的工控制造商,期待有机会看看工控秀才的杰作,成本高了,就拉到.高成本的,俺们方案一大堆.俺设计的RTOS在M16下,相当于7个ATTINY26的,当然部分硬件资源是不能相当的,


使用特权

评论回复
20
liqiang110| | 2007-11-2 17:16 | 只看该作者

支持一下

使用特权

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

本版积分规则

4

主题

4

帖子

2

粉丝