| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> FreeRTOS — 源码下载与移植 -> 正文阅读 |
|
[嵌入式]FreeRTOS — 源码下载与移植 |
1、FreeRTOS的学习1.1、FreeRTOS的源码下载????????学习一个操作系统前,首先要下载对应的源码,用于研究和学习。FreeRTOS的源码下载链接如下: ????????FreeRTOS Real Time Kernel (RTOS) - Browse /FreeRTOS at SourceForge.net 页面图示如下: 下载之后的文件为:FreeRTOSv202012.00-LTS.exe.qbl 1.2、FreeRTOS在线API指南FreeRTOS提供了在线的API接口的指南,这对于开发和学习都是非常的友好的,在线API指南的网址为: ????????http://web.ist.utl.pt/~ist11993/FRTOS-API/index.html ????????在线指南的示意图如下: 1.3、在线应用指南除了在线的API应用指南之外,还有一个在线的开发指导手册,是非常好用的一份手册: ????????https://www.freertos.org/RTOS.html 2、FreeRTOS移植到MCU上0.基于STM32F103的移植,其它系列MCU类似。 硬件平台:STM32F103ZET6; 软件平台:MDK529 FreeTROS版本:FreeRTOS Kernel V10.4.3 1.在工程目录下新建FreeRTOS文件夹,该文件夹用于存放FreeRTOS相关的文件。 2.在FreeRTOSv10.2.1\FreeRTOS\Source路径下找到FreeRTOS的源码,将其拷贝到工程中的FreeRTOS文件夹中。 ????????其中头文件和源码源文件是全部要用到的,不做任何删除。 ????????portable文件夹是和硬件平台,软件开发环境相关的文件。FreeRTOS为了让用户移植简单,帮用户做了很多工作。打开portable文件夹如下: ????????3.打开工程,在工程中添加一个专用来存放FreeRTOS的Group ????????将FreeRTOS的源文件,内存管理文件,硬件接口文件统统添加到这个FreeRTOS这个Group中 ????????内存管理文件在FreeRTOS\portable\MemMang文件夹下,FreeRTOS提供了五种内存管理方案,对于移植来说,随便选一种方案都是可以的。但是heap_4有内存碎片管理的功能,对内存碎片可以自动监控和收集,所以选择这个内存管理会更好。 ????????port.c文件在FreeRTOS\portable\RVDS路径下找到与自己使用的MCU内核的文件夹: ????????4.添加头文件路径,需要添加两个路径。 ????????5.编译 ????????便已完成之后,提示打不开FreeRTOSConfig.h这个文件。这是因为FreeRTOS源码中并没有提供这个文件。 ????????这种情况下有两种办法: ????????第一、自己动手写一个(哈哈,个人觉得这个对一般人来说不现实); ????????第二、找一个可以直接用的。 ????????仔细找找会发现,其实官方在很多平台下都移植了FreeRTOS。去官方的demo中找,FreeRTOSv10.2.1\FreeRTOS\Demo路径下存放的全是官方移植的demo。在此路径下找到CORTEX_STM32F103_Keil文件夹,此文件夹是官方基于STM32F103和MDK平台移植的demo。(其他平台参考该方式类似的查找) ????????在此文件夹下找到FreeRTOSConfig.h文件。 ????????将其拷贝到源码的头文件中。重新进行编译。 ????????这种情况下,只要使能一个有关的宏定义为1即可以,在FreeRTOSConfig.h文件中将宏INCLUDE_xTaskGetCurrentTaskHandle定义为1,使能该函数,重新编译一下,应该就不会报错了。 ????????6.添加三个宏定义 首先我们需要对FreeRTOS的几个很重要的问题要有一个认识:
????????在我们自己移植的项目中,官方的文件中对3个函数的定义是没有的,需要我们自己进行一些修改。 ????????在官方的提供的文件中,实现了另外3个相关的函数,名字分别是:
????????所以,我们只需要根据自己所用的MCU环境进行相应的替换即可以对应上了。在FreeRTOSConfig.h头文件中做一下宏定义就可以了。注意要将自己的原来3个空函数注释掉。 这三个宏定义非常重要
????????其中,xPortSysTickHandler是系统滴答定时器中断,用于给FreeRTOS提供运行的心跳节拍的,代码示意如下:
?对嵌入式开发感兴趣的话,欢迎关注微信公众号“嵌入式之入坑笔记”,一块学习交流吧! ? |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 0:51:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |