一定要顶起,下面是RT-Thread的一些介绍,如果对RT-Thread比较熟悉的话,几个小时可以完成移植工作。
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官方网站:
http://www.rt-thread.org
RT-Thread官方论坛:
http://www.rt-thread.org/phpbb/
内核API在线文档:
http://www.rt-thread.org/rt-thread/rttdoc_0_2_3
RT-Thread编程指南(未完成):
http://www.rt-thread.org/phpbb/viewtopic.php?f=2&t=195
到目前为止,不管您是使用RealView MDK还是IAR EWARM,您都可以尝试使用RT-Thread。