Freertos任务切换异常问题

2023-05-16

最近调试运行了freertos的代码时发现程序不知为何任务切换不了,经检查发现程序死在了断言中,这个断言所处的函数是vTaskSwitchContext。这个函数的作用是任务切换用的,断言的位置如下图所示:

 

经分析vTaskSwitchContext()函数的作用是寻找当前就绪列表中优先级最高的任务,然后运行此任务,进入这个断言中说明当前没有就绪任务。为啥会出现这种情况呢?按我的理解当用户任务都阻塞了,空闲任务应该就会进入就绪态呀?网上找了找可能的原因如下:

1.栈空间太小,导致溢出了

2.优先级设置不对

参考链接如下:

1.Problem with array bounds for pxReadyTasksLists (FreeRTOS 8.2.x) - #4 by RAc - Kernel - FreeRTOS Community Forums

2.FreeRTOS卡在空闲任务,无法调度,产生假死现象 - 小平头电子技术论坛社区

3.Application stucks on "taskSELECT_HIGHEST PRIORITY_TASK" because get invalid ready list - Kernel - FreeRTOS Community Forums

4.FreeRTOS hangs when no task needs to run. - Kernel - FreeRTOS Community Forums

根据这些资料检查了半天也没发现哪里有问题,后面我把断言检查功能关闭,程序又一直运行正常。但显然这是一种不负责任的做法。希望遇到同样问题的工程师能分享一下你的解决办法

 

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

Freertos任务切换异常问题 的相关文章

  • 基于HAL库的FREERTOS----------二.任务API函数

    任务API函数览概 CUBEMX对 做了API的封装 很多 的函数没有封装到位 可以用原函数调用 任务API函数分别介绍 1 uxTaskPriorityGet 此函数用来获取指定任务的优先级 要使用此函数的话宏 INCLUDE uxTas
  • 【FreeRTOS 信号量】互斥信号量

    互斥信号量与二值信号量类似 但是互斥信号量可以解决二值信号量出现的优先级翻转问题 解决办法就是优先级继承 普通互斥信号量创建及运行 参阅安富莱电子demo 互斥信号量句柄 static SemaphoreHandle t xMutex NU
  • STM32CubeMX+FreeRTOS学习笔记(一)

    嵌入式实时操作系统FreeRTOS 基本概述 在嵌入式领域当中 实时操作系统的应用越来越广泛了 目前嵌入式操作系统种类很多 例如 Clinux C OS II C OS III FreeRTOS RT Thread等等 这篇文章所记录的就是
  • FreeRTOS 软件定时器的使用

    FreeRTOS中加入了软件定时器这个功能组件 是一个可选的 不属于freeRTOS内核的功能 由定时器服务任务 其实就是一个定时器任务 来提供 软件定时器是当设定一个定时时间 当达到设定的时间之后就会执行指定的功能函数 而这个功能函数就叫
  • FreeRTOS软件定时器创建、复位、开始和停止(备忘)

    目录 一 简介 1 1 开发环境 1 2 摘要 二 STM32CubeIDE配置 三 创建定时器 3 1 头文件声明 3 2 工程文件定义 3 3 创建定时器 3 4 开启 复位 和关闭定时器 四 定时器回调函数 一 简介 1 1 开发环境
  • 解决错误“ #error “include FreeRTOS.h“ must appear in source files before “include event_groups.““例子分享

    今天来给大家分享一下 关于之前自己在学习FreeRTOS过程中遇到的一个错误提示 话不多说 我们直接来看 错误分析 首先 我们看一下错误的提示 error 35 error directive include FreeRTOS h must
  • FreeRTOS简述和移植文档

    FreeRTOS简述和移植文档 文章目录 FreeRTOS简述和移植文档 1 前言 2 FreeRTOS简述 1 概述 2 实现 3 主要特色 4 支持平台 3 移植FreeRTOS 4 最后 1 前言 目前由于IOT的飞速发展 针对单片机
  • FreeRTOS学习笔记 6 - 互斥量

    目录 1 创建 2 获取 3 释放 4 测试 FreeRTOS不支持调度方式的设置 所以下面2个宏定义可以随意设置值 define RTOS IPC FLAG FIFO 0x00 define RTOS IPC FLAG PRIO 0x01
  • freeRTOS手册 第六章 . 中断管理

    如果我对本翻译内容享有所有权 允许任何人复制使用本文章 不会收取任何费用 如有平台向你收取费用与本人无任何关系 第六章 中断管理 章节介绍和范围 事件 嵌入式实时系统必需对环境中的事件做出响应 比如 外部网络设备收到一个发送给TCP IP栈
  • FreeRTOS+CubeMX系列第一篇——初识FreeRTOS

    文章目录 一 关于FreeRTOS 二 FreeRTOS的特点 三 如何在CubeMX上配置FreeRTOS 四 FreeRTOS文档资料 五 同系列博客 一 关于FreeRTOS 1 什么是FreeRTOS FreeRTOS是一个迷你的实
  • freeRTOS使用uxTaskGetStackHighWaterMark函数查看任务堆栈空间的使用情况

    摘要 每个任务都有自己的堆栈 堆栈的总大小在创建任务的时候就确定了 此函数用于检查任务从创建好到现在的历史剩余最小值 这个值越小说明任务堆栈溢出的可能性就越大 FreeRTOS 把这个历史剩余最小值叫做 高水位线 此函数相对来说会多耗费一点
  • 【FreeRTOS】任务通知的使用

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

    http blog sina com cn s blog 98ee3a930102wg5u html 本章教程为大家讲解两个重要的概念 FreeRTOS的临界段和开关中断 本章教程配套的例子含Cortex M3内核的STM32F103和Co
  • FreeRTOS学习(三)开关中断

    声明及感谢 跟随正点原子资料学习 在此作为学习的记录和总结 环境 keil stm32f103 背景知识 Cotex M3的NVIC最多支持240个IRQ 中断请求 1个不可屏蔽 NMI 1个Systick 滴答定时器 Cortex M处理
  • FreeRTOS笔记(一)简介

    这个笔记主要依据韦东山freertos快速入门系列记录 感谢韦东山老师的总结 什么是实时操作系统 操作系统是一个控制程序 负责协调分配计算资源和内存资源给不同的应用程序使用 并防止系统出现故障 操作系统通过一个调度算法和内存管理算法尽可能把
  • Arduino IDE将FreeRTOS用于STM32

    介绍 适用于STM32F103C8的FreeRTOS STM32F103C是一种能够使用FreeRTOS的ARM Cortex M3处理器 我们直接在Arduino IDE中开始使用STM32F103C8的FreeRTOS 我们也可以使用K
  • FreeRTOS笔记(十)中断

    中断 当CPU在执行某一事件A时 发生另外一个更重要紧急的事件B请求CPU去处理 产生了中断 于是CPU暂时中断当前正在执行的事件A任务而对对事件B进行处理 CPU处理完事件B后再返回之前中断的位置继续执行原来的事件A 这一过程统称为中断
  • [FreeRTOS入门学习笔记]定时器

    定时器的使用步骤 1 定义一个handle xTimerCreate创建 2 启动定时器 在Task1中调用 通过队列通知守护任务来执行定时器任务 要再config头文件中定义守护任务相关配置 虽然定时器是在task1中启动 但是定时器的任
  • RT-Thread记录(五、RT-Thread 临界区保护与FreeRTOS的比较)

    本文聊聊临界区 以及RT Thread对临界区的处理 通过源码分析一下 RT Thread 对临界区保护的实现以及与 FreeRTOS 处理的不同 目录 前言 一 临界区 1 1 什么是临界区 1 2 RTOS中的临界区 二 RT Thre
  • STM32 Freertos 添加 外部sram heap_5.c

    1 添加外部SRAM 初始化 2 添加heap 5 c 3 初始化heap 5 c 外部堆栈 Define the start address and size of the two RAM regions not used by the

随机推荐

  • C++字符串输入问题

    经常写核心代码模式 xff0c 对于输入输出很多情况下 xff0c 不怎么会写了 所以 xff0c 做个总结 对于如下输入 xff1a span class token comment 输入 xff1a span span class to
  • 中国系统面试0819

    一面 xff1a 30min C 43 43 xff1a 1 C 43 43 的三大特性 xff0c 以及在项目中是如何是用到的 xff08 封装 继承 多态 xff09 2 STL了解哪些 xff0c 在项目中如何使用的 xff0c 举例
  • C语言实现多态

    利用C语言实现多态 xff1a c语言多态的实现 xff0c 需要用到函数指针 函数名实际上是该函数代码存储空间的首地址 xff0c 这个地址可以通过函数指针来存放 通过改变函数指针存储的地址就可以实现多态 span class token
  • 深入浅析Mysql联合索引原理 之 最左匹配原则。

    前言 之前在网上看到过很多关于mysql联合索引最左前缀匹配的文章 xff0c 自以为就了解了其原理 xff0c 最近面试时和大牛交流中 xff0c 发现遗漏了些东西 xff0c 这里自己整理一下这方面的内容 最左前缀匹配原则 在mysql
  • kubernetes Value:将磁盘挂载到容器,PV,PVC

    6 1 介绍卷 6 1 1 卷的类型 emptyDir 用于存储临时数据的简单空目录 hostPath 用于将目录从工作节点的文件系统挂载到pod nfs 挂载到pod中的NFS共享卷 还有其他的如gitRepo gcepersistenD
  • 记一次容器内执行ansible命令卡住

    1 由来 最近在使用kylin v10系统 xff0c 发现当在此系统下运行的容器内执行 ansible localhost m setup 命令会卡住不动 xff0c 于是和同事一起经过如下排查最终找到解决问题的办法 2 环境 2 1 系
  • k8s pod报错Process failed to launch spawn E2BIG

    一 问题描述 近期遇到k8s环境中一个pod无法正常启动 xff0c 启动报错 xff0c PM2 ERROR Process failed to launch spawn E2BIG 二 问题分析 2 1 了解报错相关知识 查阅资料发现
  • 通过TCP Allocate连接数告警了解prometheus-NodeExporter数据采集及相关知识扩散

    1 问题由来 近日有环境告警如下 xff1a TCP Allocate连接数过多 很多资料告诉我们使用 netstat ant grep tcp wc l命令查询 xff0c 但查询的值与告警中获取的只相差很大 xff0c 于是下载Node
  • OpenStack是什么,OpenStack详解

    1 OpenStack是什么 OpenStack官方的解释很官方 xff0c 而且从不同角度 xff0c 也有不同的理解 xff0c OpenStack可以理解为一个云操作系统 OpenStack旗下包含了一组由社区维护的开源项目 xff0
  • Vue+dataV:调用后台数据,数据赋值成功,但是组件上的数据更新失败

    问题描述 公司要做个数据看板 xff0c 因为在项目中应用到了dataV xff0c 在使用的过程中 xff0c 发现dataV的组件的数据 xff0c 若是来自自己定义的常量数据 xff0c 数据可以正常显示在组件中 但当数据来自于axi
  • Windows Server 2008搭建域控制器

    前言 1 为什么要建域 工作组的分散管理模式不适合大型的网络环境下工作 xff0c 域模式就是针对大型的网络管理需求设计的 xff0c 就是共享用户账号 xff0c 计算机账号和安全策略的计算机集合 域中集中存储用户账号的计算机就是域控器
  • -bash: zip: command not found提示解决办法

    bash zip command not found 是因为liunx服务器上没有安装zip命令 xff0c 需要安装一下即可 linux安装zip命令 xff1a apt get install zip 或yum install zip
  • 超全的数据库分类介绍

    数据库的分类 数据库通常分为层次式数据库 网络式数据库和关系式数据库三种 而不同的数据库是按不同的数据结构来联系和组织的 而在当今的互联网中 xff0c 最常见的数据库模型主要是两种 xff0c 即关系型数据库和非关系型数据库 数据库分类
  • suse11/12关闭防火墙

    suse11 关闭操作为 xff1a service SuSEfirewall2 setup stop service SuSEfirewall2 init stop 取消开机启动防火墙 xff1a chkconfig SuSEfirewa
  • pip download 只下载不安装命令的使用方法

    比如下载 django 1 8 11版本和simplejson 3 14 0版本的包 那么就将所需的包写入 requirement txt 那么我的requirement txt内容就是 xff1a django 61 61 1 8 11
  • k8s学习笔记

    九 deployment xff1a 声明式的升级应用 9 1 使用RC实现滚动升级 kubectl rolling update kubia v1 kubia v2 image 61 luksa kubia v2 使用kubia v2版本
  • k8s学习笔记---Statefulset:部署有状态的多副本应用

    10 1 什么是Statefulset StatefulSet是Kubernetes提供的管理有状态应用的负载管理控制器API 特点 xff1a 1 具有固定的网络标记 xff08 主机名 xff09 2 具有持久化存储 3 需要按顺序部署
  • Frp 内网穿透配置文件

    服务器配置frps ini common bind port 61 7000 token 61 12314 客户端连接需要配置使用的令牌 vhost http port 61 8080 客户端配置http 转发的时候必须配置该项 端口号为云
  • maven打包报错:Cannot construct org.apache.maven.plugin.war.util.WebappStructure as it does not have a no

    我的项目因为某些原因从本地删除掉了 xff0c 然后由SVN重新导入 xff0c 结果打包报错了 Cannot construct org apache maven plugin war util WebappStructure as it
  • Freertos任务切换异常问题

    最近调试运行了freertos的代码时发现程序不知为何任务切换不了 xff0c 经检查发现程序死在了断言中 xff0c 这个断言所处的函数是vTaskSwitchContext 这个函数的作用是任务切换用的 xff0c 断言的位置如下图所示