玩车tv 法拉利:RT-Thread RTOS简介

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

RT-Thread与ucos比较:

  任务管理及调度:  RT-Thred 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发布出来。