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

  • 任务创建

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

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

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

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

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

申请内存

内存初始化

  • 任务调度

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

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

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

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

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

相关推荐
大筒木老辈子3 小时前
C++笔记---并发支持库(atomic)
java·c++·笔记
Cricyta Sevina3 小时前
Java Collection 集合进阶知识笔记
java·笔记·python·collection集合
IMPYLH3 小时前
Lua 的 Coroutine(协程)模块
开发语言·笔记·后端·中间件·游戏引擎·lua
点灯master3 小时前
DAC8562的驱动设计开发
c语言·驱动开发·stm32
遇到困难睡大觉哈哈3 小时前
HarmonyOS 应用数据持久化概述:Preferences、KV-Store、RelationalStore 到底怎么选?
笔记·华为·harmonyos
czhaii4 小时前
8051U深度入门到32位51大型实战
单片机
Hans_Rudle4 小时前
在香橙派(昇腾NPU)(kunpengpro/aipro)上部署自己的模型 -以Unet为例
嵌入式硬件·香橙派
风123456789~4 小时前
【健康管理】第13章 医学伦理与职业道德
笔记·证书·健康管理
FakeOccupational4 小时前
【电路笔记 信号】信号能量在传输线中指数衰减+衰减系数特性+能量介质传播与指数衰减的关系+dB标度+功率指数衰减
笔记
boneStudent4 小时前
Day28:I2C 配置与使用
stm32·单片机·嵌入式硬件