RTOS之uCOS-II源码下载及源码目录结构、常见的RTOS!

RTOS有众多种,用得最火的是FreeRTOS,因为它即使用于商业途径,也是开源免费的;其次是就是uCOS-II和uCOS-III。uCOS-II用于商业途径是需要付费的,但是对于学习研究却是免费的。它们同是嵌入式实时操作系统,很多东西都是共通的,熟悉其一,其它都非难题了。

常见的RTOS:

1:QNX的可靠性很好,协议栈、各种外设驱动稳定,只是运行所需资源有些多,需要MMU。如果需要高可靠性应用,QNX可能是最好的选择
2:RTLinux的实时性与其它RTOS相比有些差。但是,因为好多Linux资源可以利用,是RTLinux的优点。但是运行所需资源比QNX还多,也是需要MMU。可以选用开源的RTLinux或内容新的商用RTLinux。
3:uC/OS-II比较小巧,移植容易,网上资源很多,核心可以做得很小。但不是免费的,并且驱动需要自己编写,协议栈、图形驱动都要另外加。
4:Nucleus Plus比uC/OS-II庞大,另外提供了文件系统、协议栈、图形界面等许多东西。当然也是分开卖的,不是免费的东西。使用起来比较容易上手。
5:VRTX是一款比较早的RTOS,现在使用的人已经很少。运行还是比较可靠。配套的文件、协议栈等模块很少。
6:VxWorks是RTOS中的大牛,国内外用的人很多,开发工具功能强大,使用方便,但是价格昂贵。也有基于MMU的高可靠性的产品。所需资源比QNX小,比uC/OS、eCos多。对于一些私企或者好似小公司来说,可用性值得商榷。
7:eCos是开源的RTOS。针对不同的CPU已经做了许多现成的移植。代码尺寸比Nucleus的略大。如果不用USB host等,并且不想花费太多的金钱,应该是不错的选择

 

RTOS的学习,我选择的是uCOS-II。学习该操作系统的流程,主要分为源码阅读以及移植到STM32F10x单板上,并进行简单任务运行测试。过程中参考的资料有:

1.uCOS-II源码
2.正点原子MiniSTM32开发板配套资料
3.秉火ISO_V2开发板配套资料
4.《Cortex-M3权威指南.pdf》
5.《嵌入式实时操作系统μC\OS-Ⅱ原理及应用(第4版)》(任哲、房红征)

1. 源码下载(官网下载:https://www.micrium.com)

RTOS之uCOS-II源码下载及源码目录结构、常见的RTOS!_第1张图片


  uCOS-II是Micrium公司开发的一款嵌入式实时操作系统,要下载源码自然去该公司的官网下载,下载的时候需要账号登录。我下载过多个版本,最后发现这个版本的uCOS-II源码比较符合我手上的硬件平台,即STM32F10x。

  uCOS-II是一个操作系统,其实也可以理解成一个软件库,它可以移植到多种硬件平台,如M4内核的STM32,或者ARM9等等其他芯片。核心代码肯定是一致的,但是针对不同的处理器肯定要不同的实现部分。这里选择最为接近的版本,目的也在于少花费工夫。要知道,若要从0开始移植ucos-ii到目标硬件平台,需要极大的精力和软件水平。

2. 源码目录结构
下载下来后: 

RTOS之uCOS-II源码下载及源码目录结构、常见的RTOS!_第2张图片
将其解压后目录如下: 

RTOS之uCOS-II源码下载及源码目录结构、常见的RTOS!_第3张图片
EvalBoards:评估板相关文件,移植时提取部分 
uC-CPU:这是和CPU紧密相关的文件,我们不需要使用 
uC-LIB:Micrium公司提供的官方库,诸如字符串操作、内存操作等接口,可用可不用 
uCOS-II:这是关键目录,我们下来着重分析的文件位于此目录下

uCOS-II的目录结构为: 

RTOS之uCOS-II源码下载及源码目录结构、常见的RTOS!_第4张图片
 这里并没有基于MDK平台的代码版本,然而IAR跟MDK最为相近,所以我们先主要看以此目录为例。在IAR目录下有如下4个文件: 

RTOS之uCOS-II源码下载及源码目录结构、常见的RTOS!_第5张图片
(1) os_cpu.h:定义数据类型、处理器相关代码、声明函数原型 
(2) oc_cpu_a.asm:与处理器相关的汇编代码,主要是与任务切换相关 
(3) os_cpu_c.c:定义用户钩子函数,提供扩充软件功能的的接口 
(4) os_dbg.c:内核调试相关数据和相关函数

在uCOS-II下的顶级目录还有Source目录,下面的文件为: 

RTOS之uCOS-II源码下载及源码目录结构、常见的RTOS!_第6张图片
(1) os_core.c:内核数据结构管理,ucos-ii的核心,涵盖内核的初始化,任务切换,事件块管理、事件标志组管理等功能 
(2) os_flag.c:事件标志组 
(3) os_mbox.c:消息邮箱 
(4) os_mem.c:内存管理 
(5) os_q.c:队列 
(6) os_sem.c:信号量 
(7) os_task.c:任务管理 
(8) os_time.c:时间管理,主要实现延时 
(9) os_tmr.c:定时器管理,设置定时时间,超时则调用超时函数 
(10) ucos_ii.h:内部函数参数设置

用下面一张图片可以概括,uCOS-II的源码目录结构 

RTOS之uCOS-II源码下载及源码目录结构、常见的RTOS!_第7张图片

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