公司动态
Microchip加入AGL:嵌入式Linux与车载系统生态的软硬协同新局
1. 这条新闻背后Microchip 到底想干什么1.1 从单片机王者到嵌入式 Linux 生态玩家Microchip 这个名字做单片机的人都不陌生。PIC 系列、AVR 系列、SAM 系列加上大量的模拟、接口、存储芯片几乎每个硬件工程师的抽屉里都能翻出几片。过去大家印象中的 Microchip更多是 MCU 和模拟器件的供应商跟 Linux Foundation、开源汽车平台这种软件味很重的组织扯上关系直觉上不太搭。但把时间轴拉长看这个动作其实不突然。早些年 Microchip 收购了 Atmel拿下了 SAM 系列 ARM 处理器。后来又推出 SAMA5D2、SAM9X60、SAMA7G54 这些面向人机界面和工业控制的 MPU。这些芯片跑 Linux 已经是标配场景了只是多年来的市场声量主要集中在工业 HMI、医疗设备、家电面板这些领域。现在把阵营扩展到 Linux Foundation 和 Automotive Grade Linux等于公开宣布汽车电子尤其是车载 Linux 这条赛道我要正式下场抢位置了。这条新闻里的“加入”不是简单交个会员费挂个名。Linux Foundation 的会员分不同等级AGL 项目也有明确的成员体系。Microchip 要做的是深度参与 AGL 的日常运作参与参考平台的开发、软件包的适配、硬件参考设计方面的合作。对 AGL 项目来说多一个在底层硬件上有大量车规芯片的厂商加入也会让平台的硬件兼容面更扎实。1.2 补的其实是软件工程能力为什么一个硬件厂商要混软件开源圈这是我看到消息后第一反应。想了很久核心就四个字生态位迁移。芯片再好客户做系统还是看整体方案。MCU 时代大家拼的是外设集成度、低功耗、编译器工具链。到了嵌入式 Linux 时代拼的是 BSP 稳定性、Yocto 层维护、显示中间件、OTA、安全启动、远程诊断。这套能力和传统单片机开发生态完全是两套玩法。Microchip 过去在 Linux 上不是没有投入他们对 SAMA5 和 SAM9 都有官方 BSP也维护自己的 Yocto 层。但 BSP 只是“把 Linux 跑起来”AGL 要的是“把 Linux 变成一辆车”。后者涉及到一套完整的车载应用框架从显示合成器到应用生命周期管理、从车辆总线抽象到网络服务几乎是一个独立操作系统级别的工程量。单独一个硬件厂商从零去搞这套东西既不经济也缺生态加入 AGL 是性价比最高的路径。所以这个合作本质上是 Microchip 用会员身份买了一个“车载软件生态的通行证”。对开发者来说后续可能看到的是AGL 的软件栈对 Microchip 平台的兼容性测试、官方评估板的 AGL 版本 BSP、甚至 AGL 架构师直接参与 Microchip 某个芯片的 Linux 支持。这个价值的落地周期短则一两个季度长则一年以上方向是明确的。2. AGL 到底是什么它和普通 Linux 有多大区别2.1 不是发行版而是一套“车规场景的完整解决方案”很多刚接触 AGL 的人会问它和 Ubuntu、Debian 有什么区别严格意义上AGL 不是 CentOS 那种通用发行版也不是一个严格打包的 Linux。它是一个由 Linux Foundation 主持的协作项目项目里维护了一套参考平台叫 AGL Distribution。这套平台基于 Yocto Project 构建按车规场景把需要的软件包组合起来目标是让成员公司能直接拿它做量产系统的起点。打个比方通用发行版类似开放菜市场什么都卖你自己挑选组合AGL 更像一个中央厨房的预制菜包按车辆座舱场景的常见需求把调料、食材、菜谱都配好了厨房OEM/Tier1再根据口味微调。这个对照不一定百分之百精确但能说明 AGL 的定位它不是给你无限自由的操作系统而是给你一套面向车载需求的工程化框架。为什么要这么做因为车载场景和服务器、桌面完全不同。车的开发周期长、功能安全要求高、网络环境复杂、需要远程升级还有座舱人机交互这一大摊事。如果每个 OEM 都从芯片 BSP 开始搭建自己的系统光底层公共部分的开发和维护成本就非常惊人。AGL 存在的意义就是把 OEM 都需要的公共底座收拢成一套开源工程让大家把精力放在差异化部分。2.2 从 Yocto 到 Wayland 的层次结构AGL 的软件栈从下往上大致可以拆成这么几块层次核心内容典型组件基础系统内核、BSP、引导、系统服务Linux Kernel、U-Boot、systemd构建系统镜像生成、包管理、许可管理Yocto / OpenEmbedded中间件车载总线、网络、多媒体、诊断SocketCAN、NetworkManager、PipeWire、E2E 保护应用框架生命周期管理、跨进程通信、安全策略AGL Application Framework、D-Bus、SMACK显示与 HMI合成器、窗口管理、应用渲染Wayland/Weston、Flutter、Layer Management应用桌面、空调、导航、设置、媒体Home Screen、Dashboard、HVAC、Media Player底子是标准 Linux 内核和 Yocto 构建体系这一点对嵌入式工程师来说门槛并不高。往上越走车载特性越重。比如最典型的软件定义座舱AGL 默认使用 Wayland 而不是 X11用 Weston 或者后来演进出的合成器做多窗口管理应用侧从早期的 Qt 逐步转向 Flutter 这一套跨平台 UI 方案。再往上还有 AGL 自己的一套应用框架。它定义了一个应用的启动、停止、前后台切换、权限控制的标准模型应用和系统服务之间的通信走 D-Bus权限用 SMACK 这类 Linux Security Module 来控制。这套东西如果自己从零搭没有半年以上工程投入做不出来这也是 AGL 的核心价值之一。2.3 车规 Linux 的几个独特硬件需求普通嵌入式 Linux 里不太关注的几个点在 AGL 里却是主菜。首先是车辆总线。车内大量控制单元还在走 CAN 或 CAN FDAGL 通过 SocketCAN 把 CAN 抽象成网络接口上层应用直接读 socket 收数据底层驱动对接 CAN 控制器。Microchip 在 CAN 收发器和 CAN 控制器上有大量车规级产品这部分是他们的传统优势。其次是显示和安全。仪表盘要求启动时间短倒车影像要求 RVC 场景极低延迟HMI 应用一旦崩溃不能黑屏死机。这就需要硬件层面的显示控制器和 GPU、Secure Boot、代码签名、安全存储这些来配合。AGL 的参考平台里对安全启动、可信执行环境、应用签名都有可选实现。还有电源管理。汽车电子有严格的休眠唤醒机制和电池保护要求——静态电流要压到微安级网络唤醒要有硬线信号。这些经常要芯片的底层驱动配合。Microchip 在低功耗管理上积累很深SAMA7G54 这类芯片本来就是为低功耗 HMI 场景设计的和 AGL 的需求切合度很高。这句话我在很多场合说过AGL 表面上是软件项目实际上是个软硬协同的工程。没有芯片厂商深度参与光靠软件团队玩不转。3. Microchip 的汽车产品棋局这次落子落到了软件层3.1 与 SAMA 系列和车规处理器的对应关系讲完了 AGL 是什么再看 Microchip 在汽车生态里有哪些家底可以拿来跟 AGL 配。Microchip 目前面向 Linux 场景的主力是 SAMA5D2、SAM9X60、SAMA7G54 这几个系列。SAMA5D2 是 Cortex-A5 内核跑 Linux 完全没问题有大量工业 HMI 案例。SAM9X60 是 ARM926EJ-S 内核性能弱一些但成本低、启动快、接口全适合精简 Linux 场景。SAMA7G54 是 Cortex-A7 单核频率 1GHz 左右带 MIPI DSI/LVDS 显示接口、eMMC、GbE、CAN FD功耗控制在 400mW 级别很适合做入门级车载 IVI、电子后视镜、HUD。以前这些芯片主要是“能跑 Linux”但没有一个组织去帮它们适配完整的车载应用框架。Microchip 加入 AGL 之后理论上会出现这样的场景开发者拿到一块 SAMA7G54 评估板直接下拉 AGL 源码按对应 machine 配置构建一个 AGL 镜像烧进去就有 Wayland 显示、App Framework、蓝牙、Wi-Fi、CAN 这些车载功能。这套体验如果能打通对评估板和方案的推广是极大的加分。当然AGL 目前参考平台默认支持的高性能 SoC 大多来自瑞萨、高通、英伟达这些Microchip 的芯片定位偏中低端。但汽车市场恰恰是分层化的从中低端 IVI、仪表、网关、面板控制到中高端座舱需求跨度非常大。AGL 若想真正做到“Automotive Grade”不能只覆盖高端旗舰座舱场景入门级和存量车型的智能化升级同样需要低成本 Linux 方案。这个市场空隙就是 Microchip 的机会。3.2 从芯片到板卡Microchip 生态里的协同阵容单靠一颗 MPU 撑不起“汽车级 Linux”这个承诺要把它放在 Microchip 的整个产品矩阵里看才能明白组合拳的威力。车里的 Linux 主控通常需要一堆配套芯片电源管理芯片保证多个电压轨的上电时序CAN/CAN FD 收发器连接车辆总线以太网 PHY 和交换机芯片做高速骨干网络安全芯片做安全启动和密钥存储看门狗和复位管理保证系统异常时能自恢复。这些品类 Microchip 都有而且不少是车规级 AEC-Q100 认证的。比如他们家的 CAN 收发器就覆盖了各种速率和封装汽车以太网交换机 KSZ9 系列在域控制器、摄像头回传链路上也在大量使用。之前这些资源散落在各个产品线手册里现在通过 AGL 会员身份相当于在软件层面打了个结客户做一只车载 Linux 计算盒子从主控到总线接口再到安全方案可以一站式配齐而且软件在开源生态里都有据可查、可持续更新。我特别看好的是“安全组件”这个板块。AGL 里有大量代码签名、密钥管理、安全启动的需求而 Microchip 既有可信平台模块也有自己的安全认证芯片。当 AGL 的参考安全框架和 Microchip 的硬件安全组件结合起来时OEM 想拿到 ISO 21434 相关认证会顺利不少。3.3 BSP 与 Yocto从“能用”升级到“评测通过”现在国际大厂的芯片厂商做 Linux 生态基本都会在 Yocto 里提供自己芯片的 BSP 层。Microchip 很早就有meta-atmel这个 Yocto 层支持 SAMA5、SAM9、SAMA7 平台的构建。过去这个层更多是面向工业场景维护节奏跟着自家产品线走。加入 AGL 之后最有意义的变化是 BSP 的“测试标准”变了。AGL 有持续集成体系每个提交都跑编译和基础功能测试各种软件包要能在参考硬件上跑起来才算数。Microchip 的 BSP 一旦进入 AGL 的 CI 测试范围质量和兼容性会被动拉高不少——这不是哪个团队拍胸脯保证的而是开源协作机制倒逼出来的。对一线开发者来说这意味着什么以后基于 Microchip 芯片做车载 Linux 项目可以不再是“拿个 BSP 把内核烧进去应用层自己慢慢搭”而是直接站在 AGL 平台的肩膀上底层的显示、应用框架、权限管理、升级机制都已经是现成可用的。省下来的是几十人月的工程量换回来的是更好的可维护性和供应链确定性。4. 实操视角在 Microchip 评估板上跑出接近 AGL 的环境4.1 硬件准备与获取镜像这部分写点直接能落地的。如果你打算在真实硬件上体验这套组合可以考虑这么几步。首先准备一个平台SAMA7G54-EK 或者 SAMA5D27-SOM1 的评估板都可以更推荐前者性能和显示接口更接近车载场景。先把编译环境搭起来。AGL 官方文档里推荐使用repo工具拉取 AGL 的 manifest然后按 Yocto 的标准流程做source和bitbake。如果只想要一个最接近 AGL 的验证环境而不需要完整构建也可以先下载官方发布的 AGL 参考镜像再用 Microchip 的 BSP 覆盖对应的 machine 层。两种路线各有取舍前者时间长但控制力强后者上手快但兼容性需要自己调。无论哪种方式我都建议把磁盘空间准备充足Yocto 构建整个 AGL 镜像过程文件加 SDK 轻松超过 100GB。编译时间也看机器十六核以上的机器全量构建 AGL 可能要几个小时。所以如果你的项目周期紧建议先精简功能集只构建带基本显示和应用框架的最小镜像。提示构建主机最好用 Ubuntu 22.04 LTS 这类长期支持版本Python、GCC、make 这些基础工具链版本对齐 Yocto 官方文档要求能省掉大量莫名其妙的兼容性报错。4.2 Yocto 构建的最小闭环这里给一个最小闭环的模板思路不展开全部代码只说明关键点。用repo init拉取 AGL manifest 之后在conf/local.conf里指定MACHINE 对应 Microchip 的评估板型号DISTRO 选择 AGL 提供的agl版本IMAGE_FS_TYPE 选择会生成 SD 卡镜像的文件系统格式把需要的功能加到 AGL_FEATURES 里比如显示、蓝牙、Wi-Fi、CAN 等。然后执行 bitbake 构建目标镜像构建完成后把镜像写入 SD 卡插到评估板上启动。这个过程中最容易出问题的其实是 MACHINE 和各层版本的匹配。AGL 的 manifest 会锁定一组 Yocto 层的 commitMicrochip 的 BSP 层如果没跟上 AGL 的更新节奏就可能出现 bitbake 解析失败。解决思路一般是锁定一个双方都验证过的组合版本比如参考 AGL 某个季度发布版本和 Microchip BSP 对应的 release 标签。4.3 显示和 HMI 怎么跑通跑通 AGL 之后开机你看到的界面就是 Home Screen一个基于 Flutter 的桌面。在触控屏上可以滑动、点击、切换应用。底层是 Wayland 合成器管着一堆 surface。这里有个常见误区很多人以为显示能不能出画面是“芯片支不支持”的问题。实际上 SAMA7G54 自带 MIPI DSI 和 LVDS 接口硬件连接不成问题真正的关键在合成器和 GPU 驱动的配合。如果用的是一块简单 RGB 屏或者 DSI 屏必须确认设备树里的时序参数和屏幕规格书一致否则大概率出现白屏或者花屏。另一个坑是 HMI 帧率。入门级 MPU 性能有限Flutter 应用如果开太多复杂动画帧率会明显下降。工程上建议的做法是能用静态素材就不用动态渲染能合并图层就不要叠加太多透明窗口。还有一点Wayland 协议对窗口管理的限制比 X11 严格许多应用没有按要求走 Wayland 协议时会出现窗口无法正常显示的问题调试时要看合成器的日志而不是盲目调驱动。4.4 接入 CAN 和车辆信号最后补充一下车辆信号接入。AGL 上层用 SocketCAN所以应用代码只需要打开一个网络 socket去读 CAN 报文即可。Microchip 的 CAN-FD 控制器在 Linux 内核里一般已经被 mainline 驱动支持设备树里把 CAN 引脚复用和收发器配置好就能拿到can0接口。如果你想做个简单的信号可视化可以在用户态写一个很短的 C 或 Python 程序用struct解析 CAN 帧的 ID 和数据区再转发给上层 HMI 应用。把车辆速度、转速这些信号从 CAN 总线上读出来显示在仪表盘或 HUD 应用里那个体验才是“这台车真的接入进去了”而不只是一块跑 Linux 的开发板。5. 常见问题与排查经验实录5.1 bitbake 构建失败和依赖问题Yocto 构建失败是每个嵌入式 Linux 开发者都绕不开的体验AGL 也不例外。最常见的是网络下载源不稳定导致源码获取失败其次是不同 layer 之间的依赖关系被破坏。我自己的排查习惯是先看报错发生在do_fetch阶段还是do_compile阶段。前者多为网络或 SRC_URI 问题可以换个可靠的代码仓库镜像源重试后者才是真实的代码编译问题需要看具体的报错文件和行号。还有一招很实用构建时加-k参数让 bitbake 跳过失败的包继续构建最后统一看有哪些包失败逐个攻破。不要第一次失败就整盘重来那样浪费的时间是按小时计的。构建目录不要放在 NFS 或 Windows 共享盘上文件的 inode 和权限问题会让你怀疑人生。5.2 启动后黑屏或白屏开机串口有登录提示但屏幕没画面。这个问题的排查顺序是先用dmesg看 DRM/KMS 驱动有没有加载再检查 Wayland 合成器进程有没有起来最后看设备树的时序配置。很多时候问题不在驱动而在设备树。屏幕的 pixel clock、hback porch、vback porch 这些参数必须和屏的 datasheet 完全对上。这些参数没有捷径只能一个字段一个字段核对。我见过有人调了两天最后发现只是 DSI 的 lane 数配错了。另外注意电源时序。某些屏需要先供背光再出数据或者初始化序列有严格顺序。这些在裸机驱动里好处理到 Linux 里就要写在 panel 驱动的 power 序列里。如果屏的初始化是 I2C 写入一串寄存器确认 I2C 总线地址是否正确这也是很容易踩的坑。5.3 CAN 接口不工作ip link set can0 up报错或者candump什么数据都没有。先看两件事设备树里 CAN 外设的时钟有没有配收发器的 STBY 引脚电平对不对。Microchip 的 CAN-FD 控制器有内部时钟选择设备树里选错的时钟源会导致波特率设置不生效。收发器方面很多评估板的 CAN 收发器需要 GPIO 拉高才能正常工作这个往往容易忽略。收发器不使能时总线接口看起来就是死的读写无响应。还有一个经验CAN 总线通信必须两端都有正确的终端电阻。开发时单独接一块板子挂在总线上没有终端电阻偶尔能收到几帧偶尔收不到非常消耗耐心。先上终端电阻一般是 60 欧姆左右再谈别的。5.4 安全启动和认证的边界AGL 能帮你在软件层面实现 Secure Boot 的框架但真正的信任根在硬件。Microchip 的芯片上一般都有 OTP 和密钥存储项目量产前就要规划好密钥生成、烧录、管理的流程。这里必须说句实在话AGL 开源平台本身不自动等于过车规认证。ISO 26262 的功能安全认证、ISO 21434 的网络安全认证还需要整个系统包括硬件、软件工具链、开发流程一起走认证。AGL 能提供的是一个更透明、可审查的基础减少认证过程中“闭源代码没法审查”的无谓损耗但不能替代认证本身。做项目规划时要把认证的时间和成本算进去别天真地以为“用了开源平台就不用认证”。6. 后续扩展与我的个人看法6.1 AGL 在中低端车载方案里的机会从整个行业看AGL 一直在往“软件定义汽车的操作系统底座”方向走但它的落地没有大家想象中那么快。高端座舱市场被安卓和私有方案占得比较死AGL 最能发挥价值的地方反而是中低端 IVI、商用车、两轮车、工程机械这类对成本敏感的智能座舱场景。这些场景也需要 Linux也需要车载级框架但没人愿意按高端座舱的成本来开发。Microchip 加入进来正好踩在这个时间点上。当一块车规 MPU 能跑起完整的 AGL 软件栈时原来只有高端车才能有的功能就有机会下放到更走量的车型甚至后装市场。这不是 Microchip 一家能做到的但它是撬动这个循环的关键一环。6.2 开发者现在可以做什么如果你对这个方向感兴趣我建议不要等“官方支持完成”再动手。把 Microchip 的一块评估板买回来先用官方 BSP 把 Yocto 构建跑通再对照 AGL 的文档尝试加入应用框架这个过程本身就是一次完整的学习曲线。踩过几次开发板的坑之后你会发现车载 Linux 和通用 Linux 最大的差别不在技术而在工程方法一套严谨的 BSP、一个稳定的构建系统、一个清晰的应用框架权限模型这些东西的价值在项目规模放大之后才会真正体现出来。提前在 Microchip 平台上把这些经验积累下来后面无论哪家芯片量产你都已经站在了更高的起跑点上。6.3 最后说点个人感想我在嵌入式 Linux 圈子里待了这些年见过太多硬件厂商喊着“拥抱开源”结果只是把代码丢到 GitHub 就不管了。Microchip 这次加入 Linux Foundation 和 AGL姿态上至少是认真的有会员身份、有项目参与、有硬件产品线可对照。至于最终成效得看未来一两年里 AGL 支持和 BSP 维护的质量。我个人更愿意保持一个谨慎乐观的态度。开源车机平台这条路业界走了十多年方向没错难在坚持。多一个重量级硬件厂商加入也许不会立刻改变什么但至少让这个生态里跑的车轮又实了一点。