freeRTOS内部机制——创建任务的内部细节

news2025/1/12 8:42:22

创建任务的两个核心:栈和任务结构体

函数运行过程中的局部变量保存在哪里?他自己的栈中

任务被切换过后,在切换的瞬间,哪些寄存器的值保存在哪里?保存在任务结构体中

在任务创建函数中,会malloc动态分配一块内存usStackDepth,这块内存就是栈。

精简过后的TCB结构体

要回答两个问题?

创建任务的栈从哪里分配?freeRTOS中定义了一个很大的全局数据作为一块空闲的内存,栈就是从这里面划分出一部分空间给任务使用。上图中的1000指的是1000*4字节。

这块分出来的空间起始地址保存在TCB结构体的pxStack参数中

大小怎么分配?栈的大小取决于怎么使用局部变量和函数调用的深度,在实际的开发中栈的大小只能去估计,没有好的计算方法

vTask1()怎么执行?将pc指针指向vTask1()的地址

,Task1()地址存在哪里?存在任务的栈中,如下图所示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1137439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Javascript】函数隐藏参数ar

function test(a,b,c){console.log(abc);}test(1,2,3);这里的形参有三个分别是a,b,c分别对应实参1,2,3 假如在调用函数的时候多传入几个实参会怎么样? function test(a,b,c){console.log(arguments);console.log(a…

吃瓜教程3|决策树

ID3算法 假定当前样本集合D中第k类样本所占比例为pk,则样本集合D的信息熵定义为 信息增益 C4.5算法 ID3算法存在一个问题,就是偏向于取值数目较多的属性,因此C4.5算法使用了“增益率”(gain ratio)来选择划分属性 CA…

第四章 文件管理 六、文件的基本操作

目录 一、创建文件(create系统调用) 1、进行Create系统调用时,需要提供的几个主要参数: 2、操作系统在处理Create系统调用时,主要做了两件事: 二、删除文件(delete系统调用) 1、进行Delete系统调用时,需要提供的几个主要参数: 2、操作系…

【20年VIO梳理】

19-20年VIO 梳理 1. 开源代码介绍: DSM2. FMD Stereo SLAM:融合MVG和直接方法,实现准确,快速的双目SLAM3. 基于VINS-Mono开发的SPVIS4. 改进:一种基于光流的动态环境移动机器人定位方案5. PVIO:基于先验平面约束的高效…

第四章 文件管理 五、文件存储空间管理

目录 一、逻辑结构和物理结构的比较 二、空闲表法 1、磁盘中的空闲块表 2、例子 3、如何回收空闲区间 ①回收区的前后都没有相邻空闲区; ②回收区的前后都是空闲区; ③回收区前面是空闲区; ④回收区后面是空闲区; 三、空闲链表法 1、分类 2、空闲盘块链 &#xff…

【顺序栈的表示和实现,顺序栈的初始化,是否为空,清空顺序栈,销毁顺序栈,】

文章目录 一、栈和队列的定义和特点1.1顺序栈的表示和实现1.2顺序栈的基本操作1.2.1顺序栈的初始化1.2.2判断顺序栈是否为空1.2.3清空顺序栈1.2.4销毁顺序栈1.2.5顺序栈的入栈 一、栈和队列的定义和特点 栈和队列是限定插入和删除只能在表的“端点”进行的线性表。 栈是先进后…

【Linux】安装与配置虚拟机及虚拟机服务器坏境配置与连接---超详细教学

一,操作系统介绍 1.1.什么是操作系统 操作系统(Operating System,简称OS)是一种系统软件,它是计算机硬件和应用软件之间的桥梁。它管理计算机的硬件和软件资源,为应用程序提供接口和服务,并协…

VS搭建32位和64位汇编开发环境

VS搭建32位和64位汇编开发环境 1 VS2017软件安装2 创建汇编工程3 配置X86汇编环境(32位)4 配置X64汇编环境(64位)5 调试技巧 本文属于《 X86架构指令基础系列教程》之一,欢迎查看其它文章。 1 VS2017软件安装 安装过…

根据键名解析特定属性的值相关API

mycdev.c #include <linux/init.h> #include <linux/module.h> #include <linux/of.h>struct device_node *node; //解析得到的设备树节点对象指针 struct property *pr; //属性结构体指针 int len; u32 a; u32 b[2]; const char *str; u8 c[6]; static i…

MFI芯片I2C地址转换(写读转7位传入API接口)

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;可加我微信hezkz17, 本群提供音频技术答疑服务 MFI芯片I2C地址转换(写读转7位传入API接口&#xff09; #define MFI_I2C_CHIP_ADDR 0x10// 芯片写/读 0x20/0x21(写/读) 七位地址 0x10 //zk 使用读地址…

jdbc 对事务的支持

MySQL中默认开启事务自动提交功能&#xff0c;即 每个SQL语句都会自动开启一个事务并提交&#xff0c;如果没有显式地使用COMMIT或者ROLLBACK语句&#xff0c;则所有的修改都将被保存到数据库中。这种情况下&#xff0c;如果某个操作出现错误&#xff0c;就无法回滚事务&#x…

使用Python实现文字的声音播放

winsound 是 Python 的一个内置模块&#xff0c;它提供了访问 Windows 操作系统的声音播放功能的接口。这个模块可以用来播放简单的声音&#xff0c;例如提示音或者短促的音效。 # Author : 小红牛 # 微信公众号&#xff1a;WdPython import win32com.client import winsound#…

【已解决】axios post请求body为字符串

文章目录 现在需要的参数格式正常post请求参数 解决方法代码示例axiosfetch![在这里插入图片描述](https://img-blog.csdnimg.cn/9372f6efae13432896368aa3e25194cf.png) 现在需要的参数格式 正常post请求参数 解决方法 修改 Content-Type 为 text/plain 参数直接给一个字符串…

RT-Thread 8. RT-Thread Studio arm-gcc使用10.2.1编译

1. gcc编译器下载 E:\RT-ThreadStudio\repo\Extract\ToolChain_Support_Packages\ARM\GNU_Tools_for_ARM_Embedded_Processors2. 把5.4.1 改为5.4.11 再“全部构建”&#xff0c;提示错误 3. 把工具链版本改为10.2.1&#xff0c;再“全部构建”

如何正确设置Kubernetes的request和limit

有效设置Kubernetes的request和limit对应用程序性能、稳定性和成本有重大影响。然而&#xff0c;在过去的一年里&#xff0c;与许多团队的合作向我们表明&#xff0c;很难确定这些参数的正确值。出于这个原因&#xff0c;我们创建了这个简短指南&#xff0c;以帮助团队更准确地…

leetcode动态规划学习

0-1背包问题 参考&#xff1a; 【动态规划/背包问题】那就从 0-1 背包问题开始讲起吧 ... 内容是学习 宫水三叶的刷题日记 公众号专题内容时的笔记&#xff0c;为了方便个人复习整理到这里。建议大家关注该公众号&#xff0c;写的很清楚&#xff0c;有更多内容。 经典0-1背…

Linux进程等待

Linux进程等待 一.什么是进程等待二.为什么要有进程等待三.怎么进行进程调用1.僵尸进程问题2.waitpid3.获取进程退出状态 一.什么是进程等待 通过系统调用wait和waitpid&#xff0c;来进行对子进程进行状态检测与回收功能。 二.为什么要有进程等待 1。之前讲过&#xff0c;子…

【第25例】IPD体系进阶:需求分析团队RAT

目录 简介 RAT CSDN学院相关内容推荐 作者简介 简介 RAT是英文Requirement Analysis Team英文首字母的简称,也即需求分析团队,每个产品线都需要设定对应的一个RAT的组织。 RAT主要负责产品领域内需求的分析活动,是RMT的支撑团队: 这个时候可以将RAT细化为PL-RAT团队,…

C语言--strcmp函数(介绍与自己实现)

strcmp函数&#xff1a;字符串比较函数。 用法&#xff1a;strcmp(str1,str2)。str1&#xff0c;str2可以是字符串常量或者字符串变量&#xff0c;返回值为整形。 str1小于str2,返回负值&#xff0c;str1等于str2,返回为0&#xff0c;str1大于str2,返回正值 那么两个字符串是…

Ubuntu环境下DOSBOX的配置

【步骤一】 先打开命令行&#xff0c;进入root模式&#xff0c;输入如下语句&#xff1a; sudo apt-get install dosbox 该语句的作用主要是安装dosbox 【步骤二】 安装完成之后&#xff0c;命令行输入dosbox 会进入dosbox页面&#xff1a; 【步骤三】 在你的主机中&…