
本帖最后由 baiyongbin2009 于 2014-12-15 16:26 编辑 % E* w A( M! x9 q8 W: l 特别说明: 1. 本教程是安富莱电子原创。 2. 安富莱STM32F407开发板资料已经全部开源,开源地址:http://bbs.armfly.com/read.php?tid=1285 3. 当前共配套300多个实例,4套用户手册。 第1章 嵌入式实时操作系统介绍 1.2 基于时间触发的嵌入式系统8 W5 U; ~' b( U: S 1.3 总结 1.1 嵌入式系统% p- T L' d0 O; ?! V3 Y 一般嵌入式系统方面的书籍开头部分都会做很多概念性的介绍。关于概念性的东西,大家读读就可以了,有个了解就行。我这里也简单整理了些,后面加入一些个人的理解。 1.1.1 定义 关于嵌入式系统,至今没有确切的定义,下面给出三个比较常用的定义: l 系统定义: T( i8 ^ \7 i7 H2 Q# ~$ b 当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。5 E" J8 k1 U* j) ^& V1 L' L I 注:在工业控制、 军事设备、 航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。我们常常说的嵌入式操作系统都是嵌入式实时操作系统。比如μCOS-III,eCOS和Linux、HOPEN OS。故对嵌入式实时操作系统的理解应该建立在对嵌入式系统的理解之上加入对响应时间的要求。 l IEEE定义 嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(Devices used to control, monitor, orassist the operation of equipment, machinery or plants)。 l 一般定义 以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 其实还有一种通俗的理解:嵌入式操作系统是为了区别于通用的计算机系统,人们把嵌入到对象体系中,为实现对象体系智能化控制的计算机系统,称作嵌入式计算机系统,简称嵌入式系统。 ! B/ O* p7 Z5 e/ [6 c 1.1.2 嵌入式操作系统分类2 j4 z W7 ]( i 按对外部事件的响应能力来分类,嵌入式操作系统有分时操作系统和实时操作系统。如果操作系统能使计算机系统及时的响应外部事件请求,并能控制所有实时设备和实时任务协调运行,且能在一个规定的时间内完成对事件的处理,那么这种系统就称为实时操作系统(RTOS)。 按时间的正确程度来分,实时操作系统又分为硬件的实时操作系统和软件的实时操作系统。系统必须在及其严格的时间内完成的任务叫做硬件的实时操作系统,要是不是很严格的话就是软件的实时操作系统。 分时操作系统就是按时间片轮转完成各个任务。 1.1.3 当前流行的嵌入实时操作系统, D" y* u1 o: h" R) [' v 在过去的2013年里,由UBM Tech Electronics做的2013年嵌入式市场报告分析了当前比较流行的嵌入式实时操作系统,为了说明这个报告的权威性,下面是主办方的信息:" P6 S; v& f" i! ? ![]() 根据EETimes上面所说的测试者主要来自欧洲和北美:http://www.eetimes.com/document.asp?doc_id=12630830 p4 o1 u- ]2 a/ c h9 y 这里我们主要关心的是小型的嵌入式RTOS,这个也是我们本期教程讨论的重点,下面我就把相关的信息帖出来,这样大家也好有个了解。 ![]() ![]() 上面两个图表的含义解释:; T7 H. @; v2 z# t( u2 Z, } 1. 第一个图标是当前正在使用的系统使用调查,第二个是以后的12个月里将要使用的系统。+ S# j; ~9 V. Q9 | 2. 对于第一个图表,只有使用超过%2的才会在上面显示。对于第一个图表,只有使用超过%3的才会在上面显示。 3. 因为咱们第一期RTOS的教程做的就是μCOS-III,所以重点看一下Micrium(μCOS-III,II)Net,从2012年的%10下降到2013年的%6。下滑有点大。( J0 }; U3 ~8 m6 C. a( \, ?5 @ 4. FreeRTOS在小型嵌入式RTOS里面是当之无愧的老大,之所以这么火都是有原因的,后面跟大家简单分析下。/ J2 O9 r; e* f9 I/ R4 g 5. RTX(由KEIL公司设计,现在已经被并入ARM公司旗下)也是榜上有名,这个OS设计的也非常强劲,将基于Cortex-M3/M4架构的ARM芯片性能发挥到极致,比如那个零延迟中断。而且在任务切换等性能测试方面完爆其它RTOS,后面跟大家提供一组数据。2 L) ~7 L5 T1 e+ {( I9 j/ \' ~( x 6. embOS也非常的不错,只是没有上榜,可能大家对这款RTOS了解的比较少,说起emWin大家应该记比较熟悉了,和emWin一样都是出自Segger公司。8 M6 A& Q( e5 W" t% @# a5 I$ \ 6 x1 G' p$ y$ x- s q& B . @2 Y" f1 ]: ^0 D" X8 ^6 a |
8 J. T% Q, G& @0 S- B' _7 O
下面说一下我个人的理解:, B1 G3 w" {; L7 C8 U
Ø 开源免费的,而且官方在这款RTOS升级上面做的也很积极,而且官方有完善的函数使用手册以及相关的例子,使用起来很容易上手。
Ø 既然FreeRTOS这么火,这里简单的做点介绍:FreeRTOS一共有三个版本,其它两个是SafeRTOS,OpenRTOS。- k) c* d2 T, p: H; }
1. FreeRTOS和OpenRTOS的关系
FreeRTOS和OpenRTOS的共享相同的源码,只是 OpenRTOS 为 FreeRTOS 披上commercial and legal wrapper。用户从FreeRTOS更新到OpenRTOS主要有两个原因:
u 为了克服FreeRTOS修改版的GPL许可证限制。: _9 n' O; v4 v) M* r% C+ k) Y
u 为了获得额外的服务,如专业的技术支持,高质量的中间件,培训,咨询和相应的工具。7 W4 h; e" Z5 l! }* _7 ^
2. FreeRTOS有GPL(修正版)许可证限制( R) g6 Z# D( E
修改版的GPL许可证有如下几个缺陷(There are several reasons whydevelopers may find the FreeRTOS modified GPL licence restrictive.) K) p- w( _. V! \: v' k
u 公司可能有一个全面禁止在他们的项目中使用GPL授权的软件。
u 他们可能需要IP赔偿。
u 他们可能更愿意在他们的产品中,避免FreeRTOS的许可证要求承认他们使用FreeRTOS的。
前面说的OpenRTOS许可证删除GPL(修改版)的限制,提供知识产权保障,并允许开发者保持匿名。
3. FreeRTOS和SafeRTOS的关系
SafeRTOS也是基于FreeRTOS的,但是和FreeRTOS不同,被安全方面的专家做了重新设计,下面是SafeRTOS获得的安全认证(这些认证非常重要)。
l 既然FreeRTOS是当前最火的,为什么不先做FreeRTOS的教程?8 A( l4 x5 U* k7 ? ~
Ø 一方面是因为很多人已经有μCOS-II的经验,学习μCOS-III也相对比较容易,而且国内铺天盖地的μCOS-II资料。( N0 G. Y/ X. y( D5 r# G4 h
Ø 这个原因比较重要,就是μCOS-III的源码可读性比较强,相比RTX和FreeRTOS都要好很多,代码写的非常规范,是学习研究的好资料。8 I) _$ c: M0 @( e& E, @
l 关于RTX的一些简单说明6 E: W9 D& b. U4 ?7 A5 T0 G% b
KEIL公司被ARM公司并购后,ARM公司在RTX的基础上正式推出CMSIS-RTOS,相对于RTX,主要是重新进行了一层封装,并加入了一些新的特性,这里就不做过多的介绍了,下面贴一组我测试的数据,主要是说明RTX强劲的性能。( N5 R Z Y; [
测试条件:STM32F103VET6,Cortex-M3内核,72Mhz,
软件用的MDK4.54, 1级优化。
测试10000次,2ms测试一次,然后求平均。
RTX
V4.5
252
μCOS-II
V2.92.07
354
μCOS-III
V3.03.01
576
embOS
V3.86
389
FreeRTOS
V7.4.2
514(另一种测试是374)
1.1.4 STM32嵌入式实时操作系统解决方案
ST公司有一个手册是专门讲嵌入式解决方案的,这里就把RTOS相关的粘贴出来。
6 M$ j( J) J& q( @
I9 V& W" V2 E% n; N
. q7 W- `4 w+ w: M/ n) d
( e( X- B0 D$ B- ]% x h n! i' @- J
8 r E" Q. \& X) J" Y; Z6 ]
1.2 基于时间触发的嵌入式系统
这里把基于时间触发的嵌入式系统单独的作为一小节独立了出来,是因为时间触发方式在嵌入式领域也很重要,这种方式简单可靠,有很好的可预测性,在一些安全关键的领域也得到了广泛的应用。
有一本时间触发嵌入式系统设计模(patterns for time-triggered embedded systems)的书,作者是Michael J. Pont,他在这个领域深有研究,而且有很多相关的论文发表,有兴趣的可以搜索一些他的文章进行深入的了解。作为入门,大家可以看一下时间触发嵌入式系统这本书的第11页,1.7 Time-triggered systems(一定要读)对时间触发做了入门性的介绍,讲的非常好。如果读英文有点吃力的话,可以选择读中文版。
后面两期会跟大家做两期时间触发的教程,让大家学会如何使用这种程序设计架构。8 J( q c8 V+ }! V! `
1.3 总结
本期教程是一些入门性质的介绍,有兴趣的可以查阅一下相关的资料进行深入的了解。' \7 m; \7 q+ D9 B3 G* O
% H) ^, {, |% ~3 o5 s6 |9 F2 t
参考资料:! m# ?2 Q* c5 Q3 i2 j% n) i. k3 A% K% l
1. 百度百科
2. Patterns fortime-triggered embedded systems英文版和中文版7 t% e" x$ p, M) o8 u
3. www.micrium.com
4. www.freertos.org
5. 2013嵌入式市场报告
6. stm32-stm8_embedded_software_solutions5 C* x' j( S! c6 A3 E
) l' b$ r- P; @% O2 e0 O
谢谢分享