RT-Thread ucos

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卡还有待验证)。

你可能感兴趣的:(框架,测试,Semaphore,vb,任务,output)