FreeRTOS学习教程(一)
layout: post
title: FreeRTOS学习教程(一)
description: FreeRTOS简介。
categories:
- FreeRTOS
tags: FreeRTOS
提到FreeRTOS,大家的第一反应是,为什么会去学FreeRTOS,FreeRTOS有哪些优缺点,这篇文章会从零开始带领大家进入FreeRTOS的世界,这也是我验证自身所学的一个过程。
RTOS简介
RTOS全称为real-time-operate-sysyem,以为实时操作系统,很多软件都能够在不是用RTOS的情况下编写好,但是在实时性和复杂情况下,RTOS有得天独厚的优势。大致总结一下RTOS相对于普通的嵌入式程序的优势
实时性是RTOS最大的特征,这里可以借用维基百科上的一段对实时性的描述:
实时运算(Real-time computing)是计算机科学中对受到“实时约束”的计算机硬件和计算机软件系统的研究,实时约束像是从事件发生到系统回应之间的最长时间限制。实时程序必须保证在严格的时间限制内响应。
总的来说,所有的实时操作系统都会包含一个实时任务调度器,而RTOS中的任务调度器相对于其他操作系统来说,最大的不同就是RTOS是强调 按照任务优先级来分配CPU时间,并且时间片的轮转不是实时调度器的一个必选项。
为什么选择RTOS
其实我接触RTOS的时间并不长,在大学的编程中,大多数还是使用中断来做逻辑判断,因为M3甚至是M4内核的32芯片,中断数往往能达到十个以上,能够处理非常多的逻辑和任务,即使任务堵塞,也可以通过改变标志位等方法让MCU去做一些别的任务。
虽然我并不喜欢RTOS,但是这并不妨碍我学习RTOS,在逻辑判断简单,流程不多的情况下,我更倾向于使用中断。但是考虑到实时系统在处理任务中任务阻塞时可以自动去执行其他任务,并且实时系统稳定性相对较高,这使我不得不再三权衡
1.RTOS由于引入了一定规模的代码,这种引入的代码稳定性是未知的,特别是引入我不熟悉的任务系统,如果出现BUG,我认为这样的BUG往往是毁灭性,并且不容易被发现的。
2.RTOS是一项技能,要想熟练的使用RTOS需要不断地学习,不断地积累经验,并且需要透彻理解RTOS内核以及实现方式,这样在面对问题时才能有效得找到解决方案
3.RTOS应该用于任务复杂的场合,以至于对任务调度的需求可以抵消RTOS所带来的稳定性影响,但大部分的应用并非复杂到需要RTOS
总得来说RTOS的学习是一个长期的过程,虽然如今的大多数程序并不需要RTOS来完成,但是在物联网发展越来越迅速的今天,未来的产品一定会更加复杂、更多的功能、以及会有更加丰富的用户界面。
书到用时方恨少,我希望我永远不会发出这样的感慨,这也是我学习RTOS的原因之一,深入的了解并学习一个RTOS,探索和掌握其中的原理,我相信以后会有用得少的一天。
为什么是FreeRTOS
我看了很多关于RTOS的文章,最终的选择了FreeRTOS,原因有四
1.免费。
2.用户群体极大,相对来说安全性和稳定性一定不差。
3.简单,整个操作系统同只有4个文件,全部围绕任务调度,没有任何其他的干扰,更加便于初学者理解和学习。
4.文档齐全,在官网或是一些论坛以及博客网站上,可以很轻松的找到所有的学习资料。