登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

有兴趣看看我的操作系统:RT-Thread

作者:ffxz 栏目:ARM技术
有兴趣看看我的操作系统:RT-Thread
当前最新版本RT-Thread v0.2.1

中文网站:http://openlab.rt-thread.com
英文网站:http://openlab.rt-thread.com/en

论坛:http://linuxfans.org/nuke/modules.php?NAME=Forums&file=viewforum&f=74

说明:
RT-Thread算是我工作这么多年以来的总结或起点吧,基本上由我个人从今年年初开始着手,现在基本成型的实时操作系统。在其中,个人思考了很多很多,如何做一个真正意义上的实时操作系统,优秀的结构,如何在体积和性能上折中,等等……

总结:
RT-Thread RTOS包含了计算机科学中的一些最基本的,最基础的知识:
- 首先是操作系统上的知识
- 其次是编译原理上的知识

操作系统的知识,这个是一目了然的。那么编译原理呢?
RT-Thread内部包含了一个可接受C语言表达式的shell系统,而这套系统却被实现成类似于一个编译器:完整的词法分析,语法分析,然后产生中间二进制代码,最后放到虚拟机中运行。采用这套shell系统的直接后果就是,一个类似vxWorks shell的系统诞生了。

起点:
目前发布的是RT-Thread操作系统的单内核版本,这个仅仅是一个起点,我希望能够有更好的发展:单内核版本的实质是一个硬实时的核,希望能够把硬实时的单内核保留下来,这也是传统RTOS的精华所在,然后加入现代化的微内核结构。而这部分,我现在正在积极的实现中……

以上这些废话挺多的,说说RT-Thread v0.2.1单内核版本的特性:
内核部分
    * 内核对象系统
系统具备内核对象管理系统,能够访问/管理所有内核对象。内核对象包含了内核中绝大部分设施,而这些内核对象可以是静态分配的静态对象,也可以是从系统内存堆中分配的动态对象。通过内核对象系统,RT-Thread可以做到不依赖于具体的内存分配方式,伸缩性得到极大的加强。

    * 任务/线程调度
支持以线程为调度单位的多任务系统。调度算法是基于优先级的全抢占式线程调度,支持256个线程优先级,0优先级代表最高优先级,255优先级留给空闲线程使用;支持创建同优先级线程,相同优先级的线程采用可设置时间片的轮转调度;调度器寻找下一个最高优先级就绪线程的时间是恒定的(O(1))。系统不限制线程数量的多少,只和物理平台的具体内存相关。

    * 同步机制
系统支持semaphore,mutex等线程间同步机制。mutex采用优先级继存方式以防止优先级翻转。semaphore释放动作可安全用于中断服务例程中。同步机制支持线程按优先级等待或按先进先出方式获取信号量或互斥锁。

    * 通信机制
系统支持event/FAST event,mailbox,message queue通信机制等。event支持多事件"或触发"及"与触发",适合于线程等待多个事件情况。FAST event支持事件队列,确定事件阻塞线程的时间值固定。mailbox中一个mail的长度固定为4字节,效率较message queu高。通信设施中的发送动作可安全用于中断服务例程中。通信机制支持线程按优先级等待或按先进先出方式获取。

    * 时钟,定时器
系统默认使用时钟节拍来完成同优先级任务的时间片轮转调度;线程对内核对象的时间敏感性是通过系统定时器来实现的,此外,定时也支持一次定时及周期性定时。

    * 内存管理
系统支持静态内存池管理及动态内存堆管理。从静态内存池中获取内存块时间恒定,而当内存池空时,可把申请内存块的线程阻塞(或立刻返回,或等待一段时间仍未获得返回,取决于内存块申请时设置的等待时间),当其他线程释内存块到内存池时,将把阻塞线程唤醒。

FinSH
FinSH是RT-Thread内核中的shell系统,通过它能够直接在shell中调用系统函数,访问系统变量;接受C语言中大多数运算符(包括指针运算符)进行简单计算;通过定义指针(函数)变量并指向某特定地址,可以完成匿名函数调用的功能。

诊断
通过系统提供的FinSH shell系统,能够观测线程,信号量,互斥锁,事件,邮箱,消息队列的运行情况,能够获得各个线程的栈使用情况。

内核对象管理器中也提供了Hook机制,可以用于辅助纪录/跟踪内核对象的使用情况。

可移植性
系统采用核心与BSP分离的方式,其中内核采用100%标准C编写,具备优秀的可移植性,适合于多种体系结构多种编译器。抽象出的BSP层采用标准C和汇编混合编写。
实现细节
    * 支持的平台
         1. 硬件平台支持
                o lumit4510开发板
         2. 虚拟平台支持
                o skyeye
    * 核心指标(lumit4510硬件环境下)

最小配置指标:正文段 13960字节,数据段 256字节,BSS段 3284字节
基本配置指标:正文段 14156字节,数据段 256字节,BSS段 3508字节
+ FinSH指标 :正文段 43480字节,数据段 680字节,BSS段 7220字节

在论坛和网站上我也给出了如何使用SkyEye来模拟RT-Thread,感兴趣的请自行浏览。也非常欢迎您和我交流!


2楼: >>参与讨论
ffxz
单内核分支以后的发展路线
对于单内核分支,可能以后的发展路线是这样的:
- 增加设备管理系统
- 移植我去年就已经完成的支持多介质(NANDFlash,NorFlash,SD/MMC,IDE)的FAT12/16/32文件系统,这个文件系统是支持擦写均衡的。
- 移植LwIP网络协议栈
- ARM7的调试桩
...

这方面大多也会开源出来,以后的计划会慢慢清晰的。

3楼: >>参与讨论
温知新
OS+=1;
 
4楼: >>参与讨论
foyyof
这个OS比以前那些好..
实时多线程操作系统!还有控制台..

不过还需要做的还很多,最好多些人一起写它的文件系统(一个好的系统载体)。网络等等..其实这些完全可以借鉴linux。但要尽量做小,而保证实时性是最大特色就好了。

5楼: >>参与讨论
eleven11
移植LwIP网络协议栈
为什么要移植?应该在这个基础上写一个,移植的不好,如果你真想完善这个os

6楼: >>参与讨论
ffxz
OS与轮子
As 温知新 talk,
OS += 1

如果说仅仅是OS += 1的话,我想我也没必要做这个了。目前的0.2.1是基础,我希望它是起点,而不是重复的一个个轮子。。。所以我的兴趣所在是以后的版本 - 微内核版本。终极的目标是把一个BSD Core更融合进去,但确做为一个用户服务而存在(这样做的好处是,能够把尽量多的BSD应用程序移值过来),同时最最重要的,把实时性保留下来。

至于说多人完成一个文件系统,我的看法是相反的,我对代码是有严格的要求的,玩具式的代码没太多用处。所以关于文件系统这部分,我希望是一个人独立来完成,比较幸运的是,这块我去年已经完成了,就差把它给移值过来。

而网络协议栈,实际上我更倾向于uip,作者也和lwip的原始作者是同一个人,对体积的控制非常严格,至于说自己开发,我想除非我有整块整块的时候能够静下心来做……


7楼: >>参与讨论
rockos
OS += 1,的确

除此之外,这个RT-thread也没有非常特别的地方

现在能写出RTOS的人不少,有几个能推广啊

8楼: >>参与讨论
foyyof
要做全才行,包括各种协议栈
只要稳定实时,当然能推广开。

9楼: >>参与讨论
ffxz
全做,把一个BSD Core弄进来
全做,把一个BSD Core弄进来,一切都全了:-)

如果对许可证不关心,那么就把linux kernel也弄进来,这也就是现在高通和UNSW的合作项目(据说已经商业化):L4::Pistachio + linux。。。

所以嘛,microkernel才是王道^-^


10楼: >>参与讨论
eleven11
如果想卖钱是很难的
就算你补全了全部协议,完整的话必须还要一个gui,但如果你最后商业化,基本就没有人问津了,协议都有标准的,开源免费的fs,tcp,usb有不少,盗版的也有不少,很多人商业用的就是盗版ucfs,至于写平衡,其实人家管你什么写平衡啊,u盘里面就没有写平衡,3天2头坏,很多人都是搞个循环写就成了,写平衡?看不见模不着的东西,很多人实现产品的功能就可以了,要什么精品啊

盗版gui也有一个很好的,ucgui,盗版做东西的也很多

所以microkernel在中国,中国人搞希望不大,至于到了gui复杂的3d功能,完整的手机方案,别人公司一个团队都开发了几年,10几年,个人是没法比的

所以好东西还是自己用吧,中国搞技术没希望,盗版合法,能拉到项目的人还怕没人来做?没人给你垫钱?技术在很多公司确实不能给你带来什么,虽然社会上技术是很值钱的,公司一个项目很多都是找兼职的做的,因为他没有长远的打算,项目的技术也是东一个,西一个,只要找个这个项目做过的人做就算了

* - 本贴最后修改时间:2006-8-15 8:07:05 修改者:eleven11

11楼: >>参与讨论
ffxz
为什么说来说去总离不开商业化,推广
不清楚为什么总离不开商业化,推广的话题。。。

既然我打算把这块作为开放源代码,我就没有考虑过要把它商业化,就象网站上说的,过一段时间我还会考虑是否把它改成BSD许可证。

既然是做技术的,所以对于这点我也纯粹从技术的角度去考虑,至于说microkernel,从学术的角度来说,还没有100%的把握说它优于整内核,所以这块也仅仅是我在技术上的research,我也不靠它养家糊口。


12楼: >>参与讨论
hq_y
为什么说来说去总离不开商业化,推广?
因为大多数人有沉重的家庭负担,要把时间放在赚钱养家糊口上

13楼: >>参与讨论
阿南
支持楼主,顶
 
14楼: >>参与讨论
stonewater
支持,支持
顶!

15楼: >>参与讨论
twentyone
RE
商业化并不是想象中那么简单的事情,我想这也不是LZ的本意。支持LZ的这种开源精神,希望LZ能越做越好。

16楼: >>参与讨论
ffxz
让RT-Thread能够真正用起来……
大家好!

为了让RT-Thread能够真正用起来,以后会考虑RT-Thread在一些通用平台上的移植,而这些平台将是容易获得的,自己DIY或者通过某些厂商获得。

以下硬件平台会优先考虑:
- AMTEL AT91SAM7SXX系列平台 [已经选定了硬件平台]
- SAMSUNG 44b0平台
- IA32 [正在移植]
- PHILIPS LPC21/22xx系列平台
- STR71x系列平台
- ColdFire平台

也非常欢迎爱好者自行移植然后回馈给我,及有兴趣的开发板厂商联系我考虑合作移植事宜[前提条件:请遵循GPL许可证]。

17楼: >>参与讨论
foyyof
why not SUPPORT ARM9 series...
 
18楼: >>参与讨论
ffxz
ARM9
ARM9系列我想直接在微内核版本中使用(因为要使用MMU了),单内核版本似乎意义没这么大。

ARM9系列平台,我希望是:
- AT91RM9200
- S3C2410/2440

但是我手头上一块都没,打算过段时间买一块。

19楼: >>参与讨论
ffxz
RT-Thread for AT91SAM7S64
顶一个。

最近获icdev.com.cn支持,基于icdev.com.cn的AT91SAM7S64核心板基本完成了RT-Thread for AT91SAM7S64的移植,核心近一步精简,
.text + .data + .bss 总共 8k大小(一个线程的情况下)
完全可以放到AT91SAM7S64的16K RAM中运行(还多出来8K:-)

可惜目前只有核心板,没串口,下周试着把USB打通当串口用用,然后就发布AT91SAM7S64的移植^-^


20楼: >>参与讨论
airy
佩服楼主
像楼主这样能踏踏实实做技术的人实在不多了。浮躁、急功近利,建议这些人经商去得啦
支持楼主开源,其实不管商业化与否,能做出一个真正实用的OS就相当不错了,开源可以让更多的人接触到你的系统。

刚注意到楼主的这个RTOS,感觉挺不错,有机会仔细研究一下


21楼: >>参与讨论
jichunfan
顶~~~~
  楼主真是好样的,不得不承认,佩服!如今在中国真正象楼主这样搞技术的不多!不管商业不商业话,我佩服楼主的这种精神,也祝RT-Thread为越来越多的人熟悉和使用,我想这也是楼主希望的吧!

22楼: >>参与讨论
上铁钟头
支持楼主
现在的问题是学一个新东西太费劲了,如果真的简单好用我相信还是有很多人愿意用愿意出钱的

23楼: >>参与讨论
ffxz
RTT 0.2.2 测试版
RT-Thread v0.2.2单内核测试版本发布,这个版本主要是增加更多的BSP移植:
- S3C44B0的移植 [Xu Xinming]
- AT91SAM7S64的移植 [Bernard Xiong,感谢icdev.com.cn提供开发板]

以下的移植仍然是试验性质的
- NDS掌上游戏机的移植[vai]
- ia32的移植[Qiu Yi],在QEMU虚拟机中测试完成

以下是各个移植的一些说明:

AT91SAM7S64: (系统资源:16k RAM,64k ROM FLASH)
为配合小内存情况,RT-Thread 0.2.2支持任务最大优先级为32的情况,以保证内存占用更小(所有二进制代码小于10k)
AT91SAM7S64移植中,串口并没打开,finsh也没启用。
在bsp/icdevs64/build目录下附带uVision的工程文件,需要机器上安装有keil的gcc编译器

ia32:
支持i386-elf-gcc for windows的编译,linux下的还没试,应该也可以顺利编译。
编译完成后在bsp/qemu目录下生成rtthread-qemu.elf
把这个elf文件配置到grub的配置文件中,具体的grub配置请参看grub文档

下载地址:(注:国外地址)
http://openlab.rt-thread.com/rtt-download/rtt-0.2.2-20061010.tar.bz2

* - 本贴最后修改时间:2006-10-10 21:02:28 修改者:ffxz

24楼: >>参与讨论
ffxz
下一步得转转方向了
移植移得我头好大啊,当然了,如果有需要移植也是可以的,前提是我有完好的开发板/环境

下一步会转转方向,重点是以下几点:
- 设备驱动框架
- uip的移植
- 文件系统


25楼: >>参与讨论
ffxz
学习学习
To 上铁钟头
新东西是新东西,不过也蛮简单的

我们今年内应该有完全的中文文档出来,也会有一些论文刊登出来吧。


26楼: >>参与讨论
eleven11
如果你想完善你的os
最好编写一个崭新的tcp/ip和fs,

* - 本贴最后修改时间:2006-10-10 18:18:43 修改者:eleven11

27楼: >>参与讨论
waking
佩服
 
28楼: >>参与讨论
ffxz
顶一顶
好久没来,来了就顶一顶吧-_-

最近在移植RT-Thread for PXA270,快完成了,完成之后就正式开始微内核之旅了。(是一款SHARP的PDA,SL-C1000,PXA270 416MHz,全键盘640x480的LCD,Host/Device USB)

单内核分支继续运作,不过我不再重点参与了,但是进度还是很快的,TCP/IP协议栈和GUI等组件也快了。。。

29楼: >>参与讨论
joy晴天
支持一下
 
参与讨论
昵称:
讨论内容:
 
 
相关帖子
想看linux的源代码,大家推荐一下哪个版本注释比较好看懂?
求教数据通信问题
请教桢内预测,的VHDL/VERILOG代码
想运行带GUI的LINUX,请推荐一款ARM9
收集的好多资料 ,要下的就来!
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号