目前市面上的单片机操作系统很多,为何FreeRTOS会这么抢眼

随着嵌入式开发的认知度越来越高,从事这个专业或者以此为爱好的朋友也是越来越多,当在裸机开发的过程中遇到任务比较多,难以处理的时候,难免就会想到使用操作系统,目前市面上的单片机操作系统很多,其中有一个比较抢眼的就是FreeRTOS,这个系统是完全开源的一个操作系统,所以使用的话没有侵权的问题,而且可查阅的资料也很丰富,因此使用群体也是很大的一个数目,我们可以看一个2017年的数据,因为找了好久也没有找到最新的数据

FreeRTOS是仅次于linux的操作系统,市场占比还是很不错的,估计最近两三年应该也不错,毕竟开源的东西,没有侵权问题,没有费用问题,对于国内的很多个人开发者来说还是相当友好的。

今天我们就一步一步的教大家如何移植一个简单的FreeRTOS例程!

FreeRTOS系统源码下载

第一步我们需要做的就是到官网去下载最新版本的FreeRTOS源码,这是我们移植的时候需要的,官网地址我给大家放这里了,可以直接点击进入哦

FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensionswww.freertos.org/

进入首页就可以看到下载的引导

不过,这是个国外的网站,访问起来可能会较慢,下载更是需要耗费不少的时间

目前官网提供的最新的版本是v10.4.1的,最好可以下载到最新的版本

FreeRTOS系统源码所包含的内容

下载压缩包之后打开,里面主要包含以下的这些内容

前面的两个文件夹是主要包含源码的文件夹,而第二个带有plus字样的这个文件夹,主要是基于第一个文件夹内容的一些扩展,可以看一下内容

这个我们暂时使用不到,在初期我们主要的是使用第一个文件夹下的内容

在打开“FreeRTOS”文件夹之后分为这几个文件夹

demo文件夹,顾名思义,包含的是一些可以参考的例程,FreeRTOS提供的例程真心不错,包含各个工具链的,比如keil、eclipse等,包含各个不同的芯片的,基本上市面上主流的芯片在他们提供的demo里都可以找到。这个文件夹的主要作用就是给我们提供实例,教给我们如何使用,有很大的参考价值

source文件夹内存放的就是FreeRTOS的核心代码了,也是我们在待会说例程移植的时候重点用到的部分,打开这个文件夹,包含以下部分内容

include文件夹内包含所有的头文件,portable文件夹下包含的是和芯片接口相关的东西,我们打开这个文件夹之后可以看到,里面是进一步层级的芯片分类文件夹

每个文件夹内包含的是一类芯片的接口文件

然后,最外层的这个七个源文件是FreeRTOS的核心代码,主要是操作内核的作用

以上就是FreeRTOS系统的主要文件构成,下面我们就来看一下如何移植一个简单的例程

如何移植一个例程

在操作这个之前,最好具备的前提:

第一、有一定的裸机开发经验,做过裸机开发的例程;

第二、会使用keil开发工具,这一讲我们是基于keil的,后续我们会讲述基于eclipse的

第三、手头有一个可以使用的开发板,以验证例程的正确性;

我们这里是基于一个裸机例程的,这样会省去裸机当中需要很多基础操作,这个不重要,如果你有裸机开发的经验的话,自己先新建一个就好了,毕竟这个不是太难,而用裸机原有例程的目的就是为了方面验证移植的正确性。

下面我们就正式开始:

第一步:将FreeRTOS的源码copy到我们的项目目录下,然后对系统做一下简单的剪裁,因为原有的系统体积有点大,我们尽量的缩小系统的体量,在”portable“文件夹下只需要留下三个重要的文件夹即可,当然这个不是随便留的,是和你使用的开发板有直接关系的,我使用的是STM32的板子,所以使用的是ARM内核,因此我留下的是以下三个,第二个内存管理是一样的,都需要,第一个也都需要,第三个就是根据内核型号做选择了;

第二步:使用keil打开我们准备好的基础例程,打开之后先编译一下,确保原有的环境配置以及源码没有问题,然后再进行下一步操作;

第三步:打开“Manage Project Items"操作卡,新建两个分组,如下

从这个命名上,大家应该可以猜到一个是用来存放核心代码的,一个是用来存放芯片的接口代码的,新建好之后,把相应的源文件添加到分组内

这个是核心代码需要添加的源文件,就是在上一小结中我们提到的,没有被分配到文件夹下的核心代码。

第二个文件分组就要注意了,这个需要根据你使用的开发板进行选择,首先要选择一个内存管理下的源文件,这里是在”MemMang“这个文件夹下,这里共有五个源文件

其对应的就是五种不同的内存管理方法,所达到的目的都是一样的,也各有优缺点,我们这里就先使用第四个,以后我们会详细的讲解不同的内存管理的优缺点。

然后,我们需要在选择一个port的源文件,我们使用的是STM32的芯片,内核是M3的,所以我们需要使用的是RVDS下的ARM-CM3文件夹下的port.c文件,添加之后的效果如下

第四步:添加包含头文件,我们之前说到的系统源码还有一个专门的头文件文件夹,还有RVDS下也有头文件,需要把这些头文件路径做一下包含,如下

第五步:移植一个FreeRTOSConfig.h的头文件,这个可以到demo工程中去找,每一个工程中都有这个文件,这是一个系统配置的文件,会使能一些系统的操作以及开启一些系统API函数等,这个部分涉及的内容比较多,需要单独去讲,所以这里建议先从demo中移植一个过来所使用,后续再慢慢理解;

第六步:编译调试,理论上来说,到这里你就可以编译你的移植工程了,有可能你编译会报错,如果报错的话就要根据报错内容去修改,一般到这一步出错都是可以通过更改FreeRTOSConfig内的配置解决的,当你解决完之后,编译通过,到此并不代表你成功的移植了,你还需要通过功能来验证;

第七步:在主函数实现功能,使用操作系统做功能,就需要建立task了,我们可以在主函数建立两个简单的task做一下验证,这里附上简单的例程代码,仅供参阅

首先定义变量函数

主函数内创建任务

实现两个任务的任务函数

非常简单的例程功能,就是为了验证移植是否成功。

第八步:编写玩主函数之后,就可以再次编译了,编译成功之后,下载到你的开发板,测试例程是否按照设计的功能运行。

备注:功能的实现是基于你的基础例程的,这里没有提及,需要特别注意;主函数关于创建任务又是另一部分话题,这里没有展开去说,在后续的其他文章中会继续说明,展开的话,此篇内容篇幅太大,不利于阅读。

到此,一个简单的例程移植结束!

小结:主要从宏观上了解一下一个FreeRTOS的例程是什么样的,然后自己去实现一个简单的例程,系统涉及的内容面还是比较广泛的,很难一篇文章都提及,我们会在后续的文章中逐步的给大家展开。

目前市面上的单片机操作系统很多,为何FreeRTOS会这么抢眼相关推荐

  1. 企业电子名片小程序哪家?市面上哪一款名片小程序更好用?

    市面上名片小程序很多,但是选择一款真正好用的功能强大的小程序名片就不是很多, 推荐你看看开利网络的链企来名片功能,不但具有人物的基础信息,还有云展厅可以上传企业信息展示企业,链接打通了活动,展会,峰会 ...

  2. 市面上开源项目这么多,别无脑上,需谨慎行事

    市面上开源项目这么多,别无脑上,需谨慎行事 本次分享使用开源软件的几点注意事项. 开源软件没处不在,有潜力帮助企业加快开发和提高软件质量.但假如不谨慎行事,它们可能是一个挑战. 下面是五个成功利用开源 ...

  3. 市面上常见的TCP/IP以太网一卡通设备硬件产品电路拆解分析

    从业十多年了,经常听到业务员抱怨单丢是因为别家产品与我们相同,当问到为什么客户选择别家产品时,业务员一般也总是会说:"都是一样的产品,别家的便宜几十块嘛.",当问及怎么会是一样的呢 ...

  4. 市面上的数学规划求解器都有哪些?

    运筹学从形成到发展,在此过程中积累的大量理论和方法在国防.能源.制造.交通.金融.通信等各个领域发挥着越来越重要的作用.我们在生产生活中遇到的很多实际问题,都可以通过运筹学所涉及的优化方法对其进行数学 ...

  5. 【Linux】结合当前软件工程技术的背景,评价当前市面上流行的操作系统的局限性

    [Linux]结合当前软件工程技术的背景,评价当前市面上流行的操作系统的局限性 要求 一.根据调研结果,说出当前流行的操作系统 二.分别说出上题中每种操作系统的应用场景都有哪些 三.结合题目一中的操作 ...

  6. 市面上常见的视频会议产品有哪些

    市面上常见的视频会议产品有哪些 提起视频会议,大家并不陌生.从动辄几万一套的终端设备,到千元包年的网络付费软件,视频会议产品五花八门.本文帮大家梳理市面上常见的视频会议产品,希望能该大家一定的参考. ...

  7. 计算机专业的书普遍都这么贵,Github上的计算机电子书很多~~~

    Github上编程书资源很多,你可以根据类型和语言去搜索.推荐几个热门的: free-programming-books-zh_CN:58K 星的GitHub,编程语言.WEB.函数.大数据.操作系统 ...

  8. cvc降噪和主动降噪_市面上的降噪耳机,物理降噪和主动降噪,你会怎么选择?...

    随着3.5mm耳机插孔的取消,市面上的无线耳机开始多了起来,其中各式各样的功能以及用法让人眼花缭乱,因此在挑选的时候也不知从何下手!现在降噪耳机也随之流行开来,其中就有着物理降噪和主动降噪,不知道你们 ...

  9. 3d展示网页开发_超实用:一篇文章带你了解市面上主流通用的3D模型格式

    说到格式,相信大家都不陌生. 随着互联网的普及,我们几乎每天都会和不同的格式打交道,文本的TXT.图片的JPG.视频的MP4,就连压缩包也有不同的格式. 通俗来说,你可以把"格式" ...

最新文章

  1. 经历一次真实的XSS跨站攻击以及应付之策
  2. guice google_与Google Guice的动手实践
  3. 人体上身各部位图_【肝货】画好人体结构,你还需要了解这些
  4. GLSL着色语言学习。橙皮书第一个例子GLSL+OpenTK+F#的实现。
  5. C# 按部门拆分excel文件
  6. O-R mapping工具
  7. 第39级台阶(暴力搜索)
  8. 在Grails战争中添加“精简” Groovy Web控制台
  9. Windows下编写的脚本无法运行?
  10. 2005年1月-2008年10月雅思A类(学术类)作文 TASK 2 考题汇总(10月4日更新)
  11. 克隆PDB数据库操作
  12. 北京思科CCNP和思科 CCIE考试常见问题GRE虚拟专用网络详解
  13. 【计网CRC】模2除法求冗余码
  14. 使用STM32进行Flash地址空间的数据读取
  15. FFmpeg入门详解之114:DirectShow读取摄像头数据
  16. java多边形合并_geotools实现多边形的合并缓冲区
  17. 电子学会图形化scratch编程等级考试二级真题答案解析(选择题)2020-9A卷
  18. UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 的解决方法
  19. SQL学习笔记(三): 视图与一些复杂查询(虽复杂但常用)
  20. Opencv学习笔记1:安装opencv和VS2015并进行环境配置

热门文章

  1. 直播可以使用 https 了,快来试试吧
  2. Python调用腾讯优图进行人脸检测分析,并可视化
  3. 如何禁用计算机开放的端口,关闭端口命令,教您如何关闭电脑80端口
  4. ​MS2106 CVBS转USB视频和音频处理器芯片​
  5. 华为平板能装鸿蒙,首发鸿蒙系统!华为MatePad采用骁龙、麒麟双芯片版本,哪款更香?...
  6. airpods一只听的见一只听不见
  7. 五年级上学期计算机教案,最新2015苏教版小学信息技术五年级第一学期教案
  8. 数三角形 (组合数学+分类讨论)
  9. 简要了解一下什么是操作系统
  10. 多彩热气球动画教育教学PPT模板