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)

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

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

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


将其解压后目录如下:


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

uCOS-II的目录结构为:


 这里并没有基于MDK平台的代码版本,然而IAR跟MDK最为相近,所以我们先主要看以此目录为例。在IAR目录下有如下4个文件:


(1) os_cpu.h:定义数据类型、处理器相关代码、声明函数原型 
(2) oc_cpu_a.asm:与处理器相关的汇编代码,主要是与任务切换相关 
(3) os_cpu_c.c:定义用户钩子函数,提供扩充软件功能的的接口 
(4) os_dbg.c:内核调试相关数据和相关函数

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


(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!相关推荐

  1. 在线教育专业建站工具 EduWind ,源码下载,源码分享网整理

    在线教育专业建站工具 EduWind ,源码下载, Eduwind是由北京水木信步网络科技有限公司开发的网校服务,公司位于清华科技园.目前,EduWind的产品系列包括以下两大版本: EduWind网 ...

  2. 站长下载 - 源码下载,网站源码,站长工具 - 中国站长站

    站长下载 - 源码下载,网站源码,站长工具 - 中国站长站 http://down.chinaz.com/

  3. 9款精致HTML5/jQuery日历时钟控件源码下载(源码请见百度云) 链接:http://pan.baidu.com/s/1geIXe75 密码:7m4a...

    现在的网页应用越来越丰富,我们在网页中填写日期和时间已经再也不用手动输入了,而是使用各种各样的日期时间选择控件,大部分样式华丽的日期选择和日历控件都是基于jQuery和HTML5的,比如今天要分享的这 ...

  4. android 6.0.1原生系统源码下载以及源码编译----framework修改

    1.源码下载前参数配置 1️⃣配置usb所需 sudo apt-get update sudo apt-get install git-core gnupg flex bison gperf buil ...

  5. vue 源码学习(一) 目录结构和构建过程简介

    Flow vue框架使用了Flow作为类型检查,来保证项目的可读性和维护性.vue.js的主目录下有Flow的配置.flowconfig文件,还有flow目录,指定了各种自定义类型. 在学习源码前可以 ...

  6. vue 源码学习(一) 目录结构和构建过程简介 1

    Flow vue框架使用了Flow作为类型检查,来保证项目的可读性和维护性.vue.js的主目录下有Flow的配置.flowconfig文件,还有flow目录,指定了各种自定义类型. 在学习源码前可以 ...

  7. vue-生成二维码+下载二维码

    <div class="img" ref="code"><qrcode-vue :value="link" size=&q ...

  8. centos7 更新网络源,下载扩展源时出现“one of the configured repositories failed”提示,解决方案

    平常都是用本地源,今天下某软件时需要用到网络源,启用网络源下载时突然报障,yum clean all 接着yum makecache 也出现"one of the configured re ...

  9. dedecms织梦仿麦站网模板源码下载站源码

    介绍: 第一步:上传源码到宝塔解压,访问域名/install 进行安装 第二步:登录后台还原数据.之后点击"系统"-"系统基本参数设置",修改网站根目录地址,填 ...

最新文章

  1. 35个高级Python知识点总结
  2. 使用vue.js路由踩到的一个坑Unknown custom element
  3. 2012腾讯春季实习生面试经历(一)
  4. MySQL 5.1中IN查询不要用到NULL条件
  5. 手把手教你实现SVM算法(二)
  6. Hadoop运维记录系列(十四)
  7. android tv market,安卓市场TV版
  8. Tensorflow入门----占位符、常量和Session
  9. ai的预览模式切换_深耕基础办公领域,永中软件云端远程办公新模式助力企业复工复产...
  10. day46-CSS3新增功能
  11. 对I2C总线的时钟同步和总线仲裁的深入理解
  12. createbitmap 旋转90度_如何旋转的位图90度
  13. 操作系统内存管理-原理
  14. pytorch-----使用Module类来自定义模型
  15. 力扣-797. 所有可能的路径
  16. [数学建模]数学规划模型
  17. 阿里云2核4G云服务器租用CPU内存、公网带宽和系统盘配置
  18. 为何 987654321/123456789 的值是 8.0000000729
  19. ucenter单点登录
  20. kafka的生产者如何把消息发送到指定分区里

热门文章

  1. 【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )
  2. js、jquery、h5、css等简记
  3. 面试题16: 数值的整数次方
  4. 洛谷P1466 集合 Subset Sums
  5. 基于visual Studio2013解决面试题之1007鸡蛋和篮子
  6. centos 5.x 安装 zendOptimizer 5.x
  7. servlet中的几个路径有关的方法
  8. 用openssl跟Gmail的smtp对话(一)
  9. linux 系统 UDP 丢包问题分析思路
  10. 内存与存储之边界迎来变革