嵌入式爱好者

查看: 8183|回复: 0

[Linux] 想学FreeRTOS实时操作系统的看过来,实用的入门教程

[复制链接]

50

主题

51

帖子

121

积分

扫一扫,手机访问本帖
发表于 2019-9-29 17:09:41 | 显示全部楼层 |阅读模式
FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。

http://www.makeru.com.cn/live/1392_198.html?s=69821

由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。



相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。



在学习FreeRTOS之前,先得了解了解它,一定要搞清楚FreeRTOS, SafeRTOS和OpenRTOS之间的关系。



先说FreeRTOS和OpenRTOS

FreeRTOS和OpenRTOS的共享相同的源码,只是 OpenRTOS 为 FreeRTOS 披上’commercial and legal wrapper”

用户从FreeRTOS更新到OpenRTOS主要有两个原因:

1.1 为了克服FreeRTOS修改版的GPL许可证限制。

1.2 为了获得额外的服务,如专业的技术支持,高质量的中间件,培训,咨询和相应的工具



FreeRTOS修改版的GPL许可证限制

修改版的GPL许可证有如下几个缺陷(There are several reasons why developers may find the FreeRTOS modified

GPL licence restrictive.)



2.1 公司可能有一个全面禁止在他们的项目中使用GPL授权的软件。

2.2 他们可能需要IP赔偿。

2.3 他们可能更愿意在他们的产品中,避免FreeRTOS的许可证要求承认他们使用FreeRTOS的。

一个OPENRTOS许可证删除了 修改后的GPL的限制,提供知识产权保障,并允许开发者保持匿名。



FreeRTOS和SafeRTOS

SafeRTOS也是基于FreeRTOS的,但是和FreeRTOS不同,被安全方面的专家做了重新设计,下面是SafeRTOS获得的安全认证

SAFERTOS was initially certified in 2007 by TüV SüD to IEC 61508-3 SIL 3, the highest level possible for a software

only component.Today SAFERTOS has grown to be a leading safety critical RTOS solution supporting a wide range of international design safety standards, including:



学习FreeRTOS前的准备工作

这里只要做好两点就可以了。

5.1, 去官网下载最新的程序包, 现在最新的版本是V9.0.0,下载地址http://sourceforge.net/projects/freertos/files/



5.2, 官网有FreeRTOS每个函数的API说明,已及相应API的例子,其实源码的.h文件里面也有大部分函数的使用例子



启动开发

FreeRTOS可以被移植到很多不同架构的处理器和编译器。每一个RTOS移植都附带一个已经配置好的演示例程,可以方便快速启动开发。更好的是,每个演示例程都附带一个说明网页,提供如何定位RTOS演示工程源代码、如何编译演示例程、如何配置硬件平台的全部信息。



演示例程说明网页还提供基本的RTOS移植细节信息,包括如何编写FreeRTOS兼容的中断服务例程,不同架构的中断处理会稍有不同。



通过下面的简单说明,可以在几分钟内运行RTOS。



1)查找相关文档页



FreeRTOS具有详细的开发说明文档,可以在其官方网站上查看。首先打开官方网站,目前的网站地址是:http://www.freertos.org。在首页左侧的导航栏中,展开"Supported Devices & Demos"菜单项,单击"OfficiallySupported Demos"链接,去查看FreeRTOS支持的微控制器制造商列表。单击微控制器制造商名称,进入具体的制造商文档页面列表。



2)获取RTOS源代码



到FreeRTOS官方网站下载源码,下载包包含RTOS内核源码和官方移植演示工程。解压缩后放到合适的目录下。



每一个RTOS移植包都附带有预先配置好的演示例程 ,已经创建好了所有必须的RTOS源文件并包含了必须的RTOS头文件。推荐在提供的演示例程的基础上进行自己的FreeRTOS应用编程。



3)FreeRTOS源码目录结构



FreeRTOS下载包中包含每个处理器移植和演示例程的源码。将所有移植包放入一个下载文件中大大简化了分类处理,但是下载包中的文件数量也多的惊人!无论如何,目录结构还是非常简单的,并且FreeRTOS实时内核仅仅只有3个文件(如果需要,还有一些附加文件,比如软件定时器、事件组以及协程)。



下载包目录包含两个子目录:FreeRTOS和FreeRTOS-Plus。如下所示:

· FreeRTOS-Plus 包含FreeRTOS+组件和演示例程;

· FreeRTOS 包含FreeRTOS实时内核源文件和演示例程。



FreeRTOS-Plus目录树包含多个自述文件(Readme)。接下来本文只描述FreeRTOS内核的核心源文件和演示例程,它们又被分成两个主要的子目录,如下所示:



RTOS代码的核心包含在三个文件中:tasks.c、queue.c、list.c。这三个文件位于FreeRTOS/Source目录。在该目录下还包含三个可选的文件:timers.c、event_groups.c、croutine.c,分别实现软件定时、事件组和协程功能。FreeRTOS/Source目录结构如下所示:



每个支持的处理器架构需要一小段与处理器架构相关的RTOS代码。这个是RTOS移植层,它位于FreeRTOS/Source/Portable/[相应编译器]/[相应CPU架构]子目录。



对于FreeRTOS,堆栈设计也属于移植层。



FreeRTOS/Source/portable/MemMang目录下heap_x.c文件给出了多种堆栈方案,后续文章将会详细介绍堆栈操作。



移植层目录举例:

· 如果在GCC编译器下使用TriCore1782:TriCore特定文件(port.c)位于FreeRTOS/Source/Portable/GCC/TriCore_1782目录下。FreeRTOS/Source/Portable 子目录下的所有文件,除了FreeRTOS/Source/Portable/MemMang目录外都可以忽略或删除。

· 如果在IAR编译器下使用Renesas RX600:RX600特定文件(port.c)位于FreeRTOS/Source/Portable/IAR/RX600目录下。FreeRTOS/Source/Portable 子目录下的所有文件,除了FreeRTOS/Source/Portable/MemMang目录外都可以忽略或删除。



FreeRTOS下载包中还包含各种处理器架构和编译器的演示例程。大多数的演示例程代码对所有移植都是通用的,位于FreeRTOS/Demo/Common/Minimal目录。FreeRTOS/Demo/Common/Full目录下的是历史遗留代码,仅用于PC。

FreeRTOS/Demo目录结构如下所示:



FreeRTOS/Demo目录下剩余的子目录包含预先配置好的工程,可以用于构建个人演示例程。子目录的命名与移植平台和编译器相关。每一个RTOS移植包都有自己的说明文档。



演示例程目录举例:



· 如果以英飞凌TriBoard开发板硬件构建TriCoreGCC演示例程:TriCore演示例程工程文件位于FreeRTOS/Demo/TriCore_TC1782_TriBoard_GCC目录。目录FreeRTOS/Demo下的所有子目录(Common目录除外)都可以忽略或删掉。



· 如果以RX62N硬件构建Renesas RX600 IAR演示例程:IAR工程文件位于FreeRTOS/Demo/RX600_RX62N-RDK_IAR目录。目录FreeRTOS/Demo下的所有子目录(Common目录除外)都可以忽略或删掉。



4)编译工程

根据上一节FreeRTOS源码目录结构说明的RTOS演示工程的所在的位置,打开并编译演示工程。



5)运行演示例程

演示例程附带的说明网页会介绍如何配置硬件、下载程序和执行演示例程。说明网页还会提供演示例程的功能信息,这样你就可以判断演示例程执行是否正确。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-5-8 17:49

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表