007、系统架构设计原则与模式
007、系统架构设计原则与模式:从一次深夜调试说起凌晨两点,示波器的波形还在跳动。我盯着屏幕上一段偶现的SPI通信乱码,已经三个小时。问题出在哪里?硬件排查过了,时序也调了,最后发现是数据缓冲区在中断和主循环之间共享时,没做好保护。这根本不是硬件问题,是架构设计时对数据流缺乏约束导致的。那一刻我意识到,好的架构不是画几张漂亮的框图,而是能在深夜帮你快速定位问题的那些隐形的规则。架构原则:那些“不写文档也知道”的规矩单一职责听起来像老生常谈,但嵌入式里太容易犯错了。我见过一个任务函数写了300行,既处理传感器数据,又控制LED显示,还顺便写Flash。出问题的时候,你根本不知道是哪个环节崩了。后来我们硬性规定:一个模块只做一件事。比如数据采集模块就只管采集,至于数据怎么处理、存到哪里,那是别人的事。这样调试的时候,用逻辑分析仪抓一下接口数据,立刻就知道问题在谁家院子里。开闭原则在芯片选型频繁变更的项目里特别有用。之前做物联网终端,Wi-Fi模块从ESP32换成国产方案,驱动层接口保持统一,应用层代码一行没改。怎么做到的?抽象。把“无线通信”抽象成一组标准操作:初始化、发送、接收、休眠。具体芯片怎么实现这些操作,那是驱动层的事。硬件换一茬,软件核心逻辑稳如泰山。依赖倒置这个原则救过我们的项目。早期代码里高层模块直接调底层寄存器,后来芯片停产,换新平台,移植工作量吓死人。现在我们都习惯这样写:// 别这样写:直接操作寄存器*(volatileuint32_t