【FreeRTOS】系统移植:资料下载(二)

简介: 【FreeRTOS】系统移植:资料下载

【FreeRTOS】系统移植:资料下载(一)https://developer.aliyun.com/article/1472584


移植FreeRTOS

在工程目录下新建一个FreeRTOS的文件夹再在这个文件夹下面建立三个文件夹分别是include、src和port;

将FreeRTOSv9.0.0\FreeRTOS\Source文件夹下面的所有.c文件拷贝到src目录

将FreeRTOSv9.0.0\FreeRTOS\Source\include下面所有文件拷贝到include目录

将FreeRTOSv9.0.0\FreeRTOS\Source\portable目录下的MemMang文件夹和RVDS文件夹拷贝到port目录

将FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_M4F_STM32F407ZG-SK\FreeRTOSConfig.h文件复制到工程的core/Inc目录中,这个文件是该实时操作系统的配置文件,这就有点像Linux的.config配置文件一样对应的芯片又对应的配置文件,在这个demo里面涵盖了大部分的芯片支持,如果没有的话选择自己芯片的架构随意复制一个然后进行更改配置即可;

其实在stm32CUBEMX中我们可以直接添加FreeRTOS的包,而且建立工程更加方便,但是自动生成的工程很难让我们了解这个工程的组成这里只是走一遍流程,后续如果在项目中使用到FreeRTOS可以选择利于自己开发的方式创建即可;

然后我们打开keil添加我们的freertos源码文件进来

新建FreeRTOS/port和FreeRTOS/src组,添加文件需要注意我们的配置文件时.h文件所以要选择All files否则找不到

FreeRTOS/src目录全部添加进来

FreeRTOS/port 用于存放 port\MemMang 文件夹 与 port\RVDS\ARM_CM?文件夹的内容,“?”表示 3、4 或者 7,具体选择哪个得看你 使用的是哪个型号的 STM32 开发板,如果是F4系列就拷贝port\RVDS\ARM_CM4F,然后我们将工程文件中 FreeRTOS 的内容添加到工程中去,按照已经新建的分组添加 我们的 FreeRTOS 工程源码。 在 FreeRTOS/port 分组中添加 MemMang 文件夹中的文件只需选择其中一个即可,我 们选择“heap_4.c”,这是 FreeRTOS 的一个内存管理源码文件。

heap_1.c:适合一些不会删除任务,队列以及信号量的任务,特别是一些比较简单的系统和一些对安全性要求比较高的系统。事实上,很多系统中只要创建了任务之后就会一直执行,不会删除任务。所以这个文件适用环境还是比较多的。

heap_2.c:能分配,能回收,但是回收时不考虑内存碎片的场所。适合一些申请和释放操作不是特别频繁,而且不会申请大数组的场所。(申请和释放会造成内存碎片,过多操作内存中可能没有大的连续区域)

heap_3.c:这种方法实际使用的还是c语言的malloc和free函数。与平台没有太大关系。

heap_4.c:内存分配和释放操作比较频繁的系统。例如要重复创建删除任务,队列,信号量等。

heap_5.c:系统需要管理不连续的内存空间,例如接入外部ram的场合

包含文件路径

添加头文件包含

配置串口重定向

#include <stdio.h>
int fputc(int ch, FILE *f) {
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
  return ch;
}

然后我们开始编译:

错误1:…\FreeRTOS\port\RVDS\ARM_CM4F\port.c(483): error: A1586E: Bad operand types (UnDefOT, Constant) for operator

解决办法:全局搜索__NVIC_PRIO_BITS将4U改成4

错误2:中断函数的重复定义

因为FreeRTOS已经帮我们实现了这几个函数所以我们需要在stm32f4xx_it.h文件中将这三个中断函数注释掉即可;

错误3:STM32F407ZG_FreeRTOS\STM32F407ZG_FreeRTOS.axf: Error: L6218E: Undefined symbol vApplicationIdleHook (referred from tasks.o).等四个函数未定义

解决办法就是先不实现这几个钩子函数让他等于空

再次编译就成功了,到这里工程移植就完成了,下面进行简单的测试


【FreeRTOS】系统移植:资料下载(三)https://developer.aliyun.com/article/1472586

相关文章
|
6月前
【FreeRTOS】系统移植:资料下载(三)
【FreeRTOS】系统移植:资料下载
|
16天前
|
开发工具 开发者 git
「Mac畅玩鸿蒙与硬件10」鸿蒙开发环境配置篇10 - 项目实战:计数器应用
本篇将通过一个简单的计数器应用,带你体验鸿蒙开发环境的实际操作流程。本项目主要练习组件的使用、事件响应和状态管理,帮助开发者熟悉基本的应用构建流程。
56 3
「Mac畅玩鸿蒙与硬件10」鸿蒙开发环境配置篇10 - 项目实战:计数器应用
|
6月前
|
Linux 芯片
【FreeRTOS】系统移植:资料下载(一)
【FreeRTOS】系统移植:资料下载
|
6月前
|
弹性计算 Java 关系型数据库
ARM架构和避坑指南|开发者分享会
今天分享的内容来自阿里云倚天ECS高级架构师张先国的“ARM架构和避坑指南”。本文内容主要从ARM架构、C和Java如何避坑 、等方面详细讲解。
|
Linux Android开发 C++
一个超棒的开源解读项目【Linux内核揭秘】,一定不要错过啦!
一个超棒的开源解读项目【Linux内核揭秘】,一定不要错过啦!
154 0
|
存储 Linux C语言
嵌入式Linux C(八)——函数(详)
嵌入式Linux C(八)——函数(详)
194 0
嵌入式Linux C(八)——函数(详)
|
Ubuntu Linux 开发工具
ZYNQ - 嵌入式Linux开发 -08- linux应用程序开发(一)
ZYNQ - 嵌入式Linux开发 -08- linux应用程序开发
622 0
ZYNQ - 嵌入式Linux开发 -08- linux应用程序开发(一)
|
Ubuntu Linux 开发工具
ZYNQ - 嵌入式Linux开发 -08- linux应用程序开发(二)
ZYNQ - 嵌入式Linux开发 -08- linux应用程序开发
229 0
ZYNQ - 嵌入式Linux开发 -08- linux应用程序开发(二)
|
开发工具 Android开发 开发者
鸿蒙、OpenHarmony、HarmonyOS傻傻的分不清楚。。。看这篇就够了
很多人对鸿蒙、OpenHarmony、HarmonyOS这些术语傻傻的分不清楚,那么本文就做一些解答。 6月4日,华为发布了《关于规范HarmonyOS沟通口径的通知》(以下简称《通知》),原文在网上都能搜到,这里就不贴了。本人对该通知做一些解读如下。
1150 0