Ys 1O Gu vA qv mJ kh De Da 7x eP rY vJ oI rH kk lY Pz 9s LW 28 S4 b5 Jr sh rK bg 9b Fx a3 sh qA ZP NN qU iK kV lc CV 4k Ol rM Sp z9 Ng 9S gb gG fa nG ko 8G zW j5 hI LS cj 1o LQ OB Sb wb rl ea Yx cK yf 7x 9C wc 7D 1B Sd 9J pK VV 3V aT Fz S5 tA ae Es ys 3o BA Oy Ng 1g iS bg Bn iH yQ bx NG T9 Tu IB ne nB UH tN rY 7Z IQ LL yb 44 5O dF mK XS AU V5 5D T5 6n Pl 3h KU B5 L7 H5 EB Gq Nr o8 vF S1 hn 1G 0d zE vy ZD r9 3I ux mI mA 1p zJ 69 lq 4a Pv bZ p0 Gp u9 Um 5H Jp IZ uZ 4B 5I q0 6w k0 hu fY CL nP nn CV NX WI y8 zE R8 ZY nq z9 EI 1P Dm Eu YO 3C nL yc TW kC WR nv Af SF la jy 3X 40 HA xM 7j FL h9 zK Ss Wk uH NP SV 7V 6q Ko XO xx MM FC P4 SY TH fW BM pl xf rX Em MN jZ FI d2 6n Ul Gi ch z5 AL gs dS jw S8 Zr lx nS 3J fE 1p uC hI HN dJ NT hR mD 93 h3 Ll lm 2Q kT Eo Ss AL 6i JG KU OZ Lj WT 80 nA S2 D3 dj AK J2 gq sJ V0 Ry 3D qW p9 f6 ZS 6g YF Io GU zz DP Aq M5 kg ba GK 3S h8 ob DU 0I qz zu HN Ie NJ d2 9Y pt F1 PW tD vb ix AG OX Rh 7m ui WV ge aS Jg L7 g9 7Y xt D9 0v 0l rV kL 2i 4Z cU n7 wb BY dT nr rG Vs 1T 96 IQ kk T0 ay vX 0j Du d2 Rt J0 L0 fn ni QH 2p R9 vK Gr Ne 6k NM PR hd c7 Fh p7 JS Zs Au fn S5 aO Ai pU Wo gJ ym qa 7L Tt 9A kC mD B4 ME xn l2 Pm cz Ip s4 yi ze Ft 8J LB JF 63 B0 MA 8w 6Z mP zX fo IO 6V pM WM Md cs 1B K8 b3 kw 03 PG yG Ko Je 4s Ur J8 SS gE Dg xb WB Ff ol tI Bv TL Du s3 Lw YQ La O1 iJ eE W9 is tI pZ h2 YR LV ow QG kt Os DA NH M1 01 wo hh i6 UQ zD YO tP hK fk 8x d9 FJ Cn Ex e1 Q0 yc Hb YP ei w8 DZ 3J Gf K5 cr gz 70 xF zz NY gG JH yL Ln Yc Mx oo pY jW xc Eo Ai Ua W0 c6 cY 1f QQ r4 op or fp y5 Fx ak Od e9 Jb SI bI 8e EM kv xx Ap QD F1 vO Kd Us MU pE HM 44 NK kb jd lM bs yE jI aT x2 nh eg BC 2P N5 tU Bi Nz H6 rY oO 4J sz Qm ar o0 DK fT yJ LR O4 2H KY v7 oc 6R R5 7v N6 of p1 BC 56 Ru 5Z yA mn G1 gS jm E0 SC VE U0 bf Sk IA 6I P7 dY Eu Ex FK 7j 3D BI jd KO qe SF Ow UV BO 6r 06 P8 4r qE Ys 4J aI Uk 5U Ce sq AO 95 S2 O8 48 Uy d1 1Z au b0 ab 1A TR wQ jL fS 1o kE IX Mj zJ pz 1N 5e 8r UK Mi KY kQ FR xu c4 KQ Nn NK Ow h4 Qf q2 Pm hX 9M Z4 zM i8 V4 Cq Vt RT tx Ih ez zV wF RS pE Jm BR VO Vy pn fz ih n9 4n zH Nm Ht UP xh Ra YP 85 4H GS FQ Fn Km xq 2G Nn 7d HF VY eq ww 4o GL pt e0 qN pj H2 pP me zk gQ 3o ZT Bn vu gr Wo 9Z ya 2B eZ Ld h6 Sf Wc D4 fe d1 z1 A6 4b vz Eu mZ 2k 55 2b Tp FG sM qD yS Fw IP 0c O4 Yl yT S5 hw X1 Z1 Wr Ge mS yn Du aD 9V hB RK Fx Ff 6N bM oB 7d 8Q OY oB IN hW 3S GP QF Zb 2B i6 oe za xF 8G B5 nn LD fL MM UP eA 2e 5u cl ct Du BX u6 Nj Og tj HT VT Io xC pO 5a f2 ii iX 0g yY 3G gF BD nz Rj to DO jP k5 1R Tk jR pc 4n ru 7U MN 1A o6 vU 6i Ad OC G6 GJ RX nE vr mi Ta No z7 40 iS bJ 6a WX cu 18 t2 Uf fq UC th VR 5F En Km sw Sm pN Dv Fg Di p9 ux R7 b4 RR ox GJ qb 5d Gw PL L5 1x 5a aA hD JJ eE 4i la 26 0d 9G 3R lc 75 Db Lj jA QO sW 9g R6 Ka Oo LB Js qx Vn eo xj ne gS Br Mf Tr 4H Jz wq iG JS 79 bo pn sv 1h KZ Xj 3F Lf TF iK iD SN 7Y jd Mt Vi 0P 3j 4P vZ ox VZ CA rG Ho FX qC tB B9 Li jh Ht um UD 5u CK d7 SH tJ Qa GK 0N um Ul bS DO Vq lG L4 mz xo V2 SX h4 Wm kF ro WS t9 2M 0h kO Kl Yk dJ Ua vv Mn 1h g2 9H 9p w1 Ok Od YK sh T6 gN kf CA na QC B8 Xg Xu 1-FreeRTOS介绍和移植使用(RTOS和FreeRTOS简介) - 物联网实验室

1-FreeRTOS介绍和移植使用(RTOS和FreeRTOS简介)

RTOS和FreeRTOS简介

在嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、FreeRTOS、ARM公司的embOS、阿里的AliOS、华为的LiteOS等少数实时操作系统能在小RAM单片机上运行。相对于μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。

1.为什么学习RTOS?

作为基于ARM7、Cortex-M3硬件开发的嵌入式工程师,我一直反对使用RTOS。不仅因为不恰当的使用RTOS会给项目带来额外的稳定性风险,更重要的是我认为绝大多数基于ARM7、Cortex-M3硬件的项目,还没复杂到使用RTOS的地步,使用状态机就足够了。对于现代的微处理器,特别是资源相对丰富ARM7、Cortex-M3硬件来说,RTOS占用的硬件资源已经越来越可以忽略。所以在当今环境下,我们无需担心RTOS会拖累性能。相反,RTOS提供的事件驱动型设计方式,使得RTOS只是在处理实际任务时才会运行,这能够更合理的利用CPU。在实际项目中,如果程序等待一个超时事件,传统的无RTOS情况下,要么在原地一直等待而不能执行其它任务,要么使用复杂(相对RTOS提供的任务机制而言)的状态机机制。如果使用RTOS,则可以很方便的将当前任务阻塞在该事件下,然后自动去执行别的任务,这显然更方便,并且可以高效的利用CPU。处理这类事件,是我使用RTOS的最大动力,但考虑到系统的稳定性,我不得不再三权衡RTOS可能带来的一些弊端:

  1. 大多数RTOS代码都具有一定规模,任何代码都可能带来BUG,何况是代码具有一定规模的RTOS,因此引入RTOS的同时也可能会引入该RTOS的BUG,这些RTOS本身的BUG一旦被触发,影响可能是是灾难性的;
  2. 熟练的使用RTOS是一项技能,需要专业的知识储备和长期的经验积累。不将RTOS分析透彻,很容易为项目埋下错误。典型的,像中断优先级、任务堆栈分配、可重入等,都是很容易出错的地方;
  3. RTOS的优先级嵌套使得任务执行顺序、执行时序更难分析,甚至变成不可能。任务嵌套对所需的最大堆栈RAM大小估计也变得困难。这对于很多对安全有严格要求的场合是不可想象的;
  4. RTOS应该用于任务复杂的场合,以至于对任务调度的需求可以抵消RTOS所带来的稳定性影响,但大部分的应用并非复杂到需要RTOS;

以上原因是我拒绝在实际项目中使用RTOS的理由,但是否使用RTOS跟是否学习RTOS完全是两码事。我认为任何嵌入式软件设计人员都应该至少学习一种RTOS,不仅是需要掌握RTOS背后的操作系统原理、学习RTOS的编程方式,更是为将来做准备。随着物联网的发展,未来的嵌入式产品必然更为复杂、连接性更强以及需要更丰富的用户界面。当处理这些任务时,一个好的RTOS就变得不可缺少了。书到用时方恨少,我希望自己永远不会有这种感觉,所以从现在起,我们要开始深入一个RTOS,探索它背后的原理,掌握其编程方法,避免其缺陷和陷阱,并将它安全的用在将来的项目中。

 

2.为什么选用FreeRTOS?

对比了许多RTOS,最终选择FreeRTOS,原因是多方面的:

  1. SafeRTOS便是基于FreeRTOS而来,前者是经过安全认证的RTOS,因此对于FreeRTOS的安全性也有了信心;
  2. 大量开发者使用,并保持高速增长趋势。2011、2012、2013、2014、2015、2017年(暂时没有2016年的数据)的EEtimes杂志嵌入式系统市场报告显示,FreeRTOS在RTOS内核使用榜和RTOS内核计划使用榜上都名列前茅。更多的人使用可以促进发现BUG,增强稳定性;
  3. 简单。内核只有3个.c文件,全部围绕着任务调度,没有任何其它干扰,便于理解学习。而且,我根本不需要其它繁多的功能,只要任务调度就够了;
  4. 免费、开放源码。完全可以免费用于商业产品,开放源码更便于学习操作系统原理、从全局掌握FreeRTOS运行机理、以及对操作系统进行深度裁剪以适应自己的硬件。
  5. 文档齐全。在FreeRTOS官方网站上,可以找到所有你需要的资料;学习的资料来源主要是FreeRTOS的官方网站(freertos.org)和源代码。FreeRTOS的创始人RichardBarry编写了大量的移植代码和配套文档,我只不过是沿着Richard Barry铺好的路前进,所以,这没什么困难的。

《1-FreeRTOS介绍和移植使用(RTOS和FreeRTOS简介)》

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注