freertos源码详解与应用开发 pdf_FreeRTOS移植

前言

我为什么会写移植呢,因为是公众号有一个兄弟想要我写一份移植的教程,所以应它要求我就写了一篇。

准备

在移植之前,我们首先要获取到FreeRTOS的官方的源码包。这里我们提供两个下载链接:

一个是官网:http://www.freertos.org/
另外一个是代码托管网站:https://sourceforge.net/projects/freertos/files/FreeRTOS/

打开网站链接之后,我们选择FreeRTOS的最新版本V9.0.0(2016年),尽管现在FreeRTOS的版本已经更新到V10.0.1了,但是我们还是选择V9.0.0,因为内核很稳定,并且网上资料很多,因为V10.0.0版本之后是亚马逊收购了FreeRTOS之后才出来的版本,主要添加了一些云端组件,我们本书所讲的FreeRTOS是实时内核,采用V9.0.0版本足以。

简单介绍FreeRTOS

FreeRTOS包含Demo例程和内核源码(比较重要,我们就需要提取该目录下的大部分文件)。Source文件夹里面包含的是FreeRTOS内核的源代码,我们移植FreeRTOS的时候就需要这部分源代码;Demo 文件夹里面包含了FreeRTOS官方为各个单片机移植好的工程代码,FreeRTOS为了推广自己,会给各种半导体厂商的评估板写好完整的工程程序,这些程序就放在Demo这个目录下,这部分Demo非常有参考价值。

5343fb2d260165b855daf91f91434c0f.png
在这里插入图片描述

Source文件夹

这里我们再重点分析下FreeRTOS/ Source文件夹下的文件,①和③包含的是FreeRTOS的通用的头文件和C文件,这两部分的文件试用于各种编译器和处理器,是通用的。需要移植的头文件和C文件放在②portblle这个文件夹。

7f0a1e2e4b6bf617e41e33d9d29de1a7.png
在这里插入图片描述

portblle文件夹,是与编译器相关的文件夹,在不同的编译器中使用不同的支持文件。①中的KEIL就是我们就是我们使用的编译器,其实KEIL里面的内容跟RVDS里面的内容一样,所以我们只需要③RVDS文件夹里面的内容即可,里面包含了各种处理器相关的文件夹,从文件夹的名字我们就非常熟悉了,我们学习的STM32有M0、M3、M4等各种系列,FreeRTOS是一个软件,单片机是一个硬件,FreeRTOS要想运行在一个单片机上面,它们就必须关联在一起。MemMang文件夹下存放的是跟内存管理相关的源文件。
1630ef975af98356cad3cd30ffc18446.png
在这里插入图片描述

移植过程

提取源码
  1. 首先在我们的STM32裸机工程模板根目录下新建一个文件夹,命名为“FreeRTOS”,并且在FreeRTOS文件夹下新建两个空文件夹,分别命名为“src”与“port”,src文件夹用于保存FreeRTOS中的核心源文件,也就是我们常说的‘.c文件’,port文件夹用于保存内存管理以及处理器架构相关代码,这些代码FreeRTOS官方已经提供给我们的,直接使用即可,在前面已经说了,FreeRTOS是软件,我们的开发版是硬件,软硬件必须有桥梁来连接,这些与处理器架构相关的代码,可以称之为RTOS硬件接口层,它们位于FreeRTOS/Source/Portable文件夹下。

  2. 打开FreeRTOS V9.0.0源码,在“FreeRTOSv9.0.0\FreeRTOS\Source”目录下找到所有的‘.c文件’,将它们拷贝到我们新建的src文件夹中,

    0cc2c4e8441ee184e4c27f4f6bf90ca0.png
    在这里插入图片描述
  3. 打开FreeRTOS V9.0.0源码,在“FreeRTOSv9.0.0\FreeRTOS\Source\portable”目录下找到“MemMang”文件夹与“RVDS”文件夹,将它们拷贝到我们新建的port文件夹中

    6ca299b756ab4cb768b26923ff10d00b.png
    在这里插入图片描述
  4. 打开FreeRTOS V9.0.0源码,在“FreeRTOSv9.0.0\ FreeRTOS\Source”目录下找到“include”文件夹,它是我们需要用到FreeRTOS的一些头文件,将它直接拷贝到我们新建的FreeRTOS文件夹中,完成这一步之后就可以看到我们新建的FreeRTOS文件夹已经有3个文件夹,这3个文件夹就包含FreeRTOS的核心文件,至此,FreeRTOS的源码就提取完成。

    c80de5a2c03a3463bb223aac7f7e3c91.png
    在这里插入图片描述
添加到工程

添加FreeRTOSCon

  • 1
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FreeRTOS是一个轻量级的开源实时操作系统,它适用于微处理器和微控制器,可以在多种平台上运行。FreeRTOS源码详解应用开发涉及到了很多的知识点,需要深入了解和研究,在本文中,我将从以下几个方面来阐述FreeRTOS源码详解应用开发。 一、FreeRTOS源码结构 FreeRTOS源码结构清晰明了,易于理解。其中,核心部分由5个文件组成,分别为tasks.c,queue.c,list.c,event_groups.c和timers.c。在这些文件中,包含了FreeRTOS的核心代码,是整个系统的基础。此外,FreeRTOS还包含了一些可选的模块,如定时器、跟踪和统计等,这些模块可以根据需要从源代码中选取。 二、FreeRTOS任务管理 FreeRTOS任务管理是其最主要的功能之一,任务的创建、切换、删除等都是通过任务管理来实现的。在FreeRTOS中,任务被抽象成任务控制块(Task Control Block, TCB),每个任务都有一个独一无二的TCB,包含了任务的所有信息,如堆栈、状态、优先级等。FreeRTOS通过TCB来实现任务的切换和管理。 三、FreeRTOS内存管理 FreeRTOS内存管理主要涉及到堆栈和堆的管理。在FreeRTOS中,每个任务都有自己的堆栈,堆栈可以动态扩展,可以根据需要进行调整。此外,FreeRTOS还支持动态分配堆内存,可以通过API函数来分配和释放堆内存。 四、FreeRTOS时间管理 FreeRTOS时间管理主要涉及到定时器、延时和时间戳等功能。FreeRTOS支持多种类型的定时器,并支持定时器链表。延时可以通过vTaskDelay函数来实现,时间戳则可以通过xTaskGetTickCount函数来获取。 五、FreeRTOS中断管理 FreeRTOS中断管理涉及到任务的中断和系统的中断。在FreeRTOS中,任务可以设置自己的中断,也可以响应外部中断。系统的中断则是用来处理定时器中断、网络中断等。中断处理函数必须很快地完成任务,否则可能会对系统性能造成影响。 总之,FreeRTOS源码详解应用开发是一个广泛而深入的领域,需要我们认真学习和研究。但是,掌握FreeRTOS的核心代码和功能后,我们可以轻松地在嵌入式系统中使用它,从而提高系统的可靠性和性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值