RT-Thread RTOS

RT-Thread RTOS

目录

RT-Thread开源实时操作系统发布1.0.0正式版
RT-Thread 0.3.0正式版本发布
关于RT-Thread的背景和成长
展开
RT-Thread开源实时操作系统发布1.0.0正式版
RT-Thread 0.3.0正式版本发布
关于RT-Thread的背景和成长
展开

编辑本段RT-Thread开源实时操作系统发布1.0.0正式版

RT-Thread RTOS
这是一款由国内RT-Thread工作室开发的开源实时操作系统。起初RT-Thread是一个实时的 内核(全抢占优先级调度,调度器 时间复杂度O(1)),但在发展过程中,RT-Thread实时操作系统得到了来自全国嵌入式开发工程师的鼎力支持,为RT-Thread添砖加瓦,现在它已慢慢变成一个完善的、全功能的操作系统:文件系统,网络协议栈,图形界面组件。。。只有您想不到,没有您做不到:RT-Thread是一个平台,您可以把您的创意汇聚在一起,小平台大社区,RT-Thread的开发人员就在您的身边。

RT-Thread与ucos比较:

任务管理及调度:
RT-Thread 32/256可选优先级 抢占式调度, 线程数不限,相同优先级线程 时间片轮转调度;支持动态创建/销毁线程
ucos 256优先级 抢占式调度,不允许相同优先级任务存在
同步/通信机制:
RT-Thread 支持semaphore, mutex, mailbox, message queue, event。mailbox可存储多条消息,任务等待可按优先级进行排队。
ucos semaphore,mutex, mailbox, message queue, event。mailbox只能存放1条消息
内存管理:
RT-Thread 固定分区内存管理,小内存系统 动态内存管理,大内存系统SLAB内存管理
ucos 固定大小内存块管理
定时器:
RT-Thread 挂接到系统OS定时器的硬定时器
ucos 只能使用 OSTimeDly进行时间间隔处理
中断嵌套:
RT-Thread 允许
ucos 允许
源码许可证:
RT-Thread GPL + 可用于商业产品(只需要注明使用了RT-Thread)
ucos 商业收费
体积(典型配置,ARM7TDMI):
RT-Thread 8k ROM, 2K RAM(RT-Thread/STM32包含完整的STM32固件,体积大些)
RT-Thread主要支持的平台:
STM32F103VB/STM32F103ZE
AT91SAM7S/7X
S3C2410
x86-IA32
RT-Thread/STM32F103VB 0.3.0 beta3更改记录:
- 内核,添加IAR EWARM 5.x工程,在内核定义中做相应的平台定义;
- 添加文件系统组件DFS,DFS是一套 虚拟文件系统(类似Linux的VFS,但几乎不占用空间)
- 添加文件系统DFS-EFSL:把著名的FAT文件系统实现EFSL引入到DFS中,同时对它的不足进行修改:重写文件系统缓冲层;添加多 扇区读写支持。(我们自己实现的DFS-FAT还在进行压力测试中,测试完毕后也会放出)
- STM32固件库更新到2.0.3patch1
RT-Thread/STM32F103VB 0.3.0 beta2更改记录:
- 修正message queue创建时 内存分配的问题。
- 修正pendsv异常优先级过高的问题。
- 更改rt_console_puts为rt_hw_console_output,并由各个board自行实现,如果设置rt_hw_console_output为空函数,那么rt_kprintf将自动不起作用。
-  设备驱动框架中添加两个回调函数,设置回调函数的接口为:
* rt_device_set_rx_indicate,rx_indicate 回调函数在设备驱动收到数据时调用,以通知上层应用有多少字节大小的数据已经接收(上层应用此时可以主动调用rt_device_read进行接收)。
* rt_device_set_tx_complete,tx_complete 回调函数在驱动设备完成数据写入时调用,以通知上层应用数据已经写入完成(如果数据是动态申请的,可以在此时释放)。
设备驱动框架内部相关调用实现:
* rt_device_open/close,如果驱动设备是DMA接收模式,那么调用open将打开DMA开始进行接收,close则关闭DMA
* rt_device_read, 设备驱动从设备中读取(轮询模式),或从已经接收到的buffer中读取(接收中断模式、DMA接收模式)
* rt_device_write, 设备驱动往设备中写入数据(轮询模式),或挂接到链表中,等待DMA传输完成(如果当前DMA没使能,那么使能DMA直接进行发送)。
- STM32串口设备,实现在libcpu\stm32\serial.c中,发送支持 轮询,DMA发送;接收支持轮询,中断接收,DMA接收等方式。
* 串口设备的注册在bsp\stm32f103vb\usart.c中,当前默认注册为
+ uart1, 轮询发送,中断接收, 中断接收通知指向finsh,rt_hw_console_output则轮询发送(不产生中断)。
+ uart2, DMA接收,轮询发送
+ uart3, 中断接收,DMA发送
- bsp\stm32f103vb\application.c是几个串口设备的使用例子。
简而言之,RT-Thread/STM32F103VB 0.3.0 beta3是一个RTOS + Shell(finsh) + VFS(DFS + EFSL(FAT16/32)),并且文件系统已在万利STM32 开发板SPI SDCard上验证通过(大范围的SD/MMC卡还有待验证)。

编辑本段RT-Thread 0.3.0正式版本发布

相较以前的RT-Thread 0.3.0 RC版本,添加了RT-Thread/GUI 图形用户界面组件,内核部分无大的修改(console调整为支持设备的模式),建议所有使用0.2.x、0.3.0 beta/rc版的用户都开始使用0.3.0正式版。当前版本支持如下移植分支:
- ARM Cortex-M3系列:STM32(包含STM32F107),LM3S,LPC1766
- ARM7TDMI系列:LPC2148,LPC2478, AT91SAM7X256,AT91SAM7S
- ARM920T系列:S3C2440( mini2440)
- IA32:QEMU及真实的x86机器

编辑本段关于RT-Thread的背景和成长

记录下RT-Thread 0.3.x的成长

先解释几个常见问题:
1. RT-Thread从哪里而来?
RT-Thread RTOS,Kernel部分完成于2006年上半年,创始人源于国内一老牌RTOS:DOOLOO RTOS,甚至是BSP 一些结构都源于DOOLOO RTOS。但与DOOLOO RTOS明显不同的是,Kernel完全重新编写,突出的是实时性和小而灵活,并且引入了 内核 的对象模型以摒弃 内核对象的与动态内存管理器无关化。
2. RT-Thread用于商业产品&工程,版权如何界定?
RT-Thread RTOS内核部分完全由我们编写,无其他版权问题,可以放心在商业产品 & 工程中使用。对于把RT-Thread使用于商业产品中,我们承诺永久不收费(使用人拥有使用权,使用用途责任请自行承担)。另外有两点需要注意:
- RT-Thread RTOS代码原始版权属于RT-Thread所有。
- 在商业产品 & 工程中使用RT-Thread RTOS,请在产品说明书上明确说明使用了RT-Thread,如有串口输出,请在系统启动显示RT-Thread的版本信息。如使用了RT-Thread RTGUI,请保留RT-Thread LOGO。
3. RT-Thread RTOS由谁开发,由谁维护?
目前RT-Thread RTOS由国内RT-Thread工作室开发及维护
4. RT-Thread RTOS是否已经在产品中使用?稳定度 & BUG情况如何?
目前已经有数家公司使用RT-Thread RTOS做为他们的系统平台,在上面进行产品开发,稳定性表现不错。
就如同没有100%的完美事物一样,BUG是存在的,反馈上来我们会努力尽快修正。
5. 我能加入到RT-Thread的开发者队伍中吗?
能!
我们欢迎任何对RTOS感兴趣的人,不管你是学生或资深 嵌入式系统开发工程师。RT-Thread的开发人员通常依赖于论坛、 邮件、GTalk进行联系交流,由于目前上海的开发人员比较多一些,所以会不定期的在上海举行开发者聚会。
6. RT-Thread依靠什么持续发展下去,能够盈利吗?
目前RT-Thread的发展主要依赖于大家的兴趣爱好,大多数都是在业余时间进行开发的。以后会通过技术支持、组件定制、组件开发、辅助工具等 方式进行盈利。从几大开源软件来看,商业支持是软件持续发展不可或缺的一部分,所以我们希望能够有更多的公司选择RT-Thread RTOS做为系统平 台,这个对于公司、对于整个RT-Thread社区都是双赢的局面。对于公司,能够获得免费的RTOS套件,同时也能够推动着这个RTOS套件不断的朝着 稳定的方向发展。对于我们,有公司支持的发展无疑会令RT-Thread的发展更上一层楼,当然也意味着以后的支持费用有着落啦。
=========
问题完了,开始进入0.3.x系列的主题。在对外发布上,相信大家已经看到了,RT-Thread已经进入了0.3.x的密集发布周期。RT- Thread/STM32F103VB已经发布了0.3.0系列的3个beta版本,RT-Thread/STM32F103ZE已经发布了0.3.0系 列的2个beta版本,RT-Thread/LPC2148已经发布了一个0.3.0系列的beta版本。接下来会考虑发布RT-Thread/LM3S 的第一个beta版本(汗一个,刚发过了的板子有些硬件问题,返修了)...
这些版本,大多数上会包含:Kernel + FinSH shell + Filesystem + LwIP等。
0.3.0系列,RT-Thread还包括两大内容:
- 编程指南文档
- RTGUI图形界面系统
编程指南一直在修订,比较遗憾文笔有限,所以文档还请大家不要太挑剔,有什么建议欢迎大家提出来。关于编程指南,还要提一句的是,这份文档是一份 编程的指南,在RT-Thread上编程需要考虑的地方都会提出来。但是,它并不是一份代码分析的文档,虽然它可能会提到内部的一些大致结构框架,但它不 会对代码进行一行行分析,所以请大家多多注意。
另外的RTGUI组件,会是以后的重点任务,目前的打算是在现有的STM32F103ZE 开发板上实现一套可用的手持终端设备,当然也依然延续 RT-Thread的习惯,这套东西会以开源的形式释放出来。在s3c2410/2440上,这套GUI表现得是相当不错的, 面向对象的设计,独立的控件 对象模型,留给了用户最大的可扩展性。
其他的,caoxulong的x86分支在整理完毕后也会放到0.3.0这个分支上来,通过这个分支大家可以完全摒弃 开发板,在PC或 VMWare/QEMU上体验RT-Thread。LPC系列分支,苦于目前 开发板不足,所以进展慢一些,上次发布的RT-Thread /LPC2148 0.3.0 beta1也只能包含SD卡、以太网口驱动框架,这个系列会把 wyoujtg/风城少主 的LPC2106的移植合并进 来。
文件系统这块现在代码已经发布出来了,其实里面还包括另外一个分支的:DFS-FAT,这个分支就如同DFS一样,是我们自己编写的,也能够支持NandFlash等介质上的坏块管理,写了很多个测试例子在测,等通过压力测试后会取代目前的DFS-EFSL发布出来。

你可能感兴趣的:(Arm嵌入式)