记录嵌入式系统学习笔记,围绕现代嵌入式软件设计方法展开,从 C 语言与底层内存模型起步,逐步过渡到中断、可移植性、RTOS、事件驱动、状态机、软件追踪、断言与测试。笔记以中文整理为主,强调主线脉络、设计动机和工程取舍,尽量避免逐句翻译。
moderm_embedded/:课程笔记主体,按 lesson 顺序整理。moderm_embedded/images/:部分笔记配图。
目前已整理 lesson 1 到 lesson 49,内容主线大致如下:
- C 语言基础与底层执行模型(1-9)
- 栈、类型系统、结构体与启动代码(10-15)
- 中断与代码可移植性(16-20)
- RTOS 与基础并发模型(21-28)
- 面向对象、事件驱动与 Active Object(29-34, 43-44)
- 状态机与层次状态机(35-42)
- 软件追踪、断言与测试(45-49)
- 1 进入嵌入式世界:二进制、补码与第一段 C 代码
- 2 控制流的第一课:while、if/else 与分支指令
- 3 变量、作用域与指针:从“值”走向“地址”
- 4 从内存映射寄存器开始:第一次点亮板载 LED
- 5 让裸地址代码可维护:宏、设备头文件与 volatile
- 6 位运算驱动 GPIO:只改你想改的那一位
- 7 数组、指针算术与按位GPIO访问
- 8 C函数、调用约定与栈帧
- 9 递归函数、多文件项目与栈帧嵌套
- 10 栈为什么会“炸掉”:溢出、返回地址破坏与异常
- 11 固定宽度整数、字节序与隐式转换
- 12 结构体与 CMSIS:从数据布局到寄存器抽象
- 13 main() 之前发生了什么:启动代码与段初始化
- 14 构建过程、目标文件与链接重定位
- 15 向量表、默认异常处理与启动文件细节
- 16 中断机制与异常入口
- 17 中断优先级与 NVIC 行为
- 18 中断延迟、尾链与实时性细节
- 19 代码可移植性与跨平台差异
- 20 竞态条件与临界区基础
- 21 嵌入式RTOS之前后台架构
- 22 RTOS 什么是实时操作系统
- 23 嵌入式RTOS - 自动化上下文切换
- 24 嵌入式RTOS - 线程轮转调度器
- 25 嵌入式RTOS - 高效阻塞线程
- 26 什么是实时抢占和优先级调度
- 27 RTOS 线程间同步通信机制
- 28 RTOS 互斥机制
- 35 状态机入门
- 36 状态机之 Guard Condition
- 37 其他类型的状态机:从硬件起源到 Input-Driven State Machine
- 38 状态表与状态的 Entry/Exit Action
- 39 用状态处理函数实现状态机,并抽象出可复用的事件处理器
- 40 层次状态机初探
- 41 状态机代码自动生成
- 42 层次状态机语义深入理解
- 45 用 printf 做软件追踪
- 46 用 QP/Spy 做实时软件追踪
- 47 软件断言与 Design by Contract(上)
- 48 软件断言与 Design by Contract(下)
- 49 测试在嵌入式软件开发中的核心地位
如果按主线阅读,推荐顺序如下:
- 先读 1 到 9,建立 C 代码到机器执行的基本模型。
- 再读 10 到 20,理解启动流程、中断和可移植性问题。
- 接着读 21 到 28,进入 RTOS、调度、同步与互斥。
- 然后读 29 到 34 与 43 到 44,把 OOP、事件驱动和 Active Object 串起来。
- 再读 35 到 42,系统理解状态机、层次状态机和代码生成。
- 最后读 45 到 49,把追踪、断言与测试放回完整工程实践中理解。
这些笔记不是英文讲稿直译,而是按以下原则整理:
- 用中文提炼每课主线与关键结论。
- 保留必要英文术语,如 Active Object、state machine、guard condition、Design by Contract。
- 优先解释设计动机、问题来源与工程权衡。
- 尽量把相邻课程之间的承接关系写清楚,方便连续阅读。
