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

  • 任务创建

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

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

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

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

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

申请内存

内存初始化

  • 任务调度

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

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

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

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

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

相关推荐
柒月玖.21 小时前
基于AT89C52单片机的计算器设计与仿真
单片机·嵌入式硬件
乐十九21 小时前
物模型详解
嵌入式硬件
czhaii1 天前
STC32G144K246,高速PWM@240Mhz 运行测试
stm32·单片机·fpga开发
炸膛坦客1 天前
Cortex-M3-STM32F1 开发:(十一)ARM Cortex-M 内核中的 MPU 和 FPU
arm开发·stm32·嵌入式硬件
于顾而言1 天前
【笔记】Comprehensive Rust语言学习
笔记·学习·rust
✎ ﹏梦醒͜ღ҉繁华落℘1 天前
单片机开发---分层架构设计
单片机·嵌入式硬件·mongodb
芥子沫1 天前
Docker安装思源笔记&使用指南
笔记·docker·容器·思源笔记
递归不收敛1 天前
三、检索增强生成(RAG)技术体系
人工智能·笔记·自然语言处理
im_AMBER1 天前
React 06
前端·javascript·笔记·学习·react.js·前端框架
国科安芯1 天前
AS32S601ZIT2抗辐照MCU在商业卫星飞轮系统中的可靠性分析
服务器·网络·人工智能·单片机·嵌入式硬件·fpga开发·1024程序员节