完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、简介
FreeRTOS 是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。FreeRTOS 提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。 FreeRTOS 是用 C 和汇编来写的,其中绝大部分都是用 C 语言编写的,只有极少数的与处理器密切相关的部分代码才是用汇编写的,FreeRTOS 结构简洁,可读性很强!最主要的是非常适合初次接触嵌入式实时操作系统学生、嵌入式系统开发人员和爱好者学习。 最新版本 V9.0.0(2016年),尽管现在 FreeRTOS 的版本已经更新到 V10.4.1 了,但是我们还是选择 V9.0.0,因为内核很稳定,并且网上资料很多,因为 V10.0.0 版本之后是亚马逊收购了FreeRTOS之后才出来的版本,主要添加了一些云端组件,一般采用 V9.0.0 版本足以。 二、目录结构 FreeRTOS 包含: Demo 例程 Source 内核源码 Source 包含: include 通用头文件 portable 通用C文件 croutine 协程 list 列表 queue 队列 tasks 任务 timers 软件定时器 portable 包含: Keil 同 RVDS MemMang 内存管理 RVDS MemMang 包含: 5个 heap 文件 在移植时必须使用其中一个,因为 FreeRTOS 在创建对象的时候使用的是动态内存分配,而这些动态内存分配的函数则在这几个文件里面实现,不同的分配算法导致不同的效率和结果,一般用 heap4.c。 RVDS 包含: Cortex-M0、M3、M4、M7 等内核的单片机接口文件 port.c 接口文件 portmacro.h 头文件,主要是一些数据类型和宏定义 三、移植过程 3.1 提取最简源码 首先在 STM32 裸机工程根目录下新建一个文件夹,命名 FreeRTOS 然后在 FreeRTOS 文件夹下新建三个空文件夹,include、port、src 打开 FreeRTOS V9.0.0 源码在 “FreeRTOSv9.0.0FreeRTOSSource” 目录下找到所有的 ‘.c 文件’,将它们拷贝到我们新建的 src 文件夹中 打开 FreeRTOS V9.0.0 源码,在“FreeRTOSv9.0.0FreeRTOSSourceportable” 目 录下找到 “MemMang” 夹与 “RVDS” 文件夹,将它们拷贝到我们新建的 port 文件夹中 打开 FreeRTOS V9.0.0 源码,在 “FreeRTOSv9.0.0 FreeRTOSSource” 目录下找到 “include” 文件夹,它是我们需要用到 FreeRTOS 的一些头文件,将它直接拷贝到我们新建的 include 文件夹中 3.2 拷贝FreeRTOSConfig.h文件到User文件夹 FreeRTOSConfig.h 文件是 FreeRTOS 的工程配置文件,因为 FreeRTOS 是可以裁剪的实时操作内核,应用于不同的处理器平台,用户可以通过修改这个 FreeRTOS 内核的配置头文件来裁剪 FreeRTOS 的功能,所以我们把它拷贝一份放在 User 这个文件夹下面。 打开 FreeRTOSv9.0.0 源码,在 “FreeRTOSv9.0.0FreeRTOSDemo” 文件夹下面找到 “CORTEX_STM32F103_Keil” 这个文件夹,在其根目录下找到这个 “FreeRTOSConfig.h” 文件,然后拷贝到我们工程的 User 文件夹下即可 3.3 添加源码到工程组文件夹 接下来我们在 mdk 里面新建 FreeRTOS/src 和 FreeRTOS/port 两个组文件夹,其中 FreeRTOS/src 用于存放 src 文件夹的内容,FreeRTOS/port 用于存放 portMemMang 文件夹与 portRVDSARM_CM3 文件夹的内容。 然后我们将工程文件中 FreeRTOS 的内容添加到工程中去,按照已经新建的分组添加我们的 FreeRTOS 工程源码。 在 FreeRTOS/port 分组中添加 MemMang 文件夹中的文件只需选择其中一个即可,我们选择 “heap_4.c”,这是 FreeRTOS 的一个内存管理源码文件。 然后在 User 分组中添加我们 FreeRTOS 的配置文件 “FreeRTOSConfig.h” 3.4 指定头文件路径 FreeRTOS 的源码已经添加到开发环境的组文件夹下面,编译的时候需要为这些源文件指定头文件的路径,不然编译会报错。FreeRTOS 的源码里面只有 FreeRTOSinclude和FreeRTOSportRVDSARM_CM3 这两个文件夹下面有头文件,只需要将这两个头文件的路径在开发环境里面指定即可。同时我们还将 FreeRTOSConfig.h 这个头文件拷贝到了工程根目录下的 User 文件夹下,所以 User 的路径也要加到开发环境里面。 3.5 修改FreeRTOSConfig.h FreeRTOSConfig.h 是直接从 demo 文件夹下面拷贝过来的,该头文件对裁剪整个 FreeRTOS 所需的功能的宏均做了定义,有些宏定义被使能,有些宏定义被失能,一开始我们只需要配置最简单的功能即可。要想随心所欲的配置 FreeRTOS 的功能,我们必须对这些宏定义的功能有所掌握。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1683 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1582 浏览 1 评论
1013 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
703 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1627 浏览 2 评论
1892浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
675浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
538浏览 3评论
557浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
526浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 00:55 , Processed in 0.854129 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号