参考文献:

从官网下载下来的FreeRTOS源文件包,对于每一个已经移植完成的处理器,都有一个与之对应的Demo应用程序可供参考。强烈建议新手首先从Demo开始去学习如何使用FreeRTOS.

  • 基本目录结构

针对各个处理器所做的移植,以及其对应的Demo,数目如此多的文件,全部都存放在同一个压缩文件里。这样做极大地简化了FreeRTOS的发布过程,但是面对这么多的源文件,也很可能会令新手望而生畏。其实,FreeRTOS源文件包的目录结构非常简洁,更出人意料的是,FreeRTOS实时内核仅仅只包含3个文件(如果需要用到software timerevent group or co-routine功能,则还得包含其他文件)。

解压FreeRTOS源文件包之后,可以看到两个子目录,FreeRTOS and FreeRTOS-Plus。如下图所示:

+-FreeRTOS-Plus    Contains FreeRTOS+ components and demo projects.
¦
+-FreeRTOS Contains the FreeRTOS real time kernel source
files and demo projects FreeRTOS-Plus目录里是一些组件及其Demo,而FreeRTOS目录下,又包含如下两个子目录:
FreeRTOS
¦
+-Demo Contains the demo application projects.
¦
+-Source Contains the real time kernel source code.
与内核相关的文件仅有3个,它们分别是 tasks.cqueue.c 和 list.c. 它们位于FreeRTOS/Source目录之内。在这个目录下,还包含 timers.c and croutine.c 这两个文件,它们分别实现 software timer 和 co-routine 功能。

对于每一种架构的处理器,都有与之相关的一部分RTOS代码,它们被称之为RTOS可移植层,位于FreeRTOS/Source/Portable/[compiler]/[architecture]子目录中,其中
compiler为用户所使用的编译器,architecture是指具体某一种架构。举例如下:
    • 如果用户使用的是 TriCore 1782 架构的处理器和 GCC 编译器:

那么,与 TriCore 相关的文件 (port.c),则位于 FreeRTOS/Source/Portable/GCC/TriCore_1782 目录下。 如此一来,所有 FreeRTOS/Source/Portable 目录下的子目录,除了 FreeRTOS/Source/Portable/MemMang 之外,其它的都可以一律删掉。

    • 如果用户使用的是 Renesas RX600 架构的处理器和 IAR 编译器:

那么,与 RX600 相关的文件(port.c), 则位于 FreeRTOS/Source/Portable/IAR/RX600 目录下。 如此一来,所有 FreeRTOS/Source/Portable 目录下的子目录,除了 FreeRTOS/Source/Portable/MemMang 之外,其它的都可以一律删掉。

    • 其它类似......

FreeRTOS/Source 目录树如下所示:

FreeRTOS
¦
+-Source The core FreeRTOS kernel files
¦
+-include The core FreeRTOS kernel header files
¦
+-Portable Processor specific code.
¦
+-Compiler x All the ports supported for compiler x
+-Compiler y All the ports supported for compiler y
+-MemMang The sample heap implementations

对于每一种处理器架构和编译器,FreeRTOS源文件包里都有对应的Demo应用程序。大多数Demo应用程序共用的文件,位于 FreeRTOS/Demo/Common/Minimal 目录下。(FreeRTOS/Demo/Common/Full 目录下的文件无需理会,这些文件在将FreeRTOS移植至PC时才会用到)。

FreeRTOS/Demo 目录下的其它子目录,每一个都对应某一处架构的处理器及编译器。这一点可以从其目录名可以看出来,举例如下:

    • 如果用户使用的是 Infineon TriBoard 硬件( TriCore 架构、 GCC 编译器):

那么,与 TriCore 相应的Demo应用程序则位于 FreeRTOS/Demo/TriCore_TC1782_TriBoard_GCC 目录,如此一来,所有 FreeRTOS/Demo 目录下的子目录(除开Common子目录外)都可以被忽略或删除。

    • 如果用户使用的是 RX62N RDK 硬件(Renesas RX6000 架构、 IAR 编译器):

那么,与 TriCore 相应的Demo应用程序则位于 FreeRTOS/Demo/RX600_RX62N-RDK_IAR  目录,如此一来,所有 FreeRTOS/Demo 目录下的子目录(除开Common子目录外)都可以被忽略或删除。

FreeRTOS/Demo 目录树如下所示:

FreeRTOS
¦
+-Demo
¦
+-Common The demo application files that are used by all the demos.
+-Dir x The demo application build files for port x
+-Dir y The demo application build files for port y
  • 创建你自己的应用程序

对于新手,建议首先运行相应的Demo,然后在此基础之上,逐步将Demo内的应用程序文件替换成自己的应用程序文件。

了解FreeRTOS源文件目录结构的更多相关文章

  1. buildroot 使用小记 - 2 源文件目录结构

    官方下载下来的buildroot源码包在解压后,是一个名为buildroot的文件夹,它下面的目录/文件结构如下: Makefile - 顶级makefile,编译总入口 Config.in - 顶级 ...

  2. java web目录结构

    转自:http://blog.csdn.net/javaloveiphone/article/details/7828894 Javaweb项目的源文件与字节码文件的目录结构 1.新建项目的源文件目录 ...

  3. Eclipse中一个Maven工程的目录结构

    在之前的javaSE开发中,没有很关注Eclipse工程目录下的环境,总是看见一个src就点进去新建一个包再写一个class.以后的日子中也没有机会注意到一个工程到底是怎么组织的这种问题,跟不要说自己 ...

  4. Go 项目的目录结构 及 安装技巧

    项目目录结构如何组织,一般语言都是没有规定.但 Go 语言这方面做了规定,这样可以保持一致性 1.一般的,一个 Go 项目在 GOPATH 下,会有如下三个目录: |--bin |--pkg |--s ...

  5. Android基础学习第一篇—Project目录结构

    写在前面的话: 1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对 ...

  6. Go项目的目录结构

    项目目录结构如何组织,一般语言都是没有规定.但Go语言这方面做了规定,这样可以保持一致性,做到统一.规则化比较明确. 1.一般的,一个Go项目在GOPATH下,会有如下三个目录: |--bin |-- ...

  7. Android入门(二):Android工程目录结构

    首先我们来看看Android工程的目录结构,如下图: 下面我们来看看每个文件夹都是用来做什么的? 1.src:这个不用多说,它就是保存Java源文件的目录: 2.gen:该文件夹用来保存自动生成的R. ...

  8. Android开发:程序目录结构详解

    HelloWorld程序的目录结构概述 我们可以在文件夹中看到,HelloWorld程序的目录主要包括:src文件夹.gen文件夹.Android文件夹.assets.res文件夹. AndroidM ...

  9. Eclipse JAVA项目的 目录结构 和 导入

    说明:本文所有测试以java工程为例: 1. Eclipse下的java工程目录 eclipse的基本工程目录叫做workspace,每个运行时的eclipse实例只能对应一个workspace,也就 ...

随机推荐

  1. 一道无限级分类题的 PHP 实现

    今天有网友出了道题: 给出如下的父子结构(你可以用你所用语言的类似结构来描述,第一列是父,第二列是子),将其梳理成类似如图的层次父子结构. origin = [('A112', 'A1122'), ( ...

  2. PSI and index do not match: PSI and index do not match

    解决来自:http://blog.csdn.net/huberjobs/article/details/50829603

  3. 20145220&20145209&20145309信息安全系统设计基础实验报告(2)

    20145220&20145209&20145309信息安全系统设计基础实验报告(2) 实验报告链接: http://www.cnblogs.com/zym0728/p/6083664 ...

  4. 【iOS测试】【随笔】帧率FPS评测

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5943263.html   背景 我们的新版App对首页的列 ...

  5. 微信支付开发(7) H5支付

    关键字:微信支付 微信支付v3 H5支付 wap支付 prepay_id 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv3_h5.html 本文 ...

  6. css重置reset.css

    body, h1, h2, h3, h4, h5, h6, hr, p, blockquote,dl, dt, dd, ul, ol, li,pre,form, fieldset, legend, b ...

  7. ftp应用

    ftp的基本应用: 下载easyfzs ftp,仿真模拟ftp服务器. 类库: using System; using System.Collections.Generic; using System ...

  8. SecureCRT连接VirtualBox下的ubuntu以及NMP的搭建与通过宿主机访问该NGINX服务器过程

    一直使用wamp作为开发环境,只是工作中时常会遇到在wamp下没问题但是提交到服务器生产环境会出现一些意想不到的情况,由此萌生了在本机搭建LNMP环境的想法,我个人不知道其他人的虚拟机搭建服务器环境是 ...

  9. DataList 用法详解

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DataList.aspx. ...

  10. 使用Cordova编译Android平台程序提示:Could not reserve enough space for 2097152KB object heap

    大体的意思是系统内存不够用,创建VM失败.试了网上好几种方法都不行,最后这个方法可以了: 开始->控制面板->系统->高级设置->环境变量->系统变量 新建变量: 变量名 ...