如果模型推理全部由硬件芯片(BPU/NPU)完成,嵌入式软件到底在干什么?
先抛出核心结论:硬件 BPU 只解决一件事:神经网络张量乘加运算。它不理解图像、不理解业务、不理解时序、不理解外设、不理解故障。硬件只负责 “计算”;嵌入式软件负责串联整条系统,调度硬件、承接业务、处理边界、打通数据流。
结合你前面 RDK X5、ISP+BPU 架构、光斑检测场景,分层讲清楚嵌入式软件的核心工作,同时区分:硬件能做什么、硬件做不了什么。
一、先划定边界:专用 BPU 硬件的能力上限
以 RDK X5 的 BPU 为例: ✅ 硬件可以完成:模型编译后的微码加载、卷积 / 池化 / 激活等算子并行运算、张量读写。 配合 VPC 硬件单元,可以硬件完成缩放、YUV 转 RGB、色度上采样。
❌硬件绝对不会主动做这些事:
- 不会主动启动摄像头、不会控制 ISP 参数;
- 不会自动触发一帧图像送入推理;
- 不会解析 BPU 输出的原始检测数据;
- 没有状态机、没有逻辑分支、异常不会自动恢复;
- 无法和网口、串口、伺服电机、存储、上位机通信。
硬件是被动运算单元,如同工厂里一台全自动机床;机床能加工零件,但机床不会自己上料、不会下料、不会质检、不会把成品打包发送。嵌入式软件就是整条产线的调度控制系统。
二、嵌入式软件五大核心工作
1. 数据流全链路调度:串联传感器 → ISP → VPC → BPU
硬件各个模块相互独立,没有软件调度,各个硬件单元无法自动流水线工作。 软件需要完成:
- MIPI 摄像头初始化、帧率配置、触发模式(连续 / 外触发);
- ISP 参数加载、动态曝光、增益、暗场校正切换(266nm DUV 相机尤其关键);
- 管理 ION 共享内存,分配图像缓存、张量缓存;
- 控制帧数据流:一帧图像就绪后,通知 VPC 预处理,再触发 BPU 推理;
- 流量控制、丢帧策略、防止内存溢出。
举个例子: DUV 相机输出灰度图像,软件决定:什么时候送图像进 BPU;繁忙时要不要丢帧;缓存队列深度多少。硬件不会自主管理。
2. AI 推理结果后处理(BPU 输出只是原始数值,不是业务结果)
BPU 输出内容:一堆浮点 / INT8 数组,检测框坐标、置信度、类别 ID。硬件无法完成业务层面解析,全部依赖嵌入式软件:
- 置信度阈值过滤、NMS 非极大值抑制(很多 BPU 硬件不内置 NMS,或内置版本功能受限);
- 坐标还原:推理输入是 640×640,原图是 1080P,把归一化框映射回原始图像像素坐标;
- 业务算法运算:
对应场景:利用光斑框灰度图求解光斑质心、计算激光指向偏移角度、角度滤波、抑制抖动。 这部分属于业务算法,不属于神经网络,BPU 硬件无法实现。
3. 外设交互、对外通信、闭环控制
边缘设备最终目的是输出结果、参与控制:
- 通过网口 / 串口把光斑偏移量上报上位机;
- 驱动伺服电机,根据激光偏移量执行光路闭环调整;
- 本地日志存储、图片抓拍、异常录像;
- 接收外部指令:启动 / 停止采集、参数远程配置。
所有 IO、通信、闭环控制逻辑,完全由嵌入式软件承载。
4. 系统状态管理、异常处理、可靠性保障
硬件只会 “正常计算”,一旦出现异常硬件不会自愈:
- 相机断线、图像黑屏、曝光异常;
- BPU 推理超时、硬件报错、内存泄漏;
- 温度过高、时钟异常、供电波动; 嵌入式软件需要:故障检测、重试机制、软复位、看门狗、故障告警、优雅降级。
工业设备要求 7×24 小时运行,可靠性绝大多数依靠软件兜底。
5. 人机交互、参数配置、业务策略管理
- ISP 降噪强度、推理阈值、滤波系数、报警阈值可配置;
- 区分工作模式:调试模式 / 正常检测模式;
- 标定流程实现:激光基准位置标定、坐标校准(标定逻辑是软件流程)。
硬件固化,无法灵活切换策略;参数变更不能重新编译硬件微码,只能软件实现。
三、区分一个高频误区
“既然 VPC、ISP、BPU 都是硬件加速,是不是嵌入式软件工作量大幅减少?” 正确理解:像素级大规模运算工作被硬件接管;软件工作重心从 “图像运算” 转移到 “系统调度、业务逻辑、控制闭环、异常治理”。
通用 x86+GPU 平台:软件既要写预处理,又要调度推理,还要业务处理; RDK X5 这类边缘平台:软件摆脱大量像素运算负担,但系统工程、时序调度、软硬件协同复杂度上升。
四、横向对比两种平台嵌入式软件工作重心
PC / 工控机 CPU+GPU 方案嵌入式软件重心:实现图像预处理代码、张量转换、推理调用;大量代码围绕像素运算。
RDK X5 BPU 硬件推理方案嵌入式软件重心: 硬件资源调度、内存管理、流水线同步、AI 结果后处理、业务算法、通信闭环、设备可靠性; 几乎不再手写大规模图像运算代码,但对时序、共享内存、硬件流水线理解要求更高。
五、极简类比方便理解
把整套视觉系统比作印刷厂:
- BPU/NPU 硬件 = 高速印刷机(专门负责印刷);
- ISP/VPC = 纸张预处理设备;
- 嵌入式软件 = 厂长 + 调度员: 负责送纸、启动机器、收集印刷成品、质检、打包发货、处理卡纸故障、对接客户订单。 印刷机再强大,没人调度,不会自己完成整套业务。
六、延伸结合之前的团队分工逻辑
很多人产生疑问:推理硬件化了,嵌入式工程师价值在哪里? 答案: 芯片微码工程师、工具链工程师解决模型能不能跑、跑多快;
嵌入式软件工程师解决整套设备能不能稳定工作、能不能满足业务控制需求。
硬件只是算力底座,产品价值最终依靠嵌入式软件串联成完整可用的系统。