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平台则为需要移植\FreeRTOS\Source\portable\IAR\ARM_CM3目录下的文件,除此之外位于\FreeRTOS\Source\portable\MemMang目录之下的堆栈设计文件也需要移植。其他部分则可忽略。

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

3、开启简单的快乐之旅

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

 

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

 

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

 

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

转载于:https://www.cnblogs.com/foxclever/p/5784295.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.1 课程内容嵌入式软件工程师的学习路线一般是:单片机、RTOS、Linux。当你掌握单片机开发后,如果要进一步提升编程水平,建议学习RTOS(Real Time Operating System,实时操作系统)。有很多优秀的RTOS,比如FreeRTOS、RT-Thread、UCOS等等。FreeRTOS使用范围最广泛,RT-Thread生态丰富,UCOS是收费的并且很少使用了。对于初学者,建议先学习FreeRTOS。只要学会了任意一款RTOS,肯定就会使用其他RTOS了。我们在2022年已经推出了“FreeRTOS快速入门”课程。为何还要重新制作“FreeRTOS入门与工程实践”?“FreeRTOS快速入门”只是讲解FreeRTOS的各类API的理论、用法、示例,这些实验是基于Keil自带的STM32F103模拟器。没有使用更多的硬件模块、不能体现工作中的实际场景。在“FreeRTOS入门与工程实践”,将引入更多的硬件模块,并展示实际工程示例中的用法。另外,基于RTOS的程序一般都比较复杂,涉及的源文件非常多,在工作中一般都基于“面向对象”的思想来写程序。所以,本课程会涉及如下内容:讲解FreeRTOS的常用API:理论、用法选择合适的硬件模块,展示这些API的实例实现合适的小项目,展示工作中的编程方法1.2 讲课方式对于每一个实验,我们会精心设计:要解决什么问题;然后讲解FreeRTOS提供的解决方法。讲解FreeRTOS的API及内部原理(不深入讲解内部源码,只是进行原理性介绍)讲解实验过程使用的模块的接口函数(只讲使用,不讲内部实现,模块的源码实现单独开课讲解)讲解原理时,配合着文档、现场画图进行讲解,跟学校老师写黑板一样最后现场从0编写程序并调试一切都是现场操作,绝对不会照着PPT念,绝对不会照着现成的代码讲解。只有现场从0操作,学员才能身临其境地学习,跟着教程:碰到问题、解决问题。1.3 硬件平台本课程基于DshanMCU-103开发套件进行开发,它由3部分组成:STM32F103C8T6的最小系统板、扩展底板、各类模块。如下图所示:  上述硬件再加一个ST-Link即可学完本课程所有内容。主板DshanMCU-103是基于STM32F103C8T6的最小系统板。之所以选择最小系统板,而不是把所有模块都放在一个整体的电路板上,目的如下:低成本尝试:嵌入式软件开发并不一定适合你,可以购买最小系统板进行体验、及时放弃按需购买:用到再买,讲究一个性价比 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值