文章目录
- 前言:首先要谢谢韦东山老师的无私奉献,让我学到了很多东西,我做这个笔记是害怕我会忘记,所以就记录了下来,希望对大家有帮助!
- 关于寄存器
-
- CPU内部的寄存器
- 这些寄存器到底要保存一些什么?
- 某些寄存器记录的场景
- FreeRTOS中怎么创建任务
-
- 创建任务的函数:
- 创建任务时函数内部都干了什么?:
- 任务的调度
-
- 任务调度的基本机制
- 任务调度的核心
- 再深度一点任务链表调度
- 任务调度切换做了什么?
- 关于任务挂起以及休眠期间的行为
前言:首先要谢谢韦东山老师的无私奉献,让我学到了很多东西,我做这个笔记是害怕我会忘记,所以就记录了下来,希望对大家有帮助!
关于寄存器
关于任务的轮换以及中断恢复继续得以原来为止继续运行,一点也离不开寄存器的作用,所以想要了解任务,了解寄存器也是必不可少的!
CPU内部的寄存器
CPU内部有R0、R1、……、R15共16个寄存器
某些寄存器有特殊作用
R13,别名SP,栈寄存器,保存着栈的地址
R14,别名LR,返回地址,保存着函数的返回地址
R15,别名PC,程序计数器,也就是当期程序运行到哪了
这些寄存器到底要保存一些什么?
记录程序运行到了哪里实际上是靠PC寄存器来完成的?PC寄存器的值
函数中一般也会有着函数嵌套的使用,一个函数中还调用了另外一个函数,当这个函数运行完成后,要怎么返回到调用的地址呢?这就要靠LR来记录了!
其他寄存器也有着他们各自要记录的数据,比如R0,R1就专门用来传函数参的!
某些寄存器记录的场景
1、函数调用 2、中断处理 3、任务切换
FreeRTOS中怎么创建任务
创建任务的核心:栈、TCB结构体
创建任务的函数:
看到这个函数的参数中的栈的大小,我们疑惑该如何合理定义他的大小呢?这个定义的栈的内存又是从哪里