一本面向非专业开发者的嵌入式系统入门教程。 以开源墨水屏阅读器 CrossPoint Reader 为贯穿案例,从硬件到软件,从底层到应用,完整拆解一个真实的嵌入式产品是如何构建的。 案例项目:https://github.com/crosspoint-reader/crosspoint-reader

目录

第一部分:基础篇

第 1 章 走进嵌入式开发 什么是嵌入式?和手机/电脑开发有什么不同?ESP32-C3 芯片介绍。CrossPoint Reader 项目概览——我们要拆解的”麻雀”。 第 2 章 硬件世界 墨水屏是怎么显示的?SD 卡怎么接?按键怎么接?电池怎么测?I2C 总线上挂了什么芯片?一块完整的阅读器 PCB 上都有什么。 第 3 章 开发环境搭建 PlatformIO 安装与配置。Arduino 框架与 ESP-IDF 的关系。项目编译、烧录、调试的完整流程。Flash 分区表。

第二部分:驱动篇

第 4 章 与硬件对话——GPIO、SPI、I2C 三种最常用的硬件通信方式。HAL 层设计思想——为什么要把硬件细节藏起来。设备自动识别是怎么做到的。 第 5 章 墨水屏显示原理与驱动 E-Ink 的物理原理。帧缓冲区是什么。全刷、半刷、快刷的区别。像素怎么画、坐标怎么转、灰度怎么抖。 第 6 章 存储系统——SD 卡与文件系统 SD 卡的 SPI 通信。FatFS 文件系统。线程安全的文件操作。Flash 内部存储(NVS)。

第三部分:系统篇

第 7 章 让系统动起来——执行模型与多任务 从 Arduino loop() 到 FreeRTOS 多任务。CrossPoint Reader 的双任务架构。信号量、互斥锁、任务通知——任务间怎么通信。 第 8 章 Android 式页面框架——Activity Manager Activity 的生命周期。页面栈的 push/pop。startActivityForResult 怎么在 MCU 上实现。从 BootActivity 到 HomeActivity 的完整流程。 第 9 章 渲染引擎与字体系统 GfxRenderer 的分块帧缓冲。坐标旋转与像素操作。字体存储与字形查找。字距调整与连字替换。两遍渲染的核心优化。抗锯齿原理。

第四部分:应用篇

第 10 章 极限内存管理——380KB 的生存之道 堆碎片化是什么。分块分配策略。流式处理思想。FNV-1a 哈希替代字符串。二进制缓存设计。每一个字节都是战场。 第 11 章 电子书阅读核心 EPUB 文件结构拆解。ZIP 流式解压。XML/HTML 增量解析。自定义二进制缓存格式。TXT 流式分页。XTC 漫画渲染。断字算法(Liang/TeX)。脚注三层跳转。 第 12 章 网络功能 ESP32 WiFi 连接。内置 Web 服务器。WebDAV 协议实现(Calibre 无线传书)。OPDS 在线书库。KOReader 跨设备同步。

第五部分:工程篇

第 13 章 电源管理与续航优化 CPU 动态调频。深度睡眠与唤醒。电池电量检测(ADC vs I2C)。开机流程与防误触。 第 14 章 OTA 升级与崩溃恢复 双 OTA 分区的安全升级机制。GitHub Release 检查与固件下载。版本号比较。崩溃捕获与诊断报告。 第 15 章 设置系统与国际化 声明式设置表设计。JSON 持久化与格式迁移。Web API 双通道。12+ 语言的国际化方案。 附录 A 关键设计模式速查 项目中使用的所有设计模式总结。

阅读指南

  • 零基础读者:从第 1 章开始顺序阅读,每章都有前置知识说明
  • 有 Arduino 经验:可跳过第 1-3 章,从第 4 章开始
  • 有嵌入式经验:直接看感兴趣的章节,每章相对独立
  • 只想了解架构:重点看第 7、8、10、11 章

约定

  • 所有代码均来自 CrossPoint Reader 真实源码,标注了文件路径
  • // 注释为原始代码注释或笔者补充的解释
  • 中文正文,代码和专有名词保留英文
  • 每章末尾有”本章要点”总结