FreeRTOS内部机制学习01(任务创建的细节以及任务调度的内部机制)

文章目录

  • 前言:首先要谢谢韦东山老师的无私奉献,让我学到了很多东西,我做这个笔记是害怕我会忘记,所以就记录了下来,希望对大家有帮助!
  • 关于寄存器
    • CPU内部的寄存器
    • 这些寄存器到底要保存一些什么?
    • 某些寄存器记录的场景
  • FreeRTOS中怎么创建任务
    • 创建任务的函数:
    • 创建任务时函数内部都干了什么?:
  • 任务的调度
    • 任务调度的基本机制
    • 任务调度的核心
    • 再深度一点任务链表调度
    • 任务调度切换做了什么?
    • 关于任务挂起以及休眠期间的行为

前言:首先要谢谢韦东山老师的无私奉献,让我学到了很多东西,我做这个笔记是害怕我会忘记,所以就记录了下来,希望对大家有帮助!

关于寄存器

关于任务的轮换以及中断恢复继续得以原来为止继续运行,一点也离不开寄存器的作用,所以想要了解任务,了解寄存器也是必不可少的!

CPU内部的寄存器

CPU内部有R0、R1、……、R15共16个寄存器
某些寄存器有特殊作用
R13,别名SP,栈寄存器,保存着栈的地址
R14,别名LR,返回地址,保存着函数的返回地址
R15,别名PC,程序计数器,也就是当期程序运行到哪了

这些寄存器到底要保存一些什么?

记录程序运行到了哪里实际上是靠PC寄存器来完成的?PC寄存器的值

函数中一般也会有着函数嵌套的使用,一个函数中还调用了另外一个函数,当这个函数运行完成后,要怎么返回到调用的地址呢?这就要靠LR来记录了!

其他寄存器也有着他们各自要记录的数据,比如R0,R1就专门用来传函数参的!

某些寄存器记录的场景

1、函数调用 2、中断处理 3、任务切换

FreeRTOS中怎么创建任务

创建任务的核心:栈、TCB结构体

创建任务的函数:

在这里插入图片描述
看到这个函数的参数中的栈的大小,我们疑惑该如何合理定义他的大小呢?这个定义的栈的内存又是从哪里

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值