logo资料库

FreeRTOS和FreeMODBUS移植到STM32F103傻瓜教程(Keil5).pdf

第1页 / 共58页
第2页 / 共58页
第3页 / 共58页
第4页 / 共58页
第5页 / 共58页
第6页 / 共58页
第7页 / 共58页
第8页 / 共58页
资料共58页,剩余部分请下载后查看
FreeRTOS 和 FreeMODBUS 移植到 STM32F103 傻瓜教程(Keil5) 第一部分 FreeRTOS v10.2.1 移植 一、FreeRTOS 系统简介: FreeRTOS 是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。FreeRTOS 提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。 FreeRTOS 是用 C 和汇编来写的,其中绝大部分都是用 C 语言编写的,只有极少数的与 处理器密切相关的部分代码才是用汇编写的,FreeRTOS 结构简洁,可读性很强!最主要的 是非常适合初次接触嵌入式实时操作系统学生、嵌入式系统开发人员和爱好者学习。 1、为什么学 FreeRTOS (1.1)、因为 FreeROTS 开源。 (1.2)、FreeRTOS 免费 (1. 3)、FreeRTOS 是很多第三方组件钦定的系统! 2、 FreeRTOS 相关资料查找: (2.1)、FreeRTOS 官网:http://www.freertos.org/。 (2.2)、开源电子网:www.openedv.com。 二、FreeRTOS 源码初探 到 FreeRTOS 官网:http://www.freertos.org/ 下载 FreeRTOSv10.2.1_191129.exe。 1、解压缩 FreeRTOSv10.2.1_191129.exe 到 WINDOWS 桌面 德阳瑞能电力科技有限公司(李清林) 1
可以观察到在 WINDOWS 桌面生成了一个 FreeRTOSv10.2.1_191129 文件夹,打开文件 夹后参见下图。 上图中有 4 个文件夹:FreeRTOS,FreeRTOS-Labs,FreeRTOS-Plus,FreeRTOS+TCP。 FreeRTOS 是 FreeRTOS 的源码,FreeRTOS-Plus 是提供的工具,比如有个 CLI,是命 令行,在命令行中我们可以输入命令来查看 FreeRTOS 系统在运行的时候查看 stack 的使用 情况。 德阳瑞能电力科技有限公司(李清林) 2
2、FreeRTOS 源码预览 上图中有三个文件夹:Demo,License,Source。从名字上就可以很容易知道它们是什 么。 (1)、Demo 文件夹 Demo 文件夹里面就是 FreeRTOS 的相关例程,打开以后参见下图: 可以看出 FreeRTOS 针对不同的 MCU 提供了非常多的 Demo,其中就有 ST 的 F1,F4 和 F7 系列的例程,我们在移植时就可以参考这些例程。 德阳瑞能电力科技有限公司(李清林) 3
(2)、License 文件夹 这个文件夹里面是一些相关的许可信息。 (3)、Source 文件夹 看名字就知道啦,FreeRTOS 源码就在这个文件夹里面,打开后如图所示: Include 文件夹是一些头文件,移植的时候需要。.c 文件就是 FreeRTOS 源码文件,移植 的时候肯定也是需要的,下面重点看一下 portabe 这个文件夹,我们知道 FreeRTOS 是个系 统,归根到底就是个纯软件的东西,它是怎么和硬件联系在一起的呢?软件到硬件中间必须 有一座桥梁,portabe 文件夹里面的东西就是 FreeRTOS 系统和具体的硬件之间连接的桥梁! 不同的编译器,不同的 MCU,其桥梁应该是不同的,打开 portabe 文件夹,如下图所示: 德阳瑞能电力科技有限公司(李清林) 4
Keil 文件夹里面的东西肯定也是必须的,但是我们打开 Keil 文件夹以后里面只有一个 文件:See_also_the_RVDS_directory.txt。这个 txt 文件是什么呀?别急嘛!看文件名字 “See_also_the_RVDS_directory”,意思就是参考 RVDS 文件夹里面的东西!好吧,再打开 RVDS 文件夹,如下图所示: RVDS 文件夹针对不同架构的 MCU 做了详细的分类,STM32F103 就参考了 ARM-CM3, 打开 ARM-CM3 文件夹,如下图所示: ARM-CM3 文件夹下有 2 个文件,这 2 个文件就是我们移植的时候需要的。 德阳瑞能电力科技有限公司(李清林) 5
MemMang 文件夹跟内存管理相关,移植时是必须使用的,打开 MemMang 文件夹,如 下图所示: (1)、heap_1.c 使用大数组,可申请,没释放,系统使用创建消息量、定时器等也基 本不需要释放; (2)、heap_2.c 使用大数组,可申请,可释放,但是不会合并相邻空闲块,会产生碎片; (3)、heap_3.c 使用 malloc 和 free 封装; (4)、heap_4.c 使用大数组,可申请,可释放,相邻区块可以合并; (5)、heap_5.c 允许使用多个内存堆块,可内部 RAM 可外部 RAM,每个内存堆的起 始地址和大小需用户定义; heap_4.c 个文件就是我们移植的时候需要的。 德阳瑞能电力科技有限公司(李清林) 6
三、准备工作 1、创建一个基础的工程项目 project 用 Keil5 在【D:\V4-006_基础例程】下创建一个基础的工程项目,基础工程越简单越好, 基础工程的项目名称为 project。 德阳瑞能电力科技有限公司(李清林) 7
2、编译基础工程项目 project 编译 project 工程项目,可以观察到没有任何错误,接下来我们就可以在这个基础工程 项目上移植 FreeRTOS。 德阳瑞能电力科技有限公司(李清林) 8
分享到:
收藏