写在前面
至少是在大陆,说到嵌入式操作系统,大多数人想到的就是ucos,要不是rtx。FreeRTOS相对少。然而,无论从收费还是源码开放程度而言,后者都要比前两者来的自由和廉价.......当然,选择什么样的操作系统,各有各的爱好,这个咱也不好说,但对我而言,我是相当喜欢FreeRTOS的,既然喜欢就要多了解它。然而,我在FreeRTOS官网看了半天,实在是晕了又晕,毕竟东西太多了(当然这也是我开心的事情,因为不是在太久之前,FreeRTOS仍然只是只有一个简单的只有 多任务机制+内存管理机制 的 操作系统内核而已,然而现在,FreeRTOS+系列,一大堆的外设,太让我兴奋了)。
于是我尝试找中文,但是大多数能见到的中文书,来来去去还是那些套路,介绍的一堆API加一些例程,仅此而已。充其量只是对那篇中文翻译的扩展而已,当然好坏不提。反正没什么营养。
直接搜雅虎,我搜到的大多数是繁体字,看起来是台湾地区的,但是我看了看,大多数也只是关于内核的,没有什么其他内容。
所以我忽然想,反正我看得晕,不如尝试把其中一些我感兴趣的部分,翻译成中文。当然我对此,诚惶诚恐,不敢做下任何保证,只能说在业余,能力之内,能做多少是多少。
在正式开始之前,我还得简单说一下我是怎么接触FreeRTOS以及我目前做到的程度(其实确实很浅,呵呵)
1.FreeRTOS作为一个操作系统选项,我们要知道的
首先,FreeRTOS当前由一家商业公司维护,它分为两个版本,其中社区版是完全免费的,遵从GPL协议。因此,你大可放心地自主,商业使用它。关于GPL这个协议以及商业使用最敏感的问题,我觉得用这样一句话大概可以很快打消你的所有所谓GPL恐惧症:除非你改动的部分涉及FreeRTOS的内核部分,如多任务机制,如动态内存管理机制,否则,你在此基础上所写的任何代码,你都无需公开。“Your code is yours.”
其次,FreeRTOS不同于ucos,有丰富的组件,它的核心功能如前所述,只是一个 多任务机制 和 内存管理机制,当然,现在有了一个 FreeRTOS+选项,于是我们有了很多相关的 TCP/IP FAT 等组件,当然对此,本人也不十分了解它们的具体细节,有待下面的翻译过程。
最后,FreeRTOS内核和具体硬件相关的操作都被层次分明的分离出来,见代码中的portable部分。此外,FreeRTOS官方、社区提供了大量的常见MCU所需的汇编、启动文件等资源支持。因此,据我个人的使用经验,大多数时候,对于简单的demo,其实你根本无需做任何额外的移植方面的努力,只需要更换相应的文件就轻松完成了。
2.如何启动你自己的FreeRTOS之路
这个没别的路,把你手上在用的或者你最熟悉最喜欢的MCU,然后去找这个相应的例程,然后去跑就是了。
这个我只能说我比较好运,我个人最喜欢的最熟悉的是STM32芯片,我通过网上找到了一个网友做好的现成的例子,所以我几乎不费什么力。所以我也没把握你的芯片会遇到什么问题。
但我觉得我可以给你几个推荐:
1.去GitHub上搜,GitHub是个神奇的存在,我靠它频频解决了很多我搜索百度中文根本解决不了的事情,比如 为Linux配置使用GNU ARM工具链找一个STM32编译的例子;
2.仔细看看 FreeRTOS官网是否提供了相应例子或者其社区interactive是否能找到。
3.实在不行,还有一招,这一般是我的最后一招,找一个现有的能找到的例子中,找一个自己比较熟悉,能承受得起的MCU,买个现成的,然后直接在上面跑例程,然后慢慢分离分析代码,好让你掌握实质上FreeRTOS相关代码是怎么调用的.......最后自己写你自己想写的MCU的DEMO呗。