🧱 从零搭建微型RTOS内核
30章 · 手写内核
📚 友好色系
01
RTOS概述
什么是RTOS · 为什么需要RTOS · 与裸机区别 · FreeRTOS/uCOS/RT-Thread
02
开发环境搭建
硬件平台(STM32) · ARM GCC · Makefile · 点亮LED验证
03
C语言基础复习
指针与函数指针 · 结构体内存对齐 · 链表操作 · volatile · 位操作
04
启动代码与链接脚本
STM32启动流程 · 汇编启动分析 · .ld文件 · 堆栈与中断向量
05
系统时钟与滴答定时器
HSE/PLL配置 · SysTick原理 · 微秒/毫秒延时
06
临界区与原子操作
临界区概念 · 关中断原子操作 · CPS指令 · 进入/退出宏
07
任务控制块(TCB)
任务状态 · TCB结构体(栈指针/优先级) · 链表管理 · 初始化
08
任务栈设计
栈空间分配 · 生长方向与SP · 栈初始化(压栈顺序) · 溢出检测
09
任务创建与删除
创建API(参数/栈/优先级) · 删除与回收 · 空闲任务 · 任务名管理
10
任务状态与切换
就绪/运行/阻塞/挂起 · 状态转换图 · 调度器 · 切换触发条件
11
PendSV异常与上下文切换
PendSV原理 · 触发方法 · 保存/恢复寄存器 · 切换函数
12
调度器启动与第一个任务
调度器初始化 · 启动第一个任务 · SVC异常 · 系统验证
13
时间片轮转调度
时间片概念 · SysTick触发调度 · 时间片计数器 · 同等优先级轮转
14
优先级抢占调度
优先级位图算法 · 查找最高优先级 · 抢占触发 · 实现
15
阻塞延时(Blocking Delay)
SysTick时间基准 · 延时链表 · 任务延时函数 · 唤醒机制
16
空闲任务与系统统计
空闲任务钩子 · CPU利用率 · 栈使用统计 · 运行时间统计
17
信号量(Semaphore)
信号量原理 · 二值/计数 · 创建/获取/释放 · 等待队列
18
互斥量(Mutex)
优先级反转 · 优先级继承 · 互斥量实现 · 递归互斥量
19
消息队列(Message Queue)
队列数据结构 · 创建/发送/接收 · 阻塞机制 · 示例
20
事件标志组(Event Flags)
事件标志原理 · 独立/组合等待 · 设置/等待/清除 · 实现
21
软件定时器(Software Timer)
定时器原理 · 状态机 · 链表管理 · 回调函数执行
22
内存管理(Heap)
静态/动态分配 · First-Fit算法 · 内存碎片 · malloc/free实现
23
中断管理
中断嵌套与优先级 · 中断RTOS API · Bottom Half · 安全编程
24
多核与SMP基础(选读)
多核调度 · CPU亲和性 · 自旋锁 · AMP与SMP架构对比
25
低功耗管理
WFI/WFE指令 · Tickless模式 · 空闲低功耗 · 唤醒补偿
26
调试与追踪
串口打印 · 栈溢出检测 · 运行时状态导出 · SystemView集成
27
移植到新平台
移植接口(时钟/中断/上下文) · M0/M3/M4差异 · 验证步骤
28
综合项目:多任务温湿度采集
任务划分(传感器/显示/通信) · 信号量同步 · 消息队列 · 整合
29
综合项目:简易无人机飞控框架
姿态解算 · PID控制 · 遥控器接收 · 任务优先级设计
30
课程总结与进阶
RTOS设计模式 · 面试题解析 · 学习资源 · 下一步方向