当前位置:首页>Linux>嵌入式 Linux 设备从立项到量产、维护的完整开发流

嵌入式 Linux 设备从立项到量产、维护的完整开发流

  • 2026-10-11 08:10:42
嵌入式 Linux 设备从立项到量产、维护的完整开发流

开发流程:

    • 需求立项:定义产品形态、硬件平台、系统能力、成本、功耗、认证、量产目标。
    • 平台选型:选择 SoC、内存、Flash、无线模块、外设、Linux BSP、供应商支持能力。
    • 硬件开发:原理图、PCB、EVT/DVT/PVT 打样验证。
    • BSP 开发:Bootloader、Kernel、Device Tree、驱动、RootFS、文件系统。
    • 系统集成:中间件、业务服务、应用程序、升级、安全、日志、诊断。
    • 测试验证:功能、稳定性、性能、功耗、兼容性、老化、异常恢复。
    • 量产导入:烧录、校准、工厂测试、序列号、密钥注入、产测工具。
    • 发布维护:OTA、问题回溯、版本管理、安全补丁、客户现场支持。
    (文章很长,内容很真,推荐阅读,大屏更佳)

    一、需求阶段

    大公司通常不会一上来就写代码,而是先做需求拆解。

    - 主要输入:

    • 产品定义:设备用途、用户场景、目标市场

    • 硬件约束:CPU、内存、Flash、功耗、温度范围、接口数量

    • 软件能力:启动时间、联网能力、UI、音视频、AI、边缘计算、数据采集等

    • 可靠性要求:7x24 小时运行、掉电保护、看门狗、异常自恢复

    • 安全要求:Secure Boot、固件签名、加密存储、权限隔离

    • 量产要求:产测、烧录、校准、SN/MAC/证书写入

    • 合规认证:CE/FCC/SRRC/CCC/ROHS/医疗/车规/工业认证等

    -典型产物:

    • PRD:产品需求文档

    • SRS:软件需求规格

    • 系统架构设计

    • 风险清单

    • 项目排期

    • 版本里程碑计划


    二、平台选型(关键)

    - 常见评估点:

    • SoC 性能:CPU/GPU/NPU/DSP/ISP/编解码能力

    • Linux BSP 成熟度:内核版本、驱动完整度、Yocto/Buildroot 支持

    • 供应商支持:FAE 响应速度、源码质量、长期维护能力

    • 成本:芯片价格、外围器件成本、授权费用

    • 生命周期:芯片供货周期是否满足 3~5 年甚至更久

    • 安全能力:TrustZone、OTP/eFuse、Crypto Engine、Secure Boot

    • 量产能力:烧录工具、校准工具、产测方案是否成熟

    - 常见做法:

    • 先拿 EVB 开发板验证关键功能

    • 跑性能、功耗、温度、启动时间测试

    • 评审供应商 BSP 代码质量

    • 做芯片替代风险评估

    • 建立平台基线,而不是每个产品从零开始


    三、硬件开发阶段

    硬件通常分为几个阶段。

    EVT:工程验证测试

    • 验证原理图是否正确

    • 验证电源、时钟、DDR、Flash、接口

    • 软件团队开始 Bring-up

    • 问题较多,主要目标是“能跑起来”

    DVT:设计验证测试

    • 硬件设计趋于稳定

    • 验证功能、性能、EMC、温升、功耗

    • 软件进入系统集成和稳定性阶段

    PVT:生产验证测试

    • 接近量产状态

    • 验证生产流程、产测夹具、烧录效率、良率

    • 软件版本进入 Release Candidate

    MP:Mass Production

    • 正式量产

    • 软件版本冻结

    • 只接受严重 Bug、安全问题、客户关键问题修复


    四、BSP 开发流程

    BSP 是嵌入式 Linux 设备的底座,通常由平台团队负责。

    1. Bootloader 常见使用 U-Boot,也有厂商自研 Bootloader。

    - 主要工作:

    • DDR 初始化

    • Flash 初始化

    • 启动介质支持:eMMC、NAND、NOR、SPI Flash、SD

    • Kernel 加载

    • Device Tree 加载

    • 分区表管理

    • 启动参数配置

    • Recovery 模式

    • A/B 分区启动

    • Secure Boot 验证

    • 启动 Logo 或早期显示

    - 特别关注:

    • 启动可靠性

    • 掉电保护

    • 回滚机制

    • 启动时间

    • 安全启动链路

    2. Kernel Linux Kernel 是设备核心。

    - 主要工作:

    • 移植厂商 BSP

    • 裁剪内核配置

    • 适配 Device Tree

    • 编写或修改驱动

    • 调试电源管理

    • 调试中断、DMA、时钟、Pinmux

    • 优化启动时间

    • 合入安全补丁

    • 维护内核分支

    - 常见驱动类型:

    • GPIO

    • I2C/SPI/UART

    • USB

    • PCIe

    • Ethernet

    • Wi-Fi/Bluetooth

    • LCD/HDMI/MIPI

    • Camera

    • Audio

    • Touch

    • Sensor

    • RTC

    • Watchdog

    • PWM

    • ADC

    • NAND/eMMC/SD

    • Thermal

    • Power Management

    3. Device Tree Device Tree 用来描述硬件资源。

    - 主要内容:

    • CPU、内存

    • GPIO 分配

    • I2C/SPI 设备

    • 时钟

    • 中断

    • Regulator

    • Pinmux

    • Display

    • Camera

    • Audio

    • Flash 分区

    • 外设 enable/disable

    - 通常会做:

    • Device Tree 分层管理

    • SoC 公共 DTS

    • 板级 DTS

    • 产品差异 DTS

    • 避免硬编码进驱动

    4. RootFS RootFS 是用户空间文件系统

    - 常见构建系统:

    • Buildroot:简单、轻量,适合中小型设备

    • Yocto:复杂但强大,适合大公司、多产品线、长期维护

    • OpenWrt:网络设备常见

    • Debian/Ubuntu Base:网关、边缘计算设备常见

    • Android/Linux Hybrid:智能屏、车载、消费类设备常见

    - RootFS 包含:

    • C 库:glibc、musl、uclibc

    • BusyBox/systemd

    • 网络工具

    • 日志系统

    • 设备管理

    • 应用服务

    • 升级模块

    • 诊断工具

    • 配置文件

    • 安全策略

    • 工厂测试程序


    五、系统软件开发

    BSP 之上是系统服务和中间件。

    - 常见模块:

    • 网络管理:Ethernet、Wi-Fi、4G/5G、蓝牙

    • 设备管理:设备注册、心跳、远程配置

    • OTA 升级:下载、校验、安装、回滚

    • 日志系统:本地日志、远程日志、崩溃日志

    • 配置管理:配置持久化、默认配置、恢复出厂

    • 权限管理:用户、进程权限、文件权限

    • 存储管理:分区、磨损均衡、数据备份

    • 时间同步:NTP、RTC、时区

    • 看门狗:硬件看门狗、软件看门狗

    • 诊断服务:CPU、内存、网络、温度、外设状态

    • 产测服务:接口测试、校准、SN/MAC/证书写入


    六、应用层开发

    应用层和产品形态强相关。

    - 例如:

    • 摄像头设备:采集、编码、推流、录像、AI 检测。

    • 网关设备:协议转换、数据采集、云端连接。

    • 工业控制器:Modbus、CAN、PLC、实时控制。

    • 智能音箱:音频链路、语音唤醒、云端交互。

    • POS/支付设备:安全模块、扫码、打印、支付认证。

    • 车载设备:CAN、定位、音视频、OTA、诊断。

    - 常见语言:

    • C/C++:性能敏感、系统服务、驱动接口。

    • Rust:安全要求高的新项目逐渐采用。

    • Go:网关、边缘计算、网络服务。

    • Python:调试、产测、原型工具。

    • Shell:启动脚本、维护脚本。

    • Java/Kotlin:Android 系设备。

    • Qt/QML:带 UI 的 Linux 设备。


    七、版本管理与分支策略

    大公司非常重视版本可追溯,当前首选当然是Git了,开发可以参考如下Git使用指南。


    八、构建系统与 CI/CD

    大公司通常会搭建自动化构建平台。

    - 构建内容:

    Bootloader、Kernel、Device Tree、Kernel modules、RootFS、应用程序、配置文件、升级包、量产烧录包、Debug 符号包、SBOM 软件物料清单。

    - CI 常见检查:

    编译检查、静态扫描、单元测试、代码风格检查、镜像大小检查、依赖漏洞扫描、License 合规检查、自动生成版本号、自动归档构建产物、发布产物

    - 完整烧录镜像:

    OTA 差分包/全量包、Debug 符号文件、Release Note、版本 Manifest、校验 hash、签名文件、工厂生产包。


    九、测试体系

    嵌入式 Linux 测试比普通软件更复杂,因为涉及硬件。

    1. 单元测试

    • 测试函数级逻辑。

    • 常用于业务模块、协议解析、配置管理。

    • 可在 PC 上跑,也可交叉编译到设备上跑。

    2. 集成测试

    • 测试模块之间交互。

    • 例如网络服务与配置服务、OTA 与分区管理、日志与云端上传。

    3. 系统测试

    • 从用户视角测试完整功能。

    • 包括开机、联网、业务流程、异常恢复。

    4. 硬件接口测试

    • GPIO

    • UART

    • I2C

    • SPI

    • USB

    • Ethernet

    • Wi-Fi

    • Bluetooth

    • Camera

    • Display

    • Audio

    • Sensor

    • Storage

    5. 稳定性测试

    • 7x24 小时运行

    • 高低温运行

    • 断网恢复

    • 反复重启

    • 反复 OTA

    • 反复插拔外设

    • 内存泄漏检测

    • 文件系统压力测试

    6. 异常测试

    • 升级中断电

    • 写 Flash 时断电

    • 网络抖动

    • 服务器异常

    • 配置损坏

    • 分区损坏

    • 进程崩溃

    • 内存不足

    • 存储满

    • 时间跳变

    7. 性能测试

    • 启动时间

    • CPU 占用

    • 内存占用

    • Flash 读写速度

    • 网络吞吐

    • 音视频延迟

    • UI 响应速度

    • 功耗

    • 温升


    十、OTA 升级设计

    OTA 是量产设备的生命线。

    - 常见方案:

    • 单分区升级:简单,但风险高

    • A/B 分区升级:可靠性好,适合大公司量产设备

    • Recovery 分区升级:失败后进入恢复系统

    • 差分升级:节省流量,但复杂度高

    • 全量升级:简单可靠,但包大

    - 完整 OTA 流程:

    设备检查版本 -> 下载升级包 -> 校验 hash -> 校验签名 -> 检查电量/电源/网络 -> 写入备用分区 -> 设置启动标志 -> 重启进入新系统 -> 新系统健康检查 -> 成功后确认版本 -> 失败自动回滚

    - 必须考虑:

    • 断电保护

    • 回滚

    • 防降级

    • 固件签名

    • 灰度发布

    • 分批升级

    • 失败率统计

    • 远程止损


    十一、安全体系

    大公司通常会把安全当作系统工程,而不是后期补丁。

    - 启动安全:

    • ROM Code 验证 Bootloader

    • Bootloader 验证 Kernel

    • Kernel 验证 RootFS

    • RootFS 验证应用或升级包

    • 形成完整 Chain of Trust

    - 固件安全:

    • 固件签名

    • 固件加密

    • 防回滚

    • Secure Boot

    • Debug 口关闭

    • JTAG/SWD 管控

    • 敏感密钥写入 OTP/eFuse/安全芯片

    - 系统安全:

    • 最小权限运行

    • 只读 RootFS

    • 关键分区加密

    • 防止命令注入

    • 防止默认弱密码

    • SSH/Telnet 管控

    • 防火墙规则

    • SELinux/AppArmor/seccomp

    • 定期 CVE 修复

    - 生产安全:

    • 工厂密钥注入

    • 证书唯一化

    • SN/MAC 防重复

    • 生产日志留档

    • 防止固件泄露

    • 工装权限控制


    十二、量产与工厂流程

    量产阶段是嵌入式项目和普通软件项目差异最大的地方。

    - 常见工厂流程:

    • 板卡上电。

    • 烧录 Bootloader/系统镜像。

    • 写入 SN/MAC/证书/密钥。

    • 校准 Wi-Fi/BT/射频/传感器。

    • 执行产测。

    • 记录测试结果。

    • 上传 MES 系统。

    • 打标签。

    • 包装入库。

    - 产测内容

    • 电源电压。

    • DDR。

    • Flash。

    • 网口。

    • Wi-Fi。

    • 蓝牙。

    • USB。

    • 串口。

    • 按键。

    • LED。

    • 屏幕。

    • 触摸。

    • 摄像头。

    • 麦克风。

    • 喇叭。

    • 传感器。

    • RTC。

    • 充电。

    • 电池。

    • RF 指标。

    - 大公司重点关注

    • 测试节拍

    • 一次通过率

    • 不良品追踪

    • 工厂误操作防护

    • 版本防呆

    • 数据可追溯

    • 工装自动化


    十三、问题定位流程

    嵌入式 Linux 设备出问题时,定位通常分层进行。

    - 启动问题:

    • 看串口日志

    • 检查 Bootloader 输出

    • 检查 Kernel panic

    • 检查 Device Tree

    • 检查 rootfs 挂载

    • 检查 init/systemd 服务

    - 驱动问题:

    • dmesg

    • /proc/interrupts

    • /sys/kernel/debug

    • i2cdetect

    • devmem

    • trace-cmd

    • ftrace

    • 示波器/逻辑分析仪

    - 性能问题:

    • top

    • htop

    • vmstat

    • iostat

    • perf

    • strace

    • lsof

    • free

    • slabtop

    - 内存问题:

    • Valgrind

    • AddressSanitizer

    • LeakSanitizer

    • kmemleak

    • pmap

    • smaps

    • OOM 日志

    - 系统稳定性问题:

    • watchdog 日志

    • panic dump

    • core dump

    • journald/syslog

    • 远程日志

    • 崩溃前状态快照


    十五、典型项目节奏

    一个中等复杂度嵌入式 Linux 项目流程:

    - 第 0 阶段:预研

    • 选型。

    • EVB 验证。

    • 风险评估。

    • Demo 搭建。

    - 第 1 阶段:EVT

    • 硬件 Bring-up。

    • Bootloader 启动。

    • Kernel 跑通。

    • 基础外设可用。

    • 初版 RootFS。

    - 第 2 阶段:DVT

    • 主要功能完成。

    • 驱动稳定。

    • OTA 跑通。

    • 产测工具初版。

    • 开始压力测试。

    - 第 3 阶段:PVT

    • 修复高优先级问题。

    • 工厂流程验证。

    • 认证测试。

    • 版本冻结。

    • 小批量试产。

    - 第 4 阶段:MP

    • 正式量产。

    • OTA 灰度。

    • 现场问题支持。

    • 持续维护。


    十六、大公司与小团队的主要区别

    - 流程更严格:

    • 有需求评审、设计评审、代码评审、测试评审、发布评审。

    • 每个版本有明确准入和准出标准。

    - 平台化程度更高:

    • 不是每个项目重复造轮子。

    • 会沉淀公共 BSP、公共 RootFS、公共 OTA、公共日志系统。

    - 质量要求更高:

    • 自动化测试更多。

    • 稳定性测试周期更长。

    • 问题必须可追溯。

    - 安全和合规更重:

    • 固件签名、密钥管理、License 合规、CVE 扫描是标配。

    - 量产意识更强:

    • 软件不仅要“能跑”,还要能烧录、能测试、能追溯、能维护。

    大公司的嵌入式 Linux 开发不是单纯“写驱动”或“移植系统”,而是一整套围绕硬件、系统、应用、测试、生产、安全和长期维护的工程体系。


    点赞、关注、留言~

    最新文章

    随机文章