15-单片机烧录FreeTOS操作系统后,程序的执行流程

  • 任务创建

1、在系统上电后,第一个执行的是启动文件由汇编语言编写的复位函数

通过复位函数来初始化系统的时钟,然后再执行__main,初始化系统的堆和栈,然后跳转到main函数

2、在main函数中可以直接进行任务创建操作

因为在FreeRTOS中会自动帮助我们做一些初始化的工作,比如内存堆的初始化,在FreeRTOS中创建任务的时候,系统会自动帮助我们完成。

例如,动态创建任务的函数中就有

申请内存

内存初始化

  • 任务调度

任务创建好后,就需要开启任务调度器。因为创建只是把任务添加到系统中,还没有去实现调度,并且没有实现空闲任务和定时器任务,这些都是在开启任务调度函数的时候实现的。

在 Cortex-M3 架构中,FreeRTOS 为了任务启动和任务切换使用了三个异常:SVC、PendSV 和 SysTick:

SVC(系统服务调用,亦简称系统调用)用于任务启动。

PendSV(可挂起系统调用)用于完成任务切换。

SysTick 用于产生系统节拍时钟,提供一个时间片。

相关推荐
求真求知的糖葫芦19 分钟前
耦合传输线分析学习笔记(八)对称耦合微带线S参数矩阵推导与应用(上)
笔记·学习·矩阵·射频工程
试试勇气27 分钟前
Linux学习笔记(十三)--文件系统
linux·笔记·学习
jrlong40 分钟前
DataWhale大模型基础与量化微调task5学习笔记(第 3 章:大模型训练与量化_Deepspeed 框架介绍)
笔记·学习
A9better44 分钟前
嵌入式开发学习日志52——二值与计数信号量
单片机·嵌入式硬件·学习
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [drivers][clk]clk
linux·笔记·学习
ouliten1 小时前
C++笔记:现代C++封装内存池
笔记
m0_736034852 小时前
1.27笔记
linux·服务器·笔记
日更嵌入式的打工仔2 小时前
(实用向)中断服务程序(ISR)的优化方向
笔记·单片机
离离茶2 小时前
【笔记1-11】Qt 关闭QToolbar的拓展菜单
开发语言·笔记·qt
想放学的刺客3 小时前
单片机嵌入式试题(第25)嵌入式系统可靠性设计与外设驱动异常处理
stm32·单片机·嵌入式硬件·mcu·物联网