2. 嵌入式系统基础

做嵌入式Linux载板硬件设计,第一步不是画原理图,而是把“系统边界”想清楚:处理器在核心板上如何工作,Linux系统由哪些层次组成,哪些电路属于核心板、哪些必须由载板承担。边界一旦模糊,后期就会出现接口电平不匹配、电源时序冲突、启动失败甚至反复改板。本节从处理器架构、Linux系统组成、核心板与载板关系三个角度,建立载板设计的整体认知框架。

一、嵌入式处理器架构:载板设计面对的“上游约束”

嵌入式Linux常用的处理器架构包括ARM Cortex-A系列、RISC-V以及部分MIPS、x86。载板设计者最需要关注的是处理器对外暴露的接口类型、电平标准、时钟需求和电源域划分,而不是CPU内部流水线细节。以典型的ARM SoC为例,其内部通常集成:

  • CPU子系统:多核Cortex-A,负责运行Linux内核与用户态程序;
  • 存储控制器:DDR控制器、NAND/eMMC控制器、SD/MMC控制器;
  • 外设控制器:USB、Ethernet MAC、UART、I2C、SPI、I2S、CAN、PCIe等;
  • 显示与视频:LCD控制器、MIPI DSI/CSI、HDMI;
  • 电源与时钟管理:PMIC接口、晶振输入、PLL、复位控制。

这些控制器在SoC内部是“数字逻辑”,但引脚输出到封装外时,会表现为不同的电平域和驱动能力。例如1.8V的MIPI D-PHY、3.3V的GPIO、1.2V的DDR PHY,载板必须按域供电和匹配。处理器架构决定了载板能扩展什么、不能扩展什么,也决定了信号完整性设计的难度等级。

二、Linux系统组成:从BootROM到应用层

嵌入式Linux不是单一程序,而是一条从芯片上电到应用启动的完整链路。理解这条链路,才能判断载板上哪些器件参与启动、哪些接口在启动阶段必须可用。

上电 → BootROM → SPL/Preloader → U-Boot → Linux Kernel → RootFS → 应用程序
        (芯片内)   (SRAM/DRAM)      (DRAM)    (DRAM)       (eMMC/SD/NFS)

对应到硬件,载板设计需要保证:

  • BootROM阶段:启动模式引脚(BOOT_MODE)必须正确上下拉,决定从eMMC、SD还是USB启动;
  • SPL/U-Boot阶段:调试串口UART必须引出,否则无法看到启动日志;
  • Kernel阶段:DDR、eMMC、PMIC、时钟晶振必须工作正常;
  • RootFS阶段:存储介质容量、文件系统类型、SD卡检测引脚要匹配;
  • 应用阶段:以太网、USB、显示、音频等外设接口按产品需求扩展。
载板设计的一个实用原则:凡是启动链路中必须使用的接口(调试串口、启动模式、复位、电源使能),优先布置在载板上并保留测试点;非启动关键的外设可以后置或模块化。

三、核心板与载板的关系:分工与接口

核心板(Core Board / SOM)通常集成了SoC、DDR、eMMC、PMIC、晶振和必要的去耦电路,对外通过板对板连接器或邮票孔引出信号。载板则承担电源输入、外设扩展、连接器和结构接口。两者的关系可以概括为:核心板保证“最小系统能跑起来”,载板保证“产品功能能落地”。

核心板与载板的分工边界 核心板 SOM(最小系统) SoC / MPU CPU + 外设控制器 DDR 内存 LPDDR4 / DDR4 eMMC / NAND 启动与根文件系统 PMIC 电源 多路电压域 晶振 / RTC 24MHz / 32.768kHz 复位 / 看门狗 上电时序控制 核心板设计边界 高速信号完整性、电源时序、DDR布线 由核心板厂商保证,载板不重复设计 载板只通过连接器取用已定义信号 板对板 连接器 电源/地/信号 载板 Carrier Board(产品功能) 电源输入 DC 12V / PoE 调试接口 UART / JTAG 通信外设 Ethernet / CAN / RS485 显示与音频 LVDS / MIPI / I2S 存储扩展 SD / USB / SATA 用户接口 按键 / LED / 传感器 载板设计边界 接口电平转换、保护电路、连接器选型 电源树、EMC、结构安装、测试点 不改变核心板内部时序与DDR布线 信号/电源 双向传递

从图中可以看出,核心板与载板之间通过连接器传递电源、地和各类信号。载板设计者必须严格依据核心板的数据手册和引脚定义,不能随意更改核心板内部已经确定的电源时序、DDR布线和启动配置。载板能做的,是在连接器之外完成电平转换、接口保护、连接器布局和产品化结构设计。

四、设计边界清单与常见误区

设计项 核心板负责 载板负责 边界判断依据
DDR布线 是 否 DDR颗粒在核心板上,载板不参与
启动模式配置 提供引脚 上下拉电阻 载板决定从eMMC/SD/USB启动
调试串口 引出UART 电平转换与连接器 载板必须保留测试点
电源输入 PMIC及电压域 DC输入、保护、滤波 载板提供整机电源入口
以太网PHY MAC控制器 PHY、变压器、RJ45 PHY通常在载板,需匹配RGMII/RMII
显示接口 显示控制器 背光、连接器、ESD 载板按屏参设计背光与时序
常见误区一:把核心板当成“万能模块”,忽略连接器引脚的电平域。例如核心板GPIO为1.8V,载板直接接3.3V外设,长期工作会损坏SoC引脚。误区二:载板自行添加大容量电容或改变电源上电斜率,导致核心板PMIC时序异常。误区三:调试串口未引出或未留测试点,量产阶段无法定位启动问题。

五、案例:从需求到边界划分

假设要设计一款工业网关,需求为:双网口、RS485、4G模块、SD卡、调试串口、DC 12V输入。选用某ARM核心板后,边界划分如下:核心板提供SoC、DDR、eMMC、PMIC和启动配置;载板负责双路以太网PHY及RJ45、RS485收发器、4G模块的USB和电源控制、SD卡座、调试串口电平转换、DC 12V转5V/3.3V电源树。载板设计时重点检查:RGMII信号是否等长、RS485方向控制引脚是否可用、4G模块峰值电流是否满足、SD卡检测引脚是否与核心板GPIO对应。

把这张边界表在项目启动阶段就与硬件、驱动、结构三方确认,可以避免后期“核心板改不了、载板来不及”的被动局面。嵌入式Linux载板设计的核心能力,不是画最多电路,而是准确判断哪些电路必须由载板承担、哪些必须交给核心板保证。