本文约2500字,今天来制定一个Linux产品应用软件架构的学习计划,后续系统的针对嵌入式终端产品应用层软件架构设计学习。
关注公众号, 即可获得与Linux相关的电子书籍以及常用开发工具,文末有文档清单。
定位:面向消费/工业IPC、网关、工控、智能硬件等Linux终端产品应用层开发,不深挖底层BSP内核驱动,聚焦业务架构、进程模型、组件化、工程落地、量产稳定性。
一 整体学习规划
- 阶段2:嵌入式通用架构核心——进程/IPC/存储/日志/守护框架
- 阶段3:业务分层架构与组件设计——模块化、状态机、插件、异步框架
- 阶段4:项目实战+调优+量产架构——完整产品项目、性能、稳定性、OTA、运维
二 分阶段详细学习路线+任务+输出
阶段1:嵌入式Linux基础地基
目标:看懂现有产品源码,熟练系统调用、Make/CMake、交叉编译,掌握Linux进程资源模型
1)核心知识点
- 文件IO、多路IO:select/poll/epoll(嵌入式高频)
- 进程、fork/vfork、守护进程daemon、僵尸进程处理
- IPC全套:管道、FIFO、共享内存shm、消息队列msg、信号量sem、UNIX域socket
- 信号signal、sigaction、信号屏蔽、定时器timerfd
- 线程pthread:互斥锁、条件变量、读写锁、线程池实现
- Socket网络:TCP长连接、UDP、非阻塞、心跳、断线重连
- 交叉编译、Makefile、CMake、静态库/动态库(.a/.so)
- 工具:gdb、strace、top/htop、vmstat、df/du、valgrind内存泄漏排查
任务&产出
- 系统编程demo逐个手写(epoll服务器、线程池、shm通信、守护进程)
- 搭建一套通用编译工程模板(CMake+交叉编译+日志基础组件)
- 输出:通用基础工具库base_lib(日志、线程、IO、字符串工具)
阶段2:嵌入式产品通用底层架构
目标:掌握所有嵌入式产品必备基础设施组件,所有商用设备必用模块
模块1:日志架构(嵌入式标配)
- 分级日志、按大小/时间滚动切割、持久化存储、远程日志上报
- 同步日志/异步日志双方案、环形缓冲区防阻塞、日志脱敏
模块2:参数配置管理架构
- 配置文件:ini/json/xml、分区持久化(flash读写磨损均衡)
- 分层配置:出厂默认配置 + 用户运行配置 + 临时内存配置
模块3:进程&服务架构
- 单进程多线程 vs 多进程拆分选型(业务隔离、崩溃隔离)
- 主守护进程+业务子进程模型(监控子进程、自动重启、看门狗)
- 看门狗软件实现:喂狗线程、卡死检测、硬件WDT对接
模块4:存储架构(Flash专用)
- 分区规划:只读固件区、配置区、缓存区、日志区、OTA分区
- 读写优化:减少flash擦写、缓存合并写入、断电保护(事务写)
- 轻量文件系统:JFFS2/SquashFS/UBIFS使用适配
模块5:通信中间件(设备内部跨模块通信)
- 方案对比:UNIX socket、MQTT本地、消息队列、共享内存
- 统一消息封装:消息头、序列号、消息类型、异步回调分发器
模块6:定时器&任务调度框架
- 高精度软件定时器、周期任务、延时任务、任务优先级队列
阶段产出
一套完整嵌入式底层基础框架libframework,包含日志、配置、消息总线、定时器、进程监控组件。
阶段3:业务分层架构与高级设计
目标:学会分层解耦、面向产品业务做模块化设计,解决代码臃肿、维护难问题
- 协议交互层:HTTP/MQTT/TCP、云端交互、本地RPC
- 状态机:设备整机状态、业务流程状态(录制/待机/报警)
- 插件化架构:dlopen动态加载业务模块,按需启停
阶段产出
基于libframework搭建分层业务模板,实现一套可复用事件总线+状态机插件框架。
阶段4:完整产品项目实战+量产架构优化
1)完整产品项目(比如IPC摄像头)
功能覆盖:
- OTA升级完整架构(分区校验、断点续传、双分区A/B升级、回滚机制)
2)量产级架构专项学习
阶段最终产出
一套可直接商用的嵌入式Linux应用软件完整工程,包含:基础框架+分层业务+OTA+看门狗+云端通信,附带架构设计文档。
三 配套学习资料清单
书籍
- 《Linux高性能服务器编程》(IO、网络、事件驱动核心)
开源参考项目(重点研读架构)
- RT-Thread APP组件(日志、配置、消息总线思想通用)
- mqtt-client、mosquitto(设备云端通信架构)
- lighttpd/mongoose(嵌入式web服务分层)
- systemd服务架构(Linux系统服务管理思路)
四 复盘标准(保证不浅尝辄止)
五 进阶提升路线(学完基础计划后)
- 跨平台适配架构(Linux + RTOS双系统交互)
往期文章(欢迎订阅技术分享栏目全部文章):
“谢谢你看到这里”这里是女程序员的笔记本
15年+嵌入式软件工程师兼二胎宝妈
分享读书心得、工作经验,自我成长和生活方式。
希望我的文字能对你有所帮助