|
1 | | -# 目录草稿 |
2 | | - |
3 | | -## 第一部分:起手操作 |
4 | | - |
5 | | -### 第0章 一切的前提 |
6 | | - |
7 | | -- [x] 前言 |
8 | | -- [x] 嵌入式的资源与实时约束(Flash/ROM、RAM、CPU、功耗、启动时间、确定性) |
9 | | -- [x] 急速C语言速通复习 |
10 | | -- [x] 传统C++98比C多了什么呢? |
11 | | -- [x] 语言选择原则:何时用 C++、用哪些 C++ 特性(折中与禁用项) |
12 | | -- [x] 性能 vs 可维护性的真实取舍 |
13 | | -- [x] 编码规范建议(小型嵌入式友好的 C++ 子集/风格指南) |
14 | | -- [x] 练习:评估三个小示例(用 C、用 C++(面向对象),比较代码大小与性能) |
15 | | - |
16 | | ------- |
17 | | - |
18 | | -### 第1章 工具链与构建(为性能调优打基础) |
19 | | - |
20 | | -- [x] 交叉编译基础与 CMake 多目标构建 |
21 | | -- [x] 常用编译器选项(-O0/-Og/-O2/-Os/-Ofast、-fno-exceptions、-fno-rtti、-ffunction-sections/ -fdata-sections、-Wl,--gc-sections) |
22 | | -- [x] 链接器 |
23 | | -- [x] 链接脚本(Memory、FLASH/RAM 布局、.bss/.data/.rodata) |
24 | | -- [x] 启动代码与初始化顺序(全局构造、构造开销) |
25 | | - |
26 | | ------- |
27 | | - |
28 | | -## **第二部分:性能优化核心** |
29 | | - |
30 | | -#### 第2章 零开销抽象原则 |
31 | | - |
32 | | -- [x] 3.1 什么是零开销抽象(Zero-overhead Abstraction) |
33 | | -- [x] 3.2 内联函数与编译器优化 |
34 | | -- [x] 3.3 constexpr:编译期计算 |
35 | | -- [x] 3.4 编译期多态 vs 运行时多态 |
36 | | - |
37 | | -#### 第3章 高效的类设计 |
38 | | - |
39 | | -- [x] 4.1 构造函数优化:初始化列表与成员初始化 |
40 | | -- [x] 4.2 移动语义(Move Semantics)在嵌入式中的应用 |
41 | | -- [x] 4.3 RVO与NRVO(返回值优化) |
42 | | -- [x] 4.4 空基类优化(EBO) |
43 | | -- [x] 4.5 对象大小与内存对齐,trivial类型与标准布局类型,聚合初始化与designated initializers(C++20) |
44 | | - |
45 | | -#### 第5章 编译期编程技术 |
46 | | - |
47 | | -- [x] `constexpr`(C++11/14/17/20)与设计技巧:常量表达式计算、lookup tables、编译期字符串处理 |
48 | | -- [x] `consteval`、`constinit`(C++20) |
49 | | -- [x] 编译期应用——查找表生成,状态机设计与单位转换与物理量计算 |
50 | | -- [x] `if constexpr` |
51 | | - |
52 | | ------- |
53 | | - |
54 | | -## **第三部分:内存管理与资源控制** |
55 | | - |
56 | | -#### 第6章 避免动态内存分配 |
57 | | - |
58 | | -- [x] 7.1 动态内存的代价:碎片化与不确定性(内存布局(静态、堆、栈)、碎片化与内存对齐) |
59 | | -- [x] 7.2 静态存储与栈上分配策略 |
60 | | -- [x] 7.3 对象池(Object Pool)模式 |
61 | | -- [x] 7.4 固定池 / slab / arena 分配器实现与比较 |
62 | | -- [x] 7.5 禁用 heap 或限制 heap 时的替代策略:放置new(Placement New)的使用 |
63 | | -- [x] 7.6 std::array vs C数组,你们知道嘛? |
64 | | - |
65 | | -#### 第7章 智能指针与RAII |
66 | | - |
67 | | -- [x] RAII 在驱动/外设管理中的应用(GPIO、SPI、DMA、文件句柄) |
68 | | -- [x] `unique_ptr`、`shared_ptr` 的嵌入式取舍(内存成本、控制周期) |
69 | | -- [x] intrusive 智能指针与引用计数(非堆实现) |
70 | | -- [x] 8.2 std::unique_ptr:零开销的独占所有权 |
71 | | -- [x] 8.3 std::shared_ptr在嵌入式中的考虑 |
72 | | -- [x] 8.4 自定义删除器(Custom Deleter) |
73 | | -- [x] 8.5 引用计数的实现与性能 |
74 | | -- [x] 8.6 作用域守卫(Scope Guard)模式 |
75 | | - |
76 | | -#### 第8章 容器与数据结构 |
77 | | - |
78 | | -- [x] 9.1 std::array:编译期固定大小数组 |
79 | | -- [x] 9.2 std::span(C++20):非拥有型视图 |
80 | | -- [x] 9.3 循环缓冲区实现 |
81 | | -- [x] 9.4 侵入式容器设计 |
82 | | -- [x] 9.5 etl库(Embedded Template Library)介绍 |
83 | | -- [x] 9.6 自定义分配器(Allocator) |
84 | | - |
85 | | ------- |
86 | | - |
87 | | -## **第四部分:现代C++特性应用** |
88 | | - |
89 | | -#### 第9章 类型安全与强类型 |
90 | | - |
91 | | -- [x] 10.1 enum class:强类型枚举 |
92 | | -- [x] 10.2 类型安全的寄存器访问 |
93 | | -- [x] 10.3 std::variant:类型安全的联合体(C++17) |
94 | | -- [x] 10.4 std::optional:可选值语义(C++17) |
95 | | -- [x] 10.5 std::expected:错误处理新范式(C++23) |
96 | | -- [ ] 10.6 类型别名与using声明 |
97 | | -- [ ] 10.7 字面量运算符与自定义单位 |
98 | | - |
99 | | -#### 第10章 函数式编程元素 |
100 | | - |
101 | | -- 11.1 Lambda表达式基础 |
102 | | -- 11.2 Lambda捕获与性能影响 |
103 | | -- 11.3 std::function vs 函数指针 |
104 | | -- 11.4 回调机制的零开销实现 |
105 | | -- 11.5 std::invoke与可调用对象 |
106 | | -- 11.6 函数式错误处理模式 |
107 | | -- 11.7 管道操作与范围库(Ranges,C++20) |
108 | | - |
109 | 1 | #### 第11章 并发与同步 |
110 | 2 |
|
111 | | -- 12.1 原子操作(std::atomic) |
112 | | -- 12.2 内存序(Memory Order)详解 |
113 | | -- 12.3 无锁数据结构设计 |
114 | | -- 12.4 std::mutex与RAII锁守卫 |
115 | | -- 12.5 中断安全的代码编写 |
116 | | -- 12.6 临界区保护技术 |
117 | | -- 12.7 RTOS任务间通信 |
118 | | -- C++ 内存模型简介(顺序一致性、释放/获取语义) |
119 | | -- `std::atomic`、原子操作、内存栅栏在嵌入式的使用 |
120 | | -- 轻量同步:自旋锁、信号量、条件变量的代价(RTOS vs Linux) |
121 | | -- Lock-free 与无阻塞数据结构(适用场景、ABA 问题) |
122 | | -- 练习:实现一个 lock-free 单生产者单消费者环形缓冲区并测试延迟 |
| 3 | +- [x] 12.1 原子操作(std::atomic) |
| 4 | +- [x] 12.2 内存序(Memory Order)详解 |
| 5 | +- [ ] 12.3 无锁数据结构设计 |
| 6 | +- [ ] 12.4 std::mutex与RAII锁守卫 |
| 7 | +- [ ] 12.5 中断安全的代码编写 |
| 8 | +- [ ] 12.6 临界区保护技术 |
| 9 | +- [ ] 12.7 RTOS任务间通信 |
| 10 | +- [ ] C++ 内存模型简介(顺序一致性、释放/获取语义) |
| 11 | +- [ ] `std::atomic`、原子操作、内存栅栏在嵌入式的使用 |
| 12 | +- [ ] 轻量同步:自旋锁、信号量、条件变量的代价(RTOS vs Linux) |
| 13 | +- [ ] Lock-free 与无阻塞数据结构(适用场景、ABA 问题) |
| 14 | +- [ ] 练习:实现一个 lock-free 单生产者单消费者环形缓冲区并测试延迟 |
123 | 15 |
|
124 | 16 | #### 第12章 实用语言特性 |
125 | 17 |
|
|
0 commit comments