SoC(System on Chip,片上系统)是把 CPU、内存控制器、外设控制器和专用加速单元等系统核心能力集成到一颗芯片中的硬件平台。
核心问题
传统计算系统可以由许多独立芯片组成:CPU、桥片、外设控制器、图像处理器、网络控制器等。嵌入式设备、手机、机器人主控和边缘 AI 设备通常受体积、功耗、成本和可靠性限制,不能无限堆独立芯片。
SoC 解决的是“把一套设备所需的计算和 I/O 能力尽量集成到单芯片平台里”的问题。它让厂商可以围绕一颗芯片设计不同板卡和设备。
核心结构
一个 SoC 通常包含:
- 处理核心:一个或多个 CPU core,常见于 ARM、RISC-V 或 x86 架构。
- 专用加速单元:GPU、NPU、DSP、ISP、视频编解码单元等。
- 内存与总线系统:DDR 控制器、片上互连、缓存和 DMA。
- 外设控制器:USB、PCIe、Ethernet、I2C、SPI、UART、PWM、GPIO、CAN 等。
- 安全与启动模块:安全启动、加密引擎、eFuse、TrustZone 或类似安全域。
- 电源与时钟控制:PLL、时钟树、电源域、低功耗状态管理。
SoC 定义的是“芯片内部有什么能力”;具体设备能用哪些能力,还取决于板卡设计有没有把引脚、供电、外设和连接器接出来。
工程用途
SoC 选型会影响设备的大部分底层工程边界:
- 性能:CPU 核数、NPU 算力、内存带宽和视频编解码能力。
- 外设能力:摄像头路数、网口、USB、CAN、串口和显示接口。
- 软件生态:Linux 支持程度、驱动成熟度、厂商 SDK、Yocto 或 Buildroot 支持。
- 功耗和散热:是否需要风扇、散热片、电源管理策略。
- 长期维护:内核版本、驱动上游程度、安全更新和供货周期。
在嵌入式 Linux 项目里,SoC 往往决定底层启动链路和 设备 BSP 的基础形态。
边界与常见坑
- SoC 不等于开发板:SoC 是芯片,开发板是围绕芯片设计的 PCB 和外设组合。
- 同一 SoC 不等于同一设备:不同厂商板卡可能接不同屏幕、摄像头、网卡、存储、电源芯片和接口。
- SoC 支持不等于产品可用:芯片手册写支持某接口,不代表你的板子引出了该接口,也不代表驱动已经稳定。
- 算力指标不等于端到端性能:内存带宽、驱动、模型编译器、散热降频和 I/O 都可能成为瓶颈。
- 厂商 BSP 不等于上游 Linux:厂商内核可能有大量私有补丁,升级和长期维护成本要单独评估。