FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅

摘要:
我计划在STM32F103平台上移植和测试FreeRTOS系统。准备FreeRTOS系统源代码,//www.FreeRTOS.org/a00106.html 2。了解FreeRTOS源文件的目录结构。下载的FreeRTOS下载包是一个自解压文件。FreeRTOS Plus包含FreeRTOS+组件和演示例程;

1、必要的准备工作

工欲善其事,必先利其器,在开始学习和移植之前,相应的准备工作必不可少。所以在开始我们写要准备如下:

  • 测试环境:我准备在STM32F103平台上移植和测试FreeRTOS系统
  • 准备FreeRTOS系统源码,从官网下载最新版本的程序包,最新为v9.0.0,地址:https://sourceforge.net/projects/freertos/
  • 从官网查看FreeRTOS每个函数的API说明,以及相应的例子。根据以往的经验,在学习过程中应该会经常查看,地址: http://www.freertos.org/a00106.html

FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅第1张                    

2、了解FreeRTOS源文件的目录结构

下载的FreeRTOS下载包是一个自解压的文件,解压后包含的内容比较丰富,不过不露结构很清晰,主要包含两个子目录:FreeRTOS和FreeRTOS-Plus。如下所示:

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

 FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅第2张

我们学习的FreeRTOS内核部分在FreeRTOS目录之下,打开FreeRTOS文件夹它又被分成两个主要的子目录,如下所示:

  • Demo          包含演示例程工程;
  • Source         包含实时内核源文件。

 FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅第3张

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

打开Source文件夹,FreeRTOS/Source目录结构如下所示:

  • include        FreeRTOS内核代码头文件。
  • portable              面向特定环境的接口描述。
  • 以及前面所述的6个文件。

FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅第4张

应用平台的不同,所以每个支持的处理器架构都有一段与处理器架构相关的RTOS代码。这个是RTOS移植层,它位于FreeRTOS/Source/Portable/[相应编译器]/[相应CPU架构]子目录。

对于FreeRTOS,堆栈设计也属于移植层。FreeRTOS/Source/portable/MemMang目录下heap_x.c文件给出了多种堆栈方案,后续文章将会详细介绍堆栈操作。

如果FreeRTOS在IAR环境下移植到STM32F103平台则为需要移植FreeRTOSSourceportableIARARM_CM3目录下的文件,除此之外位于FreeRTOSSourceportableMemMang目录之下的堆栈设计文件也需要移植。其他部分则可忽略。

打开Demo文件夹,其中包含各种处理器架构和编译器的演示例程。大多数的演示例程代码对所有移植都是通用的,位于FreeRTOS/Demo/Common/Minimal目录。Demo目录下剩余的子目录包含预先配置好的工程,可以用于构建个人演示例程。子目录的命名与移植平台和编译器相关。如果我们查看在IAR环境下STM32F103平台演示工程,则可以查看FreeRTOSDemoCORTEX_STM32F103_IAR目录。

3、开启简单的快乐之旅

有了以上的了解我们现在通过Demo简单学习一下,在IAR EWARM开发环境中打开FreeRTOSDemoCORTEX_STM32F103_IAR目录下的RTOSDemo.eww工程。

 FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅第5张

该项目打开后的文件组织形式如下:

 FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅第6张

编译该工程,该Demo项目在IAR EWARM V6.4平台下编译无错误:

 FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅第7张

下载到STM32F103VET6目标MCU运行正确。至此,测试Demo项目正确。

免责声明:文章转载自《FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Gitblit搭建及Git协作开发流程使用top命令、dump文件定位问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux常见故障处理

目录 一. 文件和目录类 1.1 File exist 文件已经存在 1.2 No such file or directory 没有这个文件或目录(这个东西不存在) 1.3 command not found 命令找不到(没有这个命令) 1.4 invalid option 无效的参数(不可用的参数) 1.5 overwrite 覆盖 1.6 r...

Sersync应用与配置说明

注意:***开启过滤规则后,整体-r同步和整体同步机制无效,最好启动前先命令整体同步一次***   # 先安装扩展包源,否则inotify-tools找不到 yum install epel-release yum install inotify-tools   服务器:2台,分别标识为A,B,其中A为客户端,B为服务端,sersync安装在A机,监视...

winform程序实现自动升级

本文代码参考http://www.cnblogs.com/iyond/archive/2007/06/14/783301.html而来,只是在原有基础上做了整合,想深入理解请看原本,我只是从实现过程简单总结。 解决方案总共有3个项目:AppUpdateDemo是测试项目;AppUpdateC是自动升级的组件,这个项目编译将生成一个AppUpdateC.dl...

全文搜索技术—Solr

1.   学习计划   1. Solr的安装及配置 a)    Solr整合tomcat b)    Solr后台管理功能介绍 c)    配置中文分析器   2. 使用Solr的后台管理索引库 a)    添加文档 b)     删除文档 c)    修改文档 d)    查询文档   3. 使用SolrJ管理索引库 a)    添加文档 b)    修...

mysql备份与还原

一、备份常用操作基本命令 1、备份命令mysqldump格式    格式:mysqldump -h主机名  -P端口 -u用户名 -p密码 –database 数据库名 > 文件名.sql  2、备份MySQL数据库为带删除表的格式 备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。 mysqldump  -...

SVN提交注意点

网上看到一篇blog,发现总结得不错,共享一下 http://www.blogjava.net/sealyu/archive/2009/09/03/293717.html  一.提交之前先更新 1.         SVN更新的原则是要随时更新,随时提交。当完成了一个小功能,能够通过编译并且自己测试之后,谨慎地提交。 2.         如果在修改的期间...