一、核心定义
SoC硬件 :物理载体(所有芯片内核、总线、IP、外设、电路)
SoC软件 :指令与逻辑(驱动、系统、算法、应用、固件)
关系:硬件是骨架肉身,软件是灵魂思想;硬件决定上限,软件决定功能。
二、SoC硬件完整分层
1. 晶体管/门电路:最基础物理单元
2. 数字/模拟IP:CPU、NPU、DSP、ISP、VPU、GPIO、ADC、PLL、LDO等
3. 片上总线架构:AXI/AHB/APB/NoC,所有内核互通道路
4. 存储体系:SRAM、ROM、DDR、Flash、Cache
5. 外设接口:I2C、SPI、UART、MIPI、USB、以太网
6. 电源时钟复位系统:PLL、LDO、电源域、复位电路
7. 整机硬件平台:PCB、电源、屏幕、摄像头、传感器
硬件唯一作用:提供算力、数据通路、信号通路、供电、时序。
三、SoC软件完整分层
1. 底层固件层(紧贴硬件,最底层)
- Bootloader:芯片上电启动引导,初始化硬件、加载系统
- 内核微码:NPU/ISP/DSP/VPU内部专用指令固件
- 硬件配置代码:配置时钟、电源域、引脚复用、总线带宽
- 寄存器配置:直接读写硬件寄存器,控制硬件状态
2. 驱动层(软硬件唯一桥梁)
作用:屏蔽硬件差异,向上提供统一接口
分类:
- CPU通用驱动:串口、GPIO、中断、定时器
- 多媒体驱动:ISP驱动、VPU驱动、DPU驱动
- AI驱动:NPU驱动、算子调度驱动
- 通信驱动:蓝牙、Wi-Fi、以太网驱动
- 本质:把上层软件命令,翻译成硬件能识别的寄存器动作
3. 操作系统层(OS)
- 移动端:Android、iOS
- 嵌入式:Linux、RT-Thread、FreeRTOS
作用:任务调度、内存管理、进程管理、权限管理、功耗管理。只运行在CPU上,统一管理所有硬件资源
4. 中间件/算法层
- 音频算法、图像算法、AI模型、编解码库、通信协议栈
- 可跑在CPU、DSP、NPU任意适配内核
5. 应用层(顶层)
APP、业务程序、桌面程序、控制程序,面向用户功能
四、软硬件五大核心依存关系
1. 硬件决定软件能不能跑
- 没有NPU硬件:AI软件只能CPU软跑,速度极慢
- 没有ISP硬件:无法实现高清拍照成像算法
- 没有VPU硬件:视频只能软件解码,卡顿耗电
- 总线带宽不足:大数据流软件直接跑不通
结论:硬件架构直接定义软件运行环境与性能上限。
2. 软件定义硬件能发挥多少能力
同一款SoC硬件:
- 优化好驱动和算法:性能拉满、功耗极低
- 软件写得差:多核闲置、算力浪费、发热严重
硬件性能是死的,软件调度是活的。
3. 硬件分层对应软件分层
- 模拟硬件(PLL、LDO、ADC)→ 底层配置代码、电源管理软件
- 数字专用IP(ISP/VPU/NPU)→ 专属驱动、专用算法
- CPU内核 → 操作系统、应用、业务逻辑
- 总线DDR → 内存管理、DMA调度软件
4. 数据交互逻辑(最关键流程)
1. 软件下发指令(CPU运行代码)
2. 驱动配置硬件寄存器,唤醒对应IP核
3. DMA硬件自动搬运数据(无需CPU介入)
4. 专用硬件完成运算(ISP成像、NPU推理、VPU编码)
5. 硬件产生中断通知CPU
6. 上层软件读取结果,完成业务逻辑
简单流程:软件发命令 → 硬件自动干活 → 硬件主动上报结果
5. 功耗与性能双向约束
- 硬件电源域、时钟门控,必须由软件控制开关
- 软件动态调频、调压、休眠,决定整机功耗表现
- 硬件散热能力,限制软件不能长时间满跑
五、不同XPU内核 软硬件对应关系
1. CPU
硬件:通用运算内核
软件:系统、应用、驱动、业务逻辑(全部通用代码)
2. NPU
硬件:张量运算阵列
软件:AI框架、模型、算子库、NPU驱动(专用推理软件)
3. ISP
硬件:图像流水线硬件
软件:AE/AWB/HDR成像算法、调校参数、ISP固件
4. DSP
硬件:信号运算内核
软件:音频算法、滤波、语音处理代码
5. VPU
硬件:编解码硬件引擎
软件:码率控制、协议解析、流媒体软件
6. DPU/显示
硬件:图层合成硬件
软件:UI渲染、图层管理、帧率控制软件
规律:CPU跑通用软件,其余内核只跑专用加速软件。
六、软硬件开发先后顺序
1. 先定义硬件规格:确定用哪些IP、总线、算力、接口
2. 硬件前端设计、后端布局、流片
3. 芯片回片后底层固件调试:时钟、电源、启动
4. 开发底层驱动,打通软硬件通路
5. 移植操作系统
6. 适配算法、中间件
7. 开发上层应用
硬件定架构,软件填功能。
七、常见误区纠正
1. 误区:软件全都跑在CPU上
正确:只有系统与业务跑CPU,AI、图像、视频、信号都跑在对应专用硬件上,CPU只做调度。
2. 误区:硬件做好就万事大吉
正确:SoC七成体验靠软件驱动优化,同款芯片不同厂商调校差距极大。
3. 误区:驱动属于硬件
正确:驱动属于纯软件,是连接软硬件唯一中间层。
八、总结
在SoC系统中,硬件包含CPU、NPU、ISP、总线、存储、外设等物理运算与通路资源,是所有程序运行的物理基础;软件分为固件、驱动、操作系统、算法与应用多层架构。
硬件决定芯片算力、接口与性能上限,软件通过驱动配置硬件寄存器、调度各类专用内核,合理分配带宽、功耗与任务;CPU承载系统与通用业务,NPU、ISP、VPU等硬件IP承载专用算法加速,软硬件深度协同,最终实现终端成像、AI、影音、通信等全部产品功能。
夜雨聆风