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


    1、必要的准备工作

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

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

                        

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

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

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

     

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

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

     

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

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

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

    应用平台的不同,所以每个支持的处理器架构都有一段与处理器架构相关的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工程。

     

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

     

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

     

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

  • 相关阅读:
    2016奇虎360研发工程师内推笔试编程题:找镇长
    2016奇虎360研发工程师内推笔试编程题:找到字符串第一个只出现一次的字符
    lintcode: 最长无重复字符的子串
    lintcode :同构字符串
    lintcode : 跳跃游戏
    lintcode :单词搜索
    Project Euler 110:Diophantine reciprocals II 丢番图倒数II
    Project Euler 109 :Darts 飞镖
    Project Euler 108:Diophantine reciprocals I 丢番图倒数I
    Project Euler 107:Minimal network 最小网络
  • 原文地址:https://www.cnblogs.com/foxclever/p/5784295.html
Copyright © 2020-2023  润新知