首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

FreeRTOS系列第8篇---FreeRTOS内存管理

ID:技术让梦想更伟大 作者:李肖遥 FreeRTOS提供了几个内存堆管理方案,有复杂的也有简单的。...为了避免这个问题,FreeRTOS在移植层保留内存分配API函数。移植层在RTOS核心代码源文件之外(不属于核心源代码),这使得不同的应用程序可以提供适合自己的应用实现。...FreeRTOS下载包中提供5种简单的内存分配实现,本文稍后会进行描述。用户可以适当的选择其中的一个,也可以自己设计内存分配策略。...FreeRTOS提供的内存分配方案分别位于不同的源文件(heap_1.c、heap_2.c、heap_3.c、heap_4.c、heap_5.c)之中,源文件位于下载包\FreeRTOS\Source\...应用程序直接调用pvPortMalloc() 和 vPortFree()函数,而不仅是通过FreeRTOS API间接调用。

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    FreeRTOS(二)

    FreeRTOS 官网:https://freertos.org/ 在官网中可以下载到 FreeRTOS 的源码,博主下载了一份,解压后目录如下: FreeRTOS 源码中有三个文件夹,7 个 HTML...格式的网页和 2 个 txt 文档,HTML 网页和 txt 文档看名字就知道是什么东西了,重点在于上面那两个文件夹:FreeRTOSFreeRTOS-Plus,这两个文件夹里面的东西就是 FreeRTOS...1、FreeRTOS 文件夹 1)Demo 文件夹里面就是 FreeRTOS 的相关例程: FreeRTOS 针对不同的 MCU 提供了非常多的 Demo,其中就有 ST 的 F1、F4 和 F7...我们看一下 Source: FreeRTOS-Plus 中的源码其实并不是 FreeRTOS 系统的源码,而是在 FreeRTOS 系统上另外增加的一些功能代码,比如 CLI、FAT、Trace 等等...就系统本身而言,和 FreeRTOS 里面的一模一样的,所以我们如果只是学习 FreeRTOS 这个系统的话,FreeRTOS-Plus 就没必要看了。

    91320

    FreeRTOS(三)

    手里还有一块韦东山 JZ2440,正点原子 imx6ull开发板,是 Linux 开发板。 后来工作遇到了安卓,想买安卓开发板,发现做安卓教程的比较少,或许是它真的太大太复杂。...玩了嵌入式 Linux 以后,发现单片机真简单;后来接触了安卓,觉得还是 Linux 简单。 嵌入式有三个方向:单片机、嵌入式 Linux 、Android,系统复杂性依次提高。...接下来就在 STM32F103 单片机上移植 FreeRTOS。 移植 FreeRTOS 以正点原子的跑马灯工程为基础,在上面扩展。...在基础工程中新建一个名为 FreeRTOS 的文件夹: 创建 FreeRTOS 文件夹以后就可以将 FreeRTOS 的源码添加到这个文件夹中,,添加完以后 如图所示: portable 文件夹,我们只需要留下...分组 FreeRTOS_CORE 中的文件就是 FreeRTOS 源码。

    1.2K10

    FreeRTOS系列第9篇---FreeRTOS任务概述基础篇

    目前协程很少被使用到,因此对于协程FreeRTOS作者既没有把它删除也没有进一步开发。 所以本系列文章以后不会对协程过多描述,包括其API函数。...FreeRTOS调度器确保处于最高优先级的就绪或运行态任务获取处理器,换句话说,处于运行状态的任务,只有其中的最高优先级任务才会运行。 任何数量的任务可以共享同一个优先级。...在较新的FreeRTOS移植包中,如果 试图从一个任务中返回,将会调用configASSERT()(如果定义的话)。...如果使用FreeRTOS-MPU(在官方下载包中,为Cortex-M3内核写了两个移植方案,一个是普通的FreeRTOS移植层,还有一个是FreeRTOS-MPU移植层。...在使用FreeRTOS-MPU的情况下,使用xTaskCreate()函数可以创建运行在特权模式或用户模式(见下面对函数参数uxPriority的描述)的任务。

    1.7K40

    FreeRTOS(六):任务

    本文学习一下 FreeRTOS的任务基础知识,分为如下几部分: 1、什么是多任务系统 2、FreeRTOS 任务与协程 3、初次使用 3、任务状态 4、任务优先级 5、任务实现 6、任务控制块 7、任务堆栈...2、FreeRTOS 任务与协程 FreeRTOS 中应用既可以使用任务,也可以使用协程(Co-Routine),或者两者混合使用。...但是 FreeRTOS 目前还没有把协程移除的计划,但是 FreeRTOS 是绝对不会再更新和维护协程了,因此协程大家了解一下就行了。...FreeRTOS 的任务函数和 UCOS 的任务函数模式基本相同的,不止 FreeRTOS,其他 RTOS 的任务函数基本也是这种方式的。...类似于 Linux 的 task_struct 结构体,保存进程信息用的,每个进程有一个。

    1.1K10

    FreeRTOS系列第6篇---FreeRTOS内核配置说明

    整理:李肖遥 FreeRTOS内核是高度可定制的,使用配置文件FreeRTOSConfig.h进行定制。每个FreeRTOS应用都必须包含这个头文件,用户根据实际应用来裁剪定制FreeRTOS内核。...#ifndef FREERTOS_CONFIG_H #define FREERTOS_CONFIG_H /*Here is a good place to include header files...FreeRTOS提供了一个灵活的机制,使得应用程序可以使用线程本地存储指针来读写线程本地存储。具体参见后续文章《FreeRTOS系列第12篇---FreeRTOS任务应用函数》。...详细描述见FreeRTOS software timers。...FreeRTOS内核代码的关键点都会调用configASSERT( x )函数,如果参数x为0,则会抛出一个错误。这个错误很可能是传递给FreeRTOS API函数的无效参数引起的。

    2.7K22

    FreeRTOS 任务通知

    简述 FreeRTOS 从版本 V8.2.0开始提供任务通知这个功能,每个任务都有一个32位的通知值。...按照 FreeRTOS 官方的说法,使用消息通知比通过二进制信号量方式解除阻塞任务快 45%, 并且更加省内存(无需创建队列)。...FreeRTOS 提供以下几种方式发送通知给任务 : 发送消息给任务, 如果有通知未读, 不覆盖通知值 发送消息给任务,直接覆盖通知值 发送消息给任务,设置通知值的一个或者多个位 发送消息给任务,递增通知值...当然,消息通知也有其限制 : 通知只能一对一,因为通知必须指定任务 等待通知的任务可以被阻塞, 但是发送消息的任务,任何情况下都不会被阻塞等待 分析的源码版本是 v9.0.0 通知 API FreeRTOS...---- 参考 FreeRTOS Notifications FreeRTOS API

    1.3K20

    FreeRTOS】事件标志组

    FreeRTOS 中断方式事件标志组的实现 FreeRTOS 中断方式事件标志组的实现是指中断函数和 FreeRTOS 任务之间使用事件标志。...如果 FreeRTOS 工程的中断函数中没有调用 FreeRTOS 的事件标志组 API 函数,与裸机编程是一样的。...如果 FreeRTOS 工程的中断函数中调用了 FreeRTOS 的事件标志组的 API 函数,退出的时候要检测是否有高优先级任务就绪,如果有就绪的,需要在退出中断后进行任务切换,这点跟裸机编程稍有区别...而 FreeRTOS 不允许在中断服务程序和临界段中执行不确定性操作。...为了不在中断服务程序中执行,就通过此函数给FreeRTOS 的 daemon 任务(就是 FreeRTOS 的定时器任务)发送消息,在 daemon 任务中执行事件标志的置位操作。

    1.7K10

    FreeRTOS(十二):消息队列

    FreeRTOS 对此提供了一个叫做“队列”的机制来完成任务与任务、任务与中断之间的消息传递,由于队列用来传递消息的,所以也称为消息队列。...但是也可以使用 LIFO 的存储缓冲,也就是后进先出,FreeRTOS 中的队列也提供了 LIFO 的存储缓冲机制。...FreeRTOS中使用队列传递消息的话虽然使用的是数据拷贝,但是也可以使用引用来传递消息啊,我直接往队列中发送指向这个消息的地址指针不就可以了!...queueQUEUE_TYPE_COUNTING_SEMAPHORE 计数型信号量 queueQUEUE_TYPE_BINARY_SEMAPHORE 二值信号量 queueQUEUE_TYPE_RECURSIVE_MUTEX 递归互斥信号量 4、向队列发送消息 FreeRTOS...6、从队列读取消息 有入队就有出队,出队就是从队列中获取队列项(消息),FreeRTOS 中出队函数如表示: 具体的函数用法大家可以在用到的时候百度,这里就不详细介绍了,大家知道有这些东西就行。

    1.3K30
    领券