Freertos学习

2023-05-16

FreeRtos小问题

初步了解FreeRTOS,学习原子哥的视频。


遇到问题总结:

1、freertos的一个“start_task”的子任务是不是同时运行的?
不是,CPU一次只能处理一个任务,之所以会出现同时在运行的现象,是因为,在freertos中出现的延迟与标准库的不一样,这里的延迟是把该任务挂起,从运行态进入就绪态,而在此期间另一个任务会进入运行态,相当于子任务1和子任务2一部分1一部分2的执行。任务是死循环,要想退出或者结束任务可以使用删除任务函数vTaskDelete()。

2、freertos中临界区是什么?为什么在初始化子任务函数时要进入临界区,然后再出去?
每个进程中访问临界资源的那段代码称为临界区(Critical Section) (临界资源是一次仅允许一个进程使用的共享资源)。每次只准许一个进程进入临界区,进入后不允许其他进程进入。不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。临界区是提供互斥功能的一种非常原始的实现方法。临界区的工作 仅仅是简单的把中断全部关掉,或者是关掉优先级在configMAX_SYSCALL_INTERRUPT_PRIORITY以下的中断-依赖具体使用的FreeRTOS移植。抢占式的上下文切换只可能在某中断中完成,因此调用taskENTER_CRITICAL()可以在中断关闭的时段一直保持持续运行状态直到退出临界区。在临界区内的函数执行不会被其他东西打断,不过如果用在中断中,要考虑进入临界区的时间,否则就会影响中断运行。
参考博客:https://blog.csdn.net/jdsnpgxj/article/details/110451896

3、任务删除和任务挂起区别?
删除任务时人物的堆栈会被释放掉,任务里面的变量都会丢掉,而挂起不会,挂起的堆栈和任务管理内存都不会被释放,如果再次需要任务的变量时,只需要释放任务就可以。注意,在被挂起后,任务进入挂起态,被释放出来后任务会先进入就绪态,在就绪态里如果它的优先级最高才能直接进入运行态,即在就绪态里还是按照优先级进入运行态。

4、Freertos任务编号怎么去编写的?
在开始创建一个任务时,以Start_task为例,在创建开始后,Start_task任务编号为1,接下来在开启任务调度后即vTaskStartScheduler()后,IDLE即空闲任务会被系统自动创建,编号为2,接着定时器服务任务同样也被系统自动创建,编号为3。空闲任务和定时器服务任务都是系统自动创建的,编号比较靠前,接下来的任务编号就按照用户自己的编译顺序依次进行编号4、5、6等。

5、消息队列的传递方式中,引用传递和值传递的区别?
引用传递,传递的是消息指针,也就是地址,这就意味着消息内容必须一直保持可见性。故局部变量这种随时可能被删掉的东西就不能用来传递消息,不过引用传递比较快很节省时间;值传递,是对数据进行拷贝,这就意味着消息发送到队列中原始数据缓冲区就可以被删除或者改写。因为要拷贝数据故比较费时。不过在FreeRTOS中用值传递,在信息数据太大的情况下,我们可以用引用传递发送消息缓冲区的地址指针。


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

Freertos学习 的相关文章

  • FreeRTOS学习笔记 6 - 互斥量

    目录 1 创建 2 获取 3 释放 4 测试 FreeRTOS不支持调度方式的设置 所以下面2个宏定义可以随意设置值 define RTOS IPC FLAG FIFO 0x00 define RTOS IPC FLAG PRIO 0x01
  • 一文教你学会keil软件仿真

    仿真在我们调试代码中是非常重要的 通过仿真 我们可以快速定位到错误代码 或者错误逻辑的地方 这里我就以上一篇博客为例 教大家如何软件仿真 软件仿真不需要单片机 直接通过keil软件进行代码调试 一 打开工具 二 选择软件仿真 三 开始仿真
  • 【FreeRTOS开发问题】FreeRTOS内存溢出

    FreeRTOS内存溢出 如下图所示 FreeRTOS编译完成后可以看到 系统提示无法分配内存到堆 Objects Template axf Error L6406E No space in execution regions with A
  • ZYNQ中FreeRTOS中使用定时器

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

    中断概念 Cortex M的NVIC最多支持240个IRQ 中断请求 1个不可屏蔽中断 NMI 1个Systick 滴答定时器 定时器中断和多个系统异常 Cortex M处理器有多个用于管中断和异常的可编程寄存器 这些寄存器大多数都在 NV
  • FreeRTOS_中断

    传送门 博客汇总帖 传送门 Cortex M3 中断 异常 传送门 Cortex M3笔记 基础 笔记内容参考 正点原子的FreeRTOS开发手册 cortex m3权威指南 Cortex M3和Cortex M4权威指南等 文中stm32
  • FreeRTOS基础五:软件定时器

    软件定时器简介 软件定时器的作用 在指定的时间到来时执行指定的函数 或者以某个频率周期性地执行某个函数 被执行的函数叫做软件定时器回调函数 软件定时器由FreeRTOS内核实现 不需要硬件支持 软件定时器只有在软件定时器回调函数被调用时才需
  • FreeRTOS之软件定时器

    FreeRTOS之软件定时器 声明 本人按照正点原子的FreeRTOS例程进行学习的 欢迎各位大佬指责和批评 谢谢 include sys h include delay h include usart h include led h in
  • FreeRTOS之事件

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

    1 中断回调函数中没有使用中断级API xxFromISR 函数 xSemaphoreGiveFromISR uart busy HighterTask 正确 xSemaphoreGive uart busy 错误 2 比configMAX
  • FreeRTOS学习---“定时器”篇

    总目录 FreeRTOS学习 任务 篇 FreeRTOS学习 消息队列 篇 FreeRTOS学习 信号量 篇 FreeRTOS学习 事件组 篇 FreeRTOS学习 定时器 篇 FreeRTOS提供了一种软件定时器 用来快速实现一些周期性的
  • FreeRTOS临界段

    1 临界段 在访问共享资源时不希望被其他任务或者中断打断的代码 这段要执行的代码称为临界段代码 2 设置临界段的目的 保护共享资源 例如 全局变量 公共函数 不可重入函数 函数里面使用 了一些静态全局变量 malloc 等 保护外设的实时性
  • FreeRTOS实时操作系统(三)任务挂起与恢复

    系列文章 FreeRTOS实时操作系统 一 RTOS的基本概念 FreeRTOS实时操作系统 二 任务创建与任务删除 HAL库 FreeRTOS实时操作系统 三 任务挂起与恢复 FreeRTOS实时操作系统 四 中断任务管理 FreeRTO
  • 再论FreeRTOS中的configTOTAL_HEAP_SIZE

    关于任务栈和系统栈的基础知识 可以参考之前的随笔 FreeRTOS 任务栈大小确定及其溢出检测 这里再次说明 define configTOTAL HEAP SIZE size t 17 1024 这个宏 官方文档解释 configTOTA
  • FreeRTOSConfig.h 配置优化及深入

    本篇目标 基于上一篇的移植freertos stm32f4 freertos 上 修改 FreeRTOSConfig h 文件的相关配置来优化辅助 FreeRtos 的使用 并且建立一些基本功能 信号量 消息地列等 的简单应用位于 stm3
  • 当一个任务写入变量而其他任务读取该变量时,我们是否需要信号量?

    我正在研究 freeRtos 并且我有一个名为 x 的变量 现在 每秒只有一个任务正在写入该变量 而其他任务正在读取该变量值 我需要用互斥锁来保护变量吗 如果变量为 32 位或更小 并且其值是独立的并且不与任何其他变量一起解释 则不需要互斥
  • 如何将 void* 转换为函数指针?

    我在 FreeRTOS 中使用 xTaskCreate 其第四个参数 void const 是传递给新线程调用的函数的参数 void connect to foo void const task params void on connect
  • GNU Arm Cortex m4 上的 C++ 异常处理程序与 freertos

    2016 年 12 月更新现在还有一个关于此行为的最小示例 https community nxp com message 862676 https community nxp com message 862676 我正在使用带有 free
  • 小型 ARM 微控制器的 RTOS 内核之间的可量化差异 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有许多不同的 RTOS 可用于微控制器 我专门寻找支持 ARM Cortex M 处理器的 RTOS 另外 我对闭源解决方案不感兴趣 试图从网站
  • 有关 CMake 错误的问题:没有为目标提供源

    我正在尝试使用 cmake 和 eclipse 将 FreeRtos 添加到我的项目中 但出现错误 我运行的是 debian 10 我的 cmake 版本是 3 13 4 cmake 的文件可以在以下位置找到这个 git 仓库 https

随机推荐

  • 【嵌入式面试】2022年嵌入式经典面试题汇总(C语言)

    x1f4dc 作者 xff1a 不想脱发的基兄 x1f4fa 专栏 xff1a 嵌入式面试 x1f4e3 格言 xff1a 不管前方的路有多苦 xff0c 只要走的方向正确 xff0c 不管多么崎岖不平 xff0c 都比站在原地更接近幸福
  • Linux下的UDP通信

    上一部分大致提了一下UDP通信要用到的API xff0c 下面就要开始实际测试了 xff0c 先搞服务端 xff0c 再搞客户端 Linux环境下的UDP TCP网络通信API接口函数 abs ln 1 43 NaN 的博客 CSDN博客
  • 【嵌入式面试】2022年嵌入式经典面试题汇总(网络编程)

    x1f4dc 作者 xff1a 不想脱发的基兄 x1f4fa 专栏 xff1a 嵌入式面试 x1f4e3 格言 xff1a 天空黑暗到一定程度 星辰就会熠熠生辉 前言 2022年秋招我面试嵌入式MCU开发方向 xff0c 经过了多场的笔试与
  • MDK-ARM与STM32CubeMX软件的下载及安装

    一 STM32CubeMX 的下载及安装 第一步 xff1a 下载应用软件 1 1 软件下载地址 xff1a www st com stm 32 cubemx 1 2 JAVA开发环境的搭建 xff0c JAVA下载地址 xff1a www
  • STM32 HAL库的中断(一)外部中断&&UART中断

    STM32 HAL库的中断 可以说大型任务里面逃不掉中断的使用 xff0c 在从标准库开发转向HAL库开发的过程中 xff0c HAL库函数层层调用的函数关系着实令人头皮发麻 xff0c 在此记录一下自己一下午的摸索 xff0c 本文将持续
  • Jetson Nano使用Tensorrt加速Yolo V4-tiny进行实时检测

    之前在Darknet下使用Yolo V4 tiny进行了图像实时检测的测试 xff0c 发现帧率一直只有十几 xff0c 还有很大的提升空间 xff0c 今天就来尝试一下使用tensorrt进行加速后的效果 基础环境 Jetson Nano
  • gazebo如何加载sdf文件的模型

    目录 大致过程sdf文件包含在world文件设置sdf文件的路径1 把文件直接放到能被gazebo找得到的目录下2 设置环境变量使gazebo能找到该文件3 在package xml文件添加路径 参考文献留有疑问 大致过程 gazebo只能
  • 串口应用:发送数据

    功能描述 xff1a 1 每隔3ms以115200波特率的速度发送一个遵循uart协议的数据 每次发送数据增大1 xff08 从0开始即可 xff09 2 数据 来自数据采集器 xff0c 每采集一个数据 xff0c 发送一个脉冲告知串口
  • github更新子模块指令

    span class token function git span submodule update init recursive 更新子模块
  • ..\OBJ\LED.axf: Error: L6218E: Undefined symbol xTaskGetSchedulerState (referred from delay.o).

    文章目录 前言解决办法 前言 在学习FreeRTOS移植后 xff0c 编译出现 OBJ LED axf Error L6218E Undefined symbol xTaskGetSchedulerState referred from
  • STM32中HAL库与标准库的区别

    这是扒的某网站上大佬们的见解 1 HAL库就是封装的比较猛 xff0c 移植性比较强 xff0c 标准库就是将寄存器封装好 xff0c 移植性没有HAL好 2 HAL库可以用ST的软件CUBE生成初始化工程 3 HAL库最方便的就是可以用C
  • 在vsCode中如何使用git工具来管理代码

    git add git status 显示文件的状态 git commit m 我是内容 需要工具 xff1a VSCode 在VSCode官网上下载VSCode并进行安装 VSCode官方网站 https code visualstudi
  • TCP 可靠性的关键机制 —— 确认应答机制 (ACK)

    确认应答机制是 实现TCP可靠性的关键机制 xff0c 简单来说 xff0c 确认应答机制就是 xff0c 客户端和服务端任意一方 xff0c 在发送消息之后 xff0c 都必须要收到对方的回复来表明自己发送的消息已经被对方收到 TCP可靠
  • Ubuntu20.10编译安装Python3.8

    1 更新软件包列表并安装构建Python所需的软件包 xff1a sudo apt update sudo apt install build essential zlib1g dev libncurses5 dev libgdbm dev
  • VINS-Fusion-RGBD编译错误

    error 39 SHAPE CROSS 39 is not a member of 39 cv 39 error 39 SHAPE RECT 39 is not a member of 39 cv 39 error 39 TERMCRIT
  • win10 WSL2 AirSim 仿真环境搭建

    win10 WSL2 AirSim 仿真环境搭建 wsl2AirSim安装教程基本环境安装WSL2安装PX4 编译环境配置好默认的工具链下载编译PX4 安装AirSim环境安装虚幻引擎下载AirSimLandscapeMountains下载
  • C语言实现UDP通信

    UDP通信 UDP是一种无连接的尽最大努力交付的不可靠连接 xff0c 通信之前无需先建立连接 xff0c 自然而然 xff0c 通信之后也就无需再释放连接 通信的套接字 UDP所采用的通信接口与前面讲过的TCP通信接口相同 xff0c 只
  • Github两个分支无法合并问题的解决与复现

    问题描述 xff1a 使用IDEA的git初始化仓库后 xff0c 提交到github空仓库时 xff0c 出现master分支无法和默认的main分支合并的情况 解决思路 xff1a 在已经有两个分支的情况下 xff0c 将两个分支克隆到
  • 常见算法题型,通常算法求解步骤

    算法题型 xff1a 排序 查找 字符串匹配 图 组合 几何 数值 算法求解步骤 xff1a xff08 仅仅为个人理解 xff09 1 分析问题 xff0c 建立模型 理解题目 xff0c 属于哪一类题型 xff0c 与哪类题型类似 2
  • Freertos学习

    FreeRtos小问题 初步了解FreeRTOS xff0c 学习原子哥的视频 遇到问题总结 xff1a 1 freertos的一个 start task 的子任务是不是同时运行的 xff1f 不是 xff0c CPU一次只能处理一个任务