FreeRTOS学习(七)

2023-05-16

7 系统裁剪

  • 7.1 简介
    FreeRTOS中的系统裁剪和配置其实是通过条件编译的方法来实现的,不止FreeRTOS这么干,很多的协议栈、RTOS系统和GUI库都是使用条件编译的方法来完成配置和裁剪的。在第二章使用静态函数的时候,看到在tasks.c文件中会有如下的代码
    在这里插入图片描述
    可以看出当configSUPPORT_STATIC_ALLOCATION的值为1时,静态创建函数才会被编译。条件编译的好处就是节省空间,不需要的功能就不编译。这样就可以根据实际需求来减少系统占用的ROM和RAM大小,根据自己所使用的MCU来调整系统消耗,降低成本。
    FreeRTOS这些宏的定义,即实现配置的过程都是通过FreeRTOSConfig.h和FreeRTOS.h中使用“#define”这样的语句来实现宏定义的。

  • 7.2 “INCLUDE_”开始的宏
    上面介绍的配置文件中以“INCLUDE_”开头的宏,表示的是FreeRTOS中的宏函数的开关,当相对应的开关宏打开的时候,相应的宏函数才能够使用。
    比如,我们要使用vTaskDelay()的话就需要在文件FreeRTOSConfig.h中将宏INCLUDE_vTaskDelay设置为1。
    在这里插入图片描述

一些单功能可以被裁剪的API函数的定义格式都是这样,都是以“INCLUDE_”+函数名称的方式定义。我们使用的类似Source Insight这样的工具,可以直接帮我们跳到API函数定义的地方。但是如果这个函数被裁剪掉了,那么我们使用这个函数的时候,这个函数拼写完成后的名称会是黑色,而且无法跳转到函数定义的地方。这时候就可以根据自己的需求到FreeRTOSConfig.h和FreeRTOS.h文件中打开对应的开关宏,最好在我们使用结束之后关闭对应的宏,下次使用的时候可以节省资源。

  • 7.3 “config”开始的宏
    以“config”开始的宏通常对应某种功能的开关,如我们上面所说的configSUPPORT_STATIC_ALLOCATION表示静态应用的支持设置。这个宏的设置为1或0,和静态创建函数xTaskCreateStatic的定义有关,而且与空闲任务和定时器服务任务的创建函数函数都相关,还可能对应着多个函数或者变量的定义和使用。
    在这里插入图片描述
    在这里插入图片描述
    而且,如果我们搜索这个宏会发现,还有很多地方都和它相关:

使用“INCLUDE_”开始的宏去一一进行条件编译会比较麻烦,所以使用“config”开始的宏统一进行条件编译会比较方便我们的使用,使用这个功能的时候只要把这个宏设置为1,其他对应的变量和函数都会被编译。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeRTOS学习(七) 的相关文章

  • FreeRTOS系列

    1 多任务系统 1 1 前后台系统 单片机裸机开发时 一般都是在main函数里面用while 1 做一个大循环来完成所有的处理 循环中调用相应的函数完成所需的处理 有时也需要在中断中完成一些处理 相对于多任务系统而言 这就是单人单任务系统也
  • 详解FreeRTOS中的软件定时器

    软件定时器用于让某个任务定时执行 或者周期性执行 比如设定某个时间后执行某个函数 或者每隔一段时间执行某个函数 由软件定时器执行的函数称为软件定时器的回调函数 参考资料 Mastering the FreeRTOS Real Time Ke
  • STM32F103移植FreeRTOS必须搞明白的系列知识---3(堆栈)

    STM32F103移植FreeRTOS必须搞明白的系列知识 1 Cortex CM3中断优先级 STM32F103移植FreeRTOS必须搞明白的系列知识 2 FreeRTOS任务优先级 STM32F103移植FreeRTOS必须搞明白的系
  • FreeRTOS学习笔记 6 - 互斥量

    目录 1 创建 2 获取 3 释放 4 测试 FreeRTOS不支持调度方式的设置 所以下面2个宏定义可以随意设置值 define RTOS IPC FLAG FIFO 0x00 define RTOS IPC FLAG PRIO 0x01
  • 【FreeRTOS】多任务创建

    作者主页 凉开水白菜 作者简介 共同学习 互相监督 热于分享 多加讨论 一起进步 专栏资料 https pan baidu com s 1nc1rfyLiMyw6ZhxiZ1Cumg pwd free 点赞 收藏 再看 养成习惯 订阅的粉丝
  • Freertos中vTaskDelay()是怎么用的

    1 常见的使用场景 void vLED Task void pvParameters while 1 Heartbeat LED vTaskDelay 1000 portTICK RATE MS 说明 上面这段代码的意思是 led翻转后经过
  • 【FreeRTOS开发问题】FreeRTOS内存溢出

    FreeRTOS内存溢出 如下图所示 FreeRTOS编译完成后可以看到 系统提示无法分配内存到堆 Objects Template axf Error L6406E No space in execution regions with A
  • STM32移植FreeRTOS的Tips

    转自 http bbs armfly com read php tid 7140 1 在FreeRTOS的demo文件夹中拷贝对应的FreeRTOSConfig h文件后 需要加入一行 define configUSE MUTEXES 1
  • ZYNQ中FreeRTOS中使用定时器

    使用普通的Timer中断方式时 Timer中断可以正常运行 但是UDP通信进程无法启动 其中TimerIntrHandler是中断服务程序 打印程序运行时间与从BRAM中读取的数据 void SetupInterruptSystem XSc
  • FreeRTOS ------- 任务(task)

    在学习RTOS的时候 个人觉得带着问题去学习 会了解到更多 1 什么是任务 在FreeRTOS中 每个执行线程都被称为 任务 每个任务都是在自己权限范围内的一个小程序 其具有程序入口每个任务都是在自己权限范围内的一个小程序 其具有程序入口通
  • FreeRTOS+CubeMX系列第一篇——初识FreeRTOS

    文章目录 一 关于FreeRTOS 二 FreeRTOS的特点 三 如何在CubeMX上配置FreeRTOS 四 FreeRTOS文档资料 五 同系列博客 一 关于FreeRTOS 1 什么是FreeRTOS FreeRTOS是一个迷你的实
  • Error: L6218E: Undefined symbol vApplicationGetIdleTaskMemory (referred from tasks.o).

    我用的是F103ZET6的板子 移植成功后 编译出现两个错误是关于stm32f10x it c 里 void SVC Handler void void PendSV Handler void 两个函数的占用问题 随后编译出现以下两个问题
  • STM32F103移植FreeRTOS必须搞明白的系列知识---2(FreeRTOS任务优先级)

    STM32F103移植FreeRTOS必须搞明白的系列知识 1 Cortex CM3中断优先级 STM32F103移植FreeRTOS必须搞明白的系列知识 2 FreeRTOS任务优先级 STM32F103移植FreeRTOS必须搞明白的系
  • stm32f103zet6移植标准库的sdio驱动

    sdio移植 st官网给的标准库有给一个用于st出的评估板的sdio外设实现 但一是文件结构有点复杂 二是相比于国内正点原子和野火的板子也有点不同 因此还是需要移植下才能使用 当然也可以直接使用正点原子或野火提供的实例 但为了熟悉下sdio
  • FreeRTOS之事件

    FreeRTOS之事件 声明 本人按照正点原子的FreeRTOS例程进行学习的 欢迎各位大佬指责和批评 谢谢 一 事件定义 事件 事件集 与高数上的集合意义差不多 事件啊 其实是实现任务间通信的机制 主要用于实现多任务间的同步 但是事件类型
  • FreeRTOS学习笔记(8)---- 软件定时器

    使用FreeRTOS软件定时器需要在文件FreeRTOSConfig h先做如下配置 1 configUSE TIMERS 使能软件定时器 2 configTIMER TASK PRIORITY 定时器任务优先级 3 configTIMER
  • [FreeRTOS入门学习笔记]定时器

    定时器的使用步骤 1 定义一个handle xTimerCreate创建 2 启动定时器 在Task1中调用 通过队列通知守护任务来执行定时器任务 要再config头文件中定义守护任务相关配置 虽然定时器是在task1中启动 但是定时器的任
  • FreeRTOS之系统配置

    1 FreeRTOS的系统配置文件为FreeRTOSConfig h 在此配置文件中可以完成FreeRTOS的裁剪和配置 在官方的demo中 每个工程都有一个该文件 2 先说一下 INCLUDE 开始的宏 使用 INCLUDE 开头的宏用来
  • 如何更改 FreeRTOS 中任务的最大可用堆大小?

    我通过以下方式在任务中创建元素列表 l dllist pvPortMalloc sizeof dllist dlllist 有 32 字节大 我的嵌入式系统有 60kB SRAM 所以我希望系统可以轻松处理我的 200 个元素列表 我发现在
  • 防止GCC LTO删除函数

    我使用 GCC ARM Embedded 和 FreeRTOS FreeRTOS具有的功能vTaskSwitchContext 仅在某些情况下使用 内联汇编代码 问题是 当我使用LTO时 GCC不考虑内联汇编代码并认为该函数没有被使用 因此

随机推荐

  • NVIDIA A100 深度解密(一):GPU 峰值计算那些事

    这是我的推广信息 xff0c 以激励自己更好的分享自己的知识和经验 xff01 也希望看到的你能够多多支持 xff0c 谢谢 xff01 1 滴滴云AI大师 目前滴滴云正在大力推广自己的云计算服务 xff0c 需要购买的朋友们用我的AI大师
  • 算法中七种常见的时间复杂度

    这是我的推广信息 xff0c 以激励自己更好的分享自己的知识和经验 xff01 也希望看到的你能够多多支持 xff0c 谢谢 xff01 1 滴滴云AI大师 目前滴滴云正在大力推广自己的云计算服务 xff0c 需要购买的朋友们用我的AI大师
  • Python之日志处理(logging模块)

    这是我的推广信息 xff0c 以激励自己更好的分享自己的知识和经验 xff01 也希望看到的你能够多多支持 xff0c 谢谢 xff01 1 滴滴云AI大师 目前滴滴云正在大力推广自己的云计算服务 xff0c 需要购买的朋友们用我的AI大师
  • 李群、李代数之我的理解

    我目前的研究领域转到了立体匹配方向 但是基础很薄弱 xff0c 很多理论知识都需要补充 希望自己能够满满的累积起足够的基础知识 这篇博客主要是记录自己对李群 李代数的初步理解 xff0c 还请大家一些讨论进步 参考资料 lie group
  • 科研神器软件(关于查词、翻译)

    整理了几个和科研相关的神器软件 网址 xff0c 关于英文写作 翻译 查词的 xff0c 记录如下 xff1a 英文写作的词句库网站 xff0c 包含大量的例句和写作模板 xff1a https www phrasebank manches
  • CT典型数据——shepp_logan体模数据的生成 python版本

    phantominator包介绍 网址 xff1a https github com mckib2 phantominator安装 xff1a pip install phantominator简介 xff1a 用于简便的生成 numeri
  • 解决 dpkg 安装出错后的 Sub-process /usr/bin/dpkg returned an error code (1) 错误

    前言 在使用 dpkg i 安装 deb软件包的过程中 xff0c 会出现安装失败的可能 之后无论用 sudo apt install f or sud apt autoremove 等常见的修复命令都是无效的 网络上很多解决方案都直接给出
  • Ubuntu20.4 休眠之后网络出现问题的解决方案

    问题简介 Ubuntu20 04 在休眠之后 xff0c 如果网络出现了无法连接或者无法共享的各种问题 xff0c 只有重启才能解决 xff0c 那么以下操作可以让你不用重启电脑 解决方案 重启 network kernel modules
  • 京东京造K系列机械键盘在Linux下的使用

    前言 京东京造是一款为Mac iPad iPhone适配出色的蓝牙键盘 xff0c 官方也支持Win系统 这款键盘 xff0c 其实就是Keychron K8 xff0c 国外非常火的Mac键盘 xff0c 深受苹果用户的喜爱 YouTub
  • 事件相机仿真器(ESIM)安装记录

    前言 在 Ubuntu 20 04 下安装 ESIM 事件相机仿真器 特此记录 资料 官网 https github com yunxdai rpg esim 安装指导 https github com uzh rpg rpg esim w
  • [翻译]解决使用 git clone 命令时出现的 ‘gnutls_handshake() failed’ 错误

    错误介绍 使用 git clone 时出现如下错误 xff1a fatal unable to access 39 https github com Syllo nvtop git 39 gnutls handshake failed Th
  • 解决 pycharm 从快捷方式启动与从终端启动环境不同的问题

    前言 博主在安装了 ros 相关的两个python包 rospy 和 roslaunch 之后 xff0c pycharm 无法 import 这两个包 但是在终端中用同样的python解释器又可以import这两个包 同时 xff0c 从
  • Ubuntu 常用命令使用记录

    Linux 查找包含特定关键词的文件 grep r E 39 word1 word2 word3 39 yourpath gt gather log 如果要and关系查找 则要用管道 grep pattern1 files grep pat
  • Linux 通过 SSH 挂载远程文件夹

    前言 在两台Linux电脑之间 xff0c 我们可以通过ssh方便的登录另一台电脑并访问它的文件或者文件夹 但这都是我们用户在进行操作 想要在一台电脑上运行程序 xff0c 处理放在另一台电脑上的文件时 xff0c 我们应该如何设置呢 xf
  • ROS节点的初始化及退出详解(ros::init、SIGINT、ros::ok、ros::NodeHandle)

    希望大家收藏 xff1a 本文更新地址 xff1a https haoqchen site 2018 04 28 ROS node init 左侧专栏还在更新其他ROS实用技巧哦 xff0c 关注一波 xff1f 很多ROS新手编写节点的时
  • Ubuntu 终端前多了个 base

    Ubuntu 终端前多了个 base xff0c 想将base去掉 xff0c 如何操作 xff1f 原文 xff1a https blog csdn net qq 35544714 article details 109270602 装完
  • GNU __attribute__浅析

    GNU attribute 浅析 1 介绍 attribute 是GCC的特性 xff0c 其实是个编译器指令 xff0c 告诉编译器声明的特性 xff0c 或者让编译器进行更多的错误检查和高级优化 attribute 可以设置函数属性 x
  • FreeRTOS学习(一)

    1 FreeRTOS任务基础 1 1 多任务系统 在51单片机 AVR STM32裸机编程时 xff0c 我们通常都是用一个main函数里面加一个while 1 做一个大循环来完成所有的事务处理 xff0c 同时在加上中断处理一些较为紧急的
  • FreeRTOS学习(四)

    4 FreeRTOS信号量 4 1 信号量简介 信号量主要是用于对共享资源的访问和任务同步 具体的使用例子就不进行展开 4 2 二值信号量 4 2 1 二值信号量简介 二值信号量通常用于互斥访问或同步 xff0c 二值信号量与互斥信号量非常
  • FreeRTOS学习(七)

    7 系统裁剪 7 1 简介 FreeRTOS中的系统裁剪和配置其实是通过条件编译的方法来实现的 xff0c 不止FreeRTOS这么干 xff0c 很多的协议栈 RTOS系统和GUI库都是使用条件编译的方法来完成配置和裁剪的 在第二章使用静