
模块化计算机的工程价值远不止“换板子省钱”这么简单。我在嵌入式一线做过不少载板项目深深体会到面向批量产品的方案选型本质上是在性能、功耗、成本、通信接口丰富度、供货周期之间不断做平衡。业界有一类产品把这种平衡做到很极致那就是“紧凑型 Computer-on-Module”缩写 CoM中文常叫计算机模块或核心板。这类板卡把处理器、内存、存储、电源管理、高速接口等核心电路全部集成在一张巴掌大甚至更小的载板上再通过标准化连接器引到用户自研的底板上。很多朋友看到 CoM 的第一反应是这不就是一块“小主板”吗和单板计算机SBC有什么区别这个问题问得特别到位。SBC 是把所有外设接口都焊死在板上拿来即用适合做评估和原型验证而 CoM 的定位不是“直接跑系统”而是“作为产品的心脏”。我把 CoM 看作一个“带大脑的插接件”用户只需要围绕它设计一块底板把 CoM 上引出的 PCIe、USB、以太网、MIPI-CSI、GPIO 等信号连到自己的业务电路上一套完整的产品硬件就诞生了。这种“核心板 底板”的架构正是紧凑型 CoM 在工业控制、边缘计算、医疗设备、智能终端等领域被大量采用的根本原因。这篇内容重点聊聊紧凑型 CoM 的整体设计思路、核心硬件细节、围绕它做载板设计的实操要点以及我在调试和量产过程中踩过的坑。无论你是刚接触核心板方案的新手还是正在评估产品硬件路线的工程师这篇文章应该能帮你少走很多弯路。1. 整体结构与设计思路拆解1.1 CoM 的本质把“最少可用系统”模块化Designing a “Computer-on-Module”的含义就是在一个尽可能小的封装里布置一套能够独立启动操作系统的最小硬件系统。这套系统至少包含应用处理器Application Processor也就是 SoC内存常见的从 DDR4 到 LPDDR4/LPDDR5 不等非易失存储通常是一颗 eMMC 或者 SPI NOR Flash用于存放 bootloader、内核镜像和根文件系统电源管理电路包括 PMIC 和多路 DC-DC为 SoC 和内存提供多路电压并保证上电时序符合要求对外接口早期可能是排针现在主流是板对板连接器信号包括 PCIe、USB、千兆网、MIPI-DSI/CSI、I2C、SPI、UART、SDIO、GPIO 等。我习惯把这个“最小系统”比作一个人的躯干和大脑底板则是四肢和感官。躯干和大脑决定“能不能干活”四肢和感官决定“能接什么活、干到什么程度”。这种拆分带来的工程收益非常明显。一个项目如果使用 SBC产品外壳、接口位置、电源规格都要迁就那块标准板的布局。一旦客户的现场需求变了可能需要换一个 CPU 平台SBC 往往整板推倒重来。而使用 CoM 的方案只要底板的接口信号定义不变换一个 CoM 模块处理器平台、内存容量、存储空间都能整体升级底板改动量可能只有几张网表的事。这就是“模块化”最核心的价值把硬件设计从“一次性的”变成“可迭代的”。1.2 为什么一定要强调“紧凑”紧凑型 CoM 的尺寸并没有一个国际统一标准但在行业中形成了一些约定俗成的规格。常见的有PICO-ITX 级别的核心板尺寸在 100mm × 72mm 左右Qseven 规范尺寸 70mm × 70mmSMARC 系列常见 82mm × 50mm 或 80mm × 50mm更小的还有火柴盒大小的专用模块主要面向可穿戴和超小型边缘设备。尺寸刻意做小不只是为了“看起来精致”。在嵌入式产品里物理体积直接决定外壳大小和机构成本。一个 50mm × 80mm 的核心板加上载板之后整体可以控制在银行卡大小这对便携式心电图仪、手持扫码终端、无人机飞控这类对重量和空间都敏感的设备非常重要。紧凑带来的另一个直接好处是功耗天花板被压低。板子小铜皮走线短走线寄生参数小信号质量更容易控制同时小尺寸限制了散热器的规格迫使设计者在选 SoC 的时候就要考虑热设计功耗TDP一般紧凑型模块会优先选中低功耗平台比如 NXP i.MX8M Plus、Rockchip RK3568/RK3588、TI AM62x、Intel Atom x6000 系列等。这些芯片算力不同但共同点是都有不错的性能功耗比能在无风扇被动散热的情况下稳定运行。1.3 模块化设计解决的核心痛点我总结了 CoM 方案在真实项目里解决的五个核心痛点缩短开发周期。SoC 的电源时序、DDR 布线、时钟树设计都是高风险高耗时的工作CoM 厂商已经把这些做完了。开发者只需要专注底板功能整个硬件周期可以从 4-6 个月压到 1-2 个月。降低 Layout 难度。BGA 封装的高密度引脚、DDR 差分走线、高速接口的阻抗匹配对普通硬件工程师是不小的门槛。CoM 把这些全部藏在模块内部底板设计难度大幅下降。方便性能分级。同一块底板低配版插低端 CoM高配版插高性能 CoM产品线瞬间拉开档次。降低备货压力。SoC 供货周期长、价格波动大CoM 由模块商统一备货整机厂不必压太多核心物料库存。支持长生命周期。工业设备的生命周期通常 5-10 年CoM 厂商会对核心模块提供长期的供货承诺和软件维护这是很多整机厂自己做不到的。2. 核心硬件细节解析紧凑型 CoM 里都有什么2.1 SoC 平台选型不是越高配越好选 SoC 是这个阶段最值得花时间的环节。紧凑型 CoM 的 SoC 选择核心考量因素有三个算力需求、外设接口需求和功耗约束。如果做工业 HMI、边缘网关、基础机器视觉我比较推荐 NXP i.MX8M Plus 或 TI AM62x。这两个平台都是 Arm 架构生态成熟Linux BSP 完善工业级温度范围供货稳定。i.MX8M Plus 集成了 2.3 TOPS 的 NPU做轻量级 AI 推理完全没有问题AM62x 则胜在性价比和超低功耗单路或双路千兆网、LCD 显示、CAN-FD 都比较齐全。如果产品需要更强的 GPU 或更高算力Rockchip RK3588 是当前非常热门的选择8 核 A76A55 大小核架构内置 6 TOPS NPU支持 8K 视频编解码在边缘计算盒子、智能终端、多路视频处理这些场景有很强的竞争力。缺点是功耗相对高选它的话散热方案要认真设计。如果需求是纯 x86 生态比如要跑 Windows、或需要大量 x86 上的闭源驱动那 Intel Atom x6000 系列或 AMD 嵌入式的紧凑型模块值得关注。这类模块一般搭配 LPDDR4x 内存整板功耗在 10W 到 15W 左右适合做工业 PC、无风扇工控机。这里我建议所有开发者都做一张选型对比表把候选 SoC 的 CPU 核数、主频、NPU 算力、视频编解码能力、最大内存、关键接口、功耗、工业级温度、供货周期这几列全部列出来再结合手头项目的真实需求去匹配。做这张表的过程比看十篇宣传文章都有用。2.2 内存与存储容量、速率与布局的艺术内存对紧凑型 CoM 的重要性很容易被低估。SoC 性能再强内存带宽跟不上也会成为瓶颈。当前主流的紧凑型 CoM 内存方案有两种板载 LPDDR4/LPDDR4x 颗粒或者板载 DDR4 SO-DIMM 插槽。板载颗粒方案的优点是体积小、抗震性好、信号路径短稳定性高非常契合“紧凑”定位。代价是内存容量在出厂时固定了后续没法扩展。所以选型的时候要提前想清楚产品的生命周期尽量选 2GB 起步、4GB 主流的配置跑 Linux 系统加几个服务进程4GB 是比较舒服的起点。存储方面绝大多数 CoM 会板载 eMMC容量从 8GB 到 128GB 不等。eMMC 的优点是集成度高、成本低、外围电路极简单缺点是顺序写入速度一般不适合高频率的日志写入。如果产品需要大量存储数据可以考虑通过底板扩展 SATA 或 NVMe SSD这就要在选择 CoM 的时候确认它是否引出了足够的 PCIe 通道。还有一个细节容易被忽略eMMC 的寿命和坏块管理。工业场景频繁断电频繁写日志eMMC 的寿命会被快速消耗。建议在系统设计时就做分区规划把频繁写入的目录放到 tmpfs 或单独的外置存储上避免 eMMC 因写放大提前退休。2.3 电源树与功耗预算紧凑型 CoM 另一个核心技术是电源设计。一块模块上通常需要产生多路电压核心电压 VDD_CORE、DDR 电压、IO 电压、模拟电压、PLL 电压等每一路都有不同的上电时序要求。时序错了SoC 可能无法正常启动甚至损坏芯片。CoM 厂商通常会在模块上集成一颗 PMIC 或多颗 DC-DC 芯片由 PMIC 的硬件时序引脚或者通过 I2C 寄存器配置来控制各路上电顺序。底板上要做的是给模块提供一路干净稳定的输入电源常见的是 5V 或 12V并保证足够的电流余量。做功耗预算时我习惯按“典型功耗 × 1.5”来选电源模块。比如一个 i.MX8M Plus 模块的典型整板功耗在 3W 到 5W那我至少会选 7.5W 以上的电源方案并留出 20% 以上的降额。原因是 SoC 在跑满负载和进行 AI 推理时瞬时电流可能是典型功耗的两倍以上。电源输出能力不足轻则性能不稳重则系统重启。2.4 标准接口的布线与引出策略紧凑型 CoM 通过板对板连接器把所有需要引出的信号汇总到模块边缘。常见的连接器类型有高速板对板连接器如 Samtec、Hirose DF40/DF12 系列间距 0.4mm 或 0.5mm引脚数从 80 到 240 不等金手指类型类似 SO-DIMM 插槽多用于 x86 平台的模块。信号引出时一个核心原则是“高速信号优先、敏感信号屏蔽、电源地充分”。我见过不少底板设计为了走线方便把 PCIe 和 USB 的差分对绕来绕去结果信号质量一塌糊涂。建议在 CoM 模块的 datasheet 里详细查看连接器引脚定义留意哪些引脚是高速对、哪些引脚是电源地引脚然后在底板 Layout 时严格按模块厂商的参考设计做。此外GPIO 和低速控制信号虽然布线没有高速信号那么讲究但也要注意避免长距离平行走线防止信号间串扰。底板上的去耦电容摆放位置很关键每个电源引脚附近都应该有 0.1uF 高频去耦电容大容量的电解电容则放在载板电源入口处。3. 基于 CoM 的载板设计与实操要点3.1 从需求到原理图载板设计流程拿到 CoM 模块之后设计载板的第一步永远不是画原理图而是把需求列表写清楚。我会先回答这些问题产品对外提供哪些接口比如 2 路千兆网、3 路 USB 3.0、1 路 HDMI、1 路 RS485是否需要 4G/5G 模块、Wi-Fi/BLE 模块它们走 USB 还是 PCIe是否有 MIPI-CSI 摄像头输入需要几路是否需要音频输入输出模拟还是数字SATA 还是 NVMe需要多少路 PCIe电源输入范围是多少是否有电池充放电需求把这些问题整理成一张接口清单再对着 CoM 的 datasheet 逐个核对引出的信号。此时最容易发现需求与接口不匹配的问题比如模块只引出了 1 路 PCIe但产品又要接 NVMe 又要接 4G 模块这就得提前调整方案。原理图设计时我通常会先做电源树再做主芯片连接关系最后做接口电路。电源设计的原则是逐级降压输入电源先经过保护电路和滤波再经过 DC-DC 降到各接口需要的电压比如 5V、3.3V、1.8V尽量少用 LDO因为 LDO 在大压差下发热严重、效率低。3.2 高速信号布线别让底板拖后腿载板设计中最容易“翻车”的是高速信号。CoM 模块本身的 Layout 通常是比较规范的但信号到了底板之后如果处理不当很容易出现 PCIe 训练失败、USB 枚举不稳定、千兆网速率掉线等问题。这里给出几条我验证过多次的实操原则差分对走线严格等长、等间距。以 USB 3.0 为例差分阻抗要求 90Ω ± 10%对内等长误差控制在 5mil 以内PCIe 走线避免跨分割。跨分割会导致参考平面不连续阻抗突变轻则信号劣化重则链路无法建立。如果实在避不开至少要在跨分割区域下方放置缝合地孔高速信号远离时钟和电源走线。时钟信号是板上最大的干扰源高速信号与其平行走线很容易被耦合连接器处预留 TVS 管或共模电感的位置。对于引到产品外壳的接口比如 USB、网口一定预留静电防护器件否则过 ESD 测试时会很难看。Layout 完成后建议用仿真工具对关键高速链路做一次信号完整性检查。如果公司没有仿真条件至少要用示波器加差分探头实测眼图PCIe 3.0 的标准眼图模板查一下并不复杂。我见过太多项目在测试阶段才发现信号问题等到改版周期和成本都是成倍的损失。3.3 上电时序与电源监控决定系统稳定性的隐形因素载板电源设计还有一个非常容易被忽略的点上电时序。CoM 模块内部有自己的 PMIC 时序但模块自身和载板上的外设之间也有先后上电的关系要求。典型情况是CoM 的 IO 电源域和底板外设的电源域来自不同的 DC-DC如果外设先上电而它的 IO 引脚在没有系统软件配置的情况下输出不确定电平就可能把电流倒灌进 CoM 的引脚轻则引起系统异常重则损坏芯片。解决这个问题有两个思路。思路一是把外设电源和 CoM 的对应 IO 电源做成一个开关由 CoM 的 GPIO 或 PMIC 输出控制保证上电顺序可控思路二是在需要严格时序的设备中使用专门的电源时序控制芯片比如 TI 的 UCD9090 或简单一点的复位监控芯片通过硬件逻辑确保各路电源按固定顺序输出。另外电源监控Power Monitor也是一个值得加的功能。哪怕只是用一颗 ADC 采样模块的电流和电压在调试阶段就能帮我们快速定位“系统为什么重启”“什么时候电流异常”这类问题。有些高端 CoM 模块自带遥测功能通过 I2C 读取模块电压电流这就更省事了。3.4 连接器与机械结构设计电气设计做好后机械结构设计同样决定产品的成败。CoM 模块通过板对板连接器与底板相连需要考虑几个问题连接器的锁紧力。模块应用的场景如果有振动比如车载、无人机必须考虑连接器加装固定螺丝或支架否则振动容易导致接触不良散热通路。许多 CoM 模块热设计功耗集中在 SoC 位置外壳设计时一定要在对应位置预留导热垫或散热器的空间。我不止一次遇到客户把外壳做得严丝合缝却没给 SoC 留散热路径结果整机长期高温运行性能折损严重结构干涉检查。模块和底板连接器有一定的高度外壳的限位筋、电池、屏幕排线等位置都可能与之冲突。建议在结构设计阶段就用 3D 模型做一次完整装配检查不要到了试模才发现问题。4. 软件适配与启动调试4.1 Starup一块 CoM 是怎么跑起来的一个典型的 Arm CoM 模块启动流程大致是这样的SoC 内部的 BootROM 上电后先从预先设定的启动介质比如 eMMC、SD、SPI NOR读取引导程序。BootROM 加载的是低级引导程序通常称为 BL1 或 MMC 中的 Boot0 分区它再加载 U-Boot 或类似引导加载程序U-Boot 初始化 DDR、时钟、串口、网络等基本硬件然后加载 Linux 内核镜像和设备树DTB最后挂载根文件系统执行 init 进程。很多新手遇到 CoM 启动不了第一反应是怀疑核心板坏了。实际经验告诉我超过一半的启动问题出在三个地方电源没供对、引导介质选择跳线/拨码设置不对、设备树与硬件不匹配。所以调试 CoM 的第一步一定是确认串口输出。大多数 CoM 模块都有调试串口通过 USB 转串口工具连上波特率通常是 115200 或 1500000具体参考模块手册。看到串口有输出说明 BootROM 已经跑起来了完全没输出先查电源、时钟、复位引脚这三个是最基本的工作条件。4.2 设备树与驱动适配Linux 系统能够识别载板上的外设靠的是设备树Device Tree。设备树文件描述了硬件有什么设备、使用什么寄存器地址、中断号、GPIO 引脚等。CoM 厂商通常会提供一套基础的设备树覆盖模块本身的资源但载板上的外设需要开发者自己添加节点。写设备树的常见坑包括GPIO 编号搞错。检查 SoC 的 GPIO bank 编号和载板原理图逐一确认引脚复用冲突。同一个引脚既被配置成 I2C 又作为 GPIO 使用驱动加载时会报错或通信异常中断号配置错误。外设中断无法触发驱动轮询不到状态系统表现就是“设备看起来没反应”。建议在调试早期先移植一个最小的设备树只保留模块本身和调试串口、网口确认系统能稳定启动再逐步添加载板外设。每添加一个设备就测试一次问题范围小排查快。4.3 系统镜像制作与部署CoM 的软件部署通常有两条路一条是使用模块厂商提供的官方 SDK 或预编译的 BSP直接用工具烧录另一条是从源码编译内核、生成根文件系统然后用 dd 或 fastboot 烧写到 eMMC。不管走哪条路我都会做一件事先备份模块原厂烧录好的镜像。有些 CoM 模块出厂时自带测试系统和工具是一个很好的参考万一后面刷坏了还能恢复出厂状态。备份方法是把 eMMC 整个读出来比如在 U-Boot 里用 mmc read 命令读取整块 eMMC 到内存再通过 tftp 传到电脑上。部署时建议使用统一的镜像管理方式比如用 Yocto 或 Buildroot 构建一套可重复生成的系统镜像把版本信息、内核配置、设备树都固化下来。开发阶段可能无所谓但量产阶段没有版本管理的软件镜像会带来巨大的维护成本。4.4 系统启动失败的排查清单我按实际经验整理了一张启动故障排查表遇到问题时按顺序检查多数情况都能快速定位。现象可能原因排查步骤串口无输出电源未供电或电压不对测量 CoM 供电电压是否在规格范围内检查电源指示灯串口有乱码波特率配置错误检查调试串口波特率配置常见 115200/1500000U-Boot 启动后卡死DDR 初始化失败或镜像损坏重新烧录 U-Boot检查引导介质选择拨码内核启动 panic设备树与外设不匹配检查 DTB 中是否有错误节点核对中断号和 GPIO网口无法识别驱动未加载或 PHY 地址错误检查设备树中以太网节点和 PHY 复位引脚eMMC 无法挂载分区表损坏或 BootROM 没识别进入 U-Boot使用 mmc list 检查 eMMC 是否存在重新分区5. 常见问题与排查技巧实录5.1 散热不足导致的性能降频紧凑型 CoM 体积小散热面积天然受限。最常见的问题是 SoC 在高负载下触发热保护表现为 CPU 频率被强制拉低系统“变卡”。排查时可以用cat /sys/class/thermal/thermal_zone0/temp不同平台路径略有不同查看当前温度如果温度长期超过 85°C就要考虑改进散热。解决手段包括外壳加导热垫、SoC 位置加散热片、增加通风孔、调整系统调度策略避免长时间全核满载。有些 CoM 平台还支持在设备树里调整热保护阈值但我不建议为了性能把阈值调太高芯片长期高温工作的可靠性会明显下降。5.2 电源纹波导致的异常复位系统运行时不定时复位是最让人头疼的问题之一。用示波器测量 CoM 输入电源的纹波如果尖峰超过电源规格的 5%就要高度怀疑是供电问题。我遇到过一例底板使用一颗 DC-DC 给 CoM 供电负载骤变时输出电压出现明显跌落最后定位到反馈电阻的取值和 PCB 走线导致环路不稳定。解决方法是增大输出电容、优化反馈走线、必要时在 DC-DC 输出端加一个小型 LC 滤波器。这类问题在原理图阶段很难预判只能靠调试和测试。5.3 高速接口的信号完整性问题USB 3.0 或 PCIe 设备时而识别、时而不识别优先怀疑信号完整性问题。建议先用短连接线直接测试模块引出的接口是否正常排除底板问题如果直接在底板上测试就有问题可以用示波器测量差分信号眼图。如果眼图明显张不开检查走线长度、过孔数量、连接器处阻抗补偿。常见做法是在高速差分对连接器附近放置小阻值的串联电阻比如 0Ω 或 22Ω以抑制振铃和过冲。5.4 常见问题速查表我再补充一张简洁的速查表方便现场排查问题现象最可能的位置预处理动作上电后电流很小电源通路或 BootROM 未运行检查使能脚、复位脚电压偶尔启动失败电源时序或复位毛刺用示波器抓上电复位波形确认时序裕量千兆网只能协商到百兆差分线对问题或 PHY 配置错误检查 PHY 地址、时钟、MDI 接线USB 设备功耗过大导致重启载板 USB 供电能力不足改为独立供电加限流保护屏幕显示花屏LVDS/eDP/MIPI-DSI 信号异常检查差分对等长、屏参配置、供电外接 RTC 不走时电池电压不足或 I2C 地址冲突检查电池电压、设备树 RTC 节点5.5 量产阶段的工艺注意事项设计验证通过之后进入量产还有一个大坑CoM 模块与底板的连接器在 SMT 贴片阶段很容易出现虚焊或连锡这个问题在小批量打样时不一定能暴露但在批量生产时良率可能会一下掉下来。量产前要和 PCB 代工厂、SMT 厂确认连接器的开钢网方式、锡膏厚度、回流焊曲线。连接器引脚密度高对钢网开口精度要求很高。另外模块插入底板时建议设计防呆结构防止反插导致烧板。我曾见过一个返修率极高的项目最后查出来是产线工人把连接器插反了几块板直接报废。6. 项目经验总结哪些决策决定了最终成败做了几个基于紧凑型 CoM 的项目之后有几个体会特别深刻。一是选 SoC 时不要只看峰值性能。很多项目最后被卡住不是算力不够而是某个外设接口数量不足或者软件生态不完善。比如某个平台只有 vendor 提供的 BSP内核版本很低很多现代中间件跑不起来这时候再想换平台已经晚了。建议项目初期就把软件团队拉进来拿真实的业务程序在候选 SoC 上跑一轮性能测试和兼容性验证。二是绝对不能省掉“硬件在环测试”。只跑 Linux 登录到 shell不代表系统稳定。用压力测试工具把 CPU、内存、网络、磁盘全部打满跑 72 小时以上再配合高低温循环才能真正暴露电源和散热问题。我有一条经验设备在常温下稳定运行不代表在夏天的高温车间也能稳定运行。环境试验不是可选项是必选项。三是模块化的优势需要团队习惯配合。CoM 方案把硬件设计的工作量从“核心板设计”转移到了“底板设计和系统集成”这就对软件和结构团队提出了更高的协作要求。如果团队还停留在“硬件板卡画完就完事”的思路CoM 的优势发挥不出来反而会觉得“多了一个中间环节”。四是永远准备一套快速恢复方案。量产设备现场出了问题如果只能返厂重刷维护成本极高。建议在底板设计时就预留一个 USB 烧录口或者 TF 卡启动接口让现场工程师可以实现不拆机恢复系统。7. 最后一个建议针对想入坑 CoM 方案的开发者我的建议是第一次接触不要直接买高性能高功耗的旗舰模块先选一款主流的、资料丰富的中端平台把整个“核心板 底板 系统启动 驱动适配”的过程完整跑通。这个流程走通一次之后再切换到其他平台你会发现很多设计思路和经验是可以复用的。我自己在实际操作中的另一个体会是CoM 方案的文档阅读能力比想象中更重要。模块厂商提供的 datasheet、参考设计、硬件手册动辄几百页很多关键信息藏在“Note”和“Application Notes”里。拿到 module 的第一周不要急着画板先把手册从头到尾翻一遍把引脚的哪些信号是高速对、哪些引脚有特殊上电要求、哪些接口需要外部加电平转换等关键信息全部标记出来这会省掉后面两周的调试时间。最后再分享一个小技巧设计底板时在 CoM 模块周围预留几个测试点把关键的电源、复位、时钟信号都引出来。调试的时候测试点就是你的“窗口”没有测试点你只能靠猜有了测试点示波器一探就知道问题在哪。这个小习惯帮我节省了大量定位问题的时间。