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

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

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

1.查找相关文档页

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

2.获取RTOS源代码

到FreeRTOS官方网站下载源码,下载包包含RTOS内核源码和官方移植演示工程。解压缩后放到合适的目录下。(如果你不想访问慢吞吞的国外网站,我在CSDN做了一个镜像,可以 点击此处 ,这篇文章中有最新的大部分FreeRTOS源码包下载链接)

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

3.FreeRTOS源码目录结构

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

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

  • FreeRTOS-Plus          包含FreeRTOS+组件和演示例程;
  • FreeRTOS                   包含FreeRTOS实时内核源文件和演示例程。

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

[cpp] view plaincopy print?
  1. FreeRTOS
  2. |+-- Demo     包含演示例程工程;
  3. |+-- Source   包含实时内核源文件。
    FreeRTOS|+-- Demo     包含演示例程工程;|+-- Source   包含实时内核源文件。

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

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

[cpp] view plaincopy print?
  1. FreeRTOS
  2. | +-- Source  FreeRTOS内核代码文件
  3. |   |+-- include          FreeRTOS内核代码头文件
  4. |   |+-- Portable         处理器特定代码
  5. |   |  |+--Compiler x     支持编译器x的所有移植包
  6. |   |  |+--Compiler y     支持编译器y的所有移植包
  7. |   |  |+--MemMang        内存堆实现范例
    FreeRTOS| +-- Source  FreeRTOS内核代码文件|   |+-- include          FreeRTOS内核代码头文件|   |+-- Portable         处理器特定代码|   |  |+--Compiler x     支持编译器x的所有移植包|   |  |+--Compiler y     支持编译器y的所有移植包|   |  |+--MemMang        内存堆实现范例

每个支持的处理器架构需要一小段与处理器架构相关的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目录结构如下所示:

[cpp] view plaincopy print?
  1. FreeRTOS
  2. |+-- Demo
  3. |  |+-- Common          所有例程都可以使用的演示例程文件
  4. |  |+-- Dir x           用于x平台的演示例程工程文件
  5. |  |+-- Dir y           用于y平台的演示例程工程文件
    FreeRTOS|+-- Demo|  |+-- Common          所有例程都可以使用的演示例程文件|  |+-- Dir x           用于x平台的演示例程工程文件|  |+-- Dir y           用于y平台的演示例程工程文件

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.运行演示例程

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

FreeRTOS系列第2篇---FreeRTOS入门指南相关推荐

  1. FreeRTOS系列第19篇---FreeRTOS信号量

    来自:http://blog.csdn.net/zhzht19861011/article/details/50835613 本文介绍信号量的基础知识,详细源码分析见<FreeRTOS高级篇6- ...

  2. Electron系列教程——第一篇:入门

    Electron系列教程--第一篇:入门 一.楔子 想要学习Electron,跟着官网或者中文网,仔细阅读,并实践,其实是够了,不必要重复.那为什么还要写这个系列呢?大概有两方面原因,其一:我使用el ...

  3. Win32编程API 基础篇 -- 1.入门指南 根据英文教程翻译

    入门指南 本教程是关于什么的 本教程的目的是向你介绍使用win32 API编写程序的基础知识(和通用的写法).使用的语言是C,但大多数C++编译器也能成功编译,事实上,教程中的绝大多数内容都适用于任何 ...

  4. FreeRTOS系列第1篇---为什么选择FreeRTOS?

    1.为什么学习RTOS? 作为基于ARM7.Cortex-M3硬件开发的嵌入式工程师,我一直反对使用RTOS.不仅因为不恰当的使用RTOS会给项目带来额外的稳定性风险,更重要的是我认为绝大多数基于AR ...

  5. FreeRTOS系列第7篇---Cortex-M内核使用FreeRTOS特别注意事项

    在阅读本文之前,有两个定义在FreeRTOSConfig.h中的宏,你必须先明白它们是什么意思,<FreeRTOS内核配置说明>一文中,讲解了这两个宏: configKERNEL_INTE ...

  6. cyq.data mysql_CYQ.Data 数据框架 使用篇一 入门指南

    原文链接:http://www.cyqdata.com/cyqdata/article-detail-411 本文针对V5版本进行修改于(2016-07-04) 下面是使用步骤: 一:下载框架DLL[ ...

  7. Unity3D Shader入门指南(二)

    关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...

  8. 猫都能学会的Unity3D Shader入门指南(二)

    关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...

  9. 立体视觉入门指南(4):相机标定之DLT直接线性变换【建议收藏】

    亲爱的同学们,我们的世界是3D世界,我们的双眼能够观测三维信息,帮助我们感知距离,导航避障,从而翱翔于天地之间.而当今世界是智能化的世界,我们的科学家们探索各种机器智能技术,让机器能够拥有人类的三维感 ...

最新文章

  1. 杨元庆:兔子要变成狼靠的是体制的激励
  2. 阿里巴巴电商平台架构演变之路
  3. L1-045. 宇宙无敌大招呼
  4. 计算机与人力资源管理论文,计算机专业毕业论文-人力资源管理系统的研究与实现...
  5. lfcp——PB使用
  6. Java程序优化的一些最佳实践
  7. ACdream 1417 Numbers
  8. MATLAB_R2018b安装教程
  9. 专题讲座3 数论+博弈论 学习心得
  10. 汽车中控语音导航服务器繁忙,交警大队智能语音导航系统解决方案
  11. 金仓数据库KingbaseES客户端连接问题
  12. 区块链技术应用与安全发展
  13. Unity tolua 常用方法
  14. 转载maven版本更新
  15. CATIA CAA二次开发专题(十)---迷宫中穿行(终结篇)
  16. 怎么用python下载视频_使用Python从直接URL下载视频
  17. 华为游戏小程序快应用账号登录6004报错集合
  18. 【karle 笔记】无法通过Windows功能控制面板自动安装或卸载Windows Server 角色和功能。
  19. MySql 指定某一字段排在前面
  20. STM32的中断优先级详解

热门文章

  1. python打开figure对象_Python ——绘图 plt.figure()的使用
  2. ubuntu执行编译好的文件显示文件不存在_嵌入式开发 | 什么是交叉编译(CROSS_COMPILE)...
  3. wxpython是什么_请问wxpython中 event传递的什么参数?
  4. JAVA实现服务器间拷贝文件,寻找在Java服务器之间传输大文件的好方法
  5. 百度地图软件测试,使用 app-inspector 解析 i 调用百度地图定位的页面时 (iOS),会导致测试 app 崩溃...
  6. 2000年华中科技大学计算机研究生机试真题 对称矩阵
  7. [转]Android输入法框的梳理
  8. android组件通讯 Intent-Action属性
  9. SQL Server 2005查询处理结构-用户模式计划(UMS)
  10. Web 标准实践系列(一)——Google 的首页