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

  • 任务创建

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

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

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

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

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

申请内存

内存初始化

  • 任务调度

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

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

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

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

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

相关推荐
卢奕冰20173 分钟前
51单片机测试题AI作答测试(DeepSeek & Kimi)
单片机·kimi·deepseek
小仇学长7 分钟前
嵌入式八股文(五)硬件电路篇
单片机·嵌入式硬件
Archie_IT9 分钟前
Ollama辅助工具在思源笔记中的核心玩法助力实现AI高效创作
人工智能·笔记
promising-w28 分钟前
【蓝桥杯单片机】客观题
单片机·蓝桥杯
小殷学长2 小时前
【单片机毕业设计14-基于stm32c8t6的智能宠物养护舱系统设计】
stm32·单片机·课程设计
极客BIM工作室2 小时前
AI探索笔记:线性回归
人工智能·笔记·线性回归
charlie1145141912 小时前
从启动说起到单片机点灯发生了什么上——库层次
单片机·嵌入式硬件·arm汇编·初始化
W说编程2 小时前
在嵌入式Linux中实现高并发TCP服务器:从select到epoll的演进与实战
linux·服务器·c语言·嵌入式硬件·tcp/ip
美好的事情总会发生3 小时前
GMII(Gigabit Media Independent Interface)详解
linux·嵌入式硬件·硬件工程
s_little_monster3 小时前
【Linux】缓冲区和文件系统
linux·运维·服务器·经验分享·笔记·学习·学习方法