Zephyr 支持 Intel Integrated Sensor Hub (ISH):从固件构建到 ADL RVP 板卡调试实战

Zephyr 支持 Intel Integrated Sensor Hub (ISH):从固件构建到 ADL RVP 板卡调试实战 Zephyr 支持 Intel Integrated Sensor Hub (ISH)从固件构建到 ADL RVP 板卡调试实战【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr导读本文以 Zephyr 仓库中 boards/intel/ish/doc/index.rst 文档为核心系统讲解如何在 Zephyr RTOS 中为 Intel Integrated Sensor HubISH协处理器构建、烧录与调试固件。读完本文你将掌握 ISH 的硬件资源构成LMT MinuteIA 核心、L2 SRAM、AON RF 空间、Zephyr 侧支持的板级变体与 SoC 特性以及把hello_world构建成ish_fw.bin并部署到 Chrome OS 环境 ADL RVP 板卡上的完整流程同时理解 Zephyr 底层build_ish_firmware.py的固件封装manifest 头机制。Intel ISH 是什么Intel Integrated Sensor HubISH是集成在众多 Intel 处理器内部的一个低功耗、常开always-on协处理器。它的核心职责是从主处理器core processor卸载传感器处理任务从而获得更好的整机功耗表现主 CPU 不必频繁唤醒去轮询或预处理加速度计、陀螺仪、环境光等传感器数据由 ISH 常驻低功耗状态完成这些工作必要时再与主系统通信。在 Zephyr 中ISH 被当作一个独立的板卡/SoC 目标board target来支持开发者可以直接用 Zephyr 的应用开发流程为它编写固件这与为普通 MCU 开发的方式一致。硬件资源概览根据 boards/intel/ish/doc/index.rst 中的 Hardware 章节ISH 的关键硬件构成如下LMT MinuteIA Corex86 架构核心16KB 指令缓存instruction cache与 16KB 数据缓存data cache640KB SRAM 空间用于代码与数据实现为 L2 SRAM8KB AON RF 空间用于在深度 D0i2/3 PGpower gating状态下常驻代码。接口到传感器的外设I2C、SPI、UART、I3C、GPIO、DMA进程间通信IPC与主处理器及其他 IP 处理器通信。从源码视角可以进一步印证 SoC 的 x86 属性与中断/电源管理选型。在 soc/intel/intel_ish/Kconfig 中SOC_FAMILY_INTEL_ISH依次select了X86、CPU_LAKEMONT_VALUE即 Lakemont 核心对应文档所述 LMT MinuteIA Core、IOAPIC、LOAPIC、INTEL_HAL、HAS_PM、PM_STATE_SET_IRQ_UNLOCKED、HAS_COVERAGE_SUPPORT与SOC_EARLY_INIT_HOOK从配置层面定义了 ISH 的中断控制器与电源管理基础能力。而 soc/intel/intel_ish/intel_ish5/soc.h 中则定义了 ISH 特有的 DMA 通道方向宏IMR_TO_MEMORY与MEMORY_TO_IMR并可在启用 HPET 定时器时通过sedi_hpet_set_comparator()对接CONFIG_HPET_TIMER驱动。Zephyr 支持的 ISH SoC 特性原文档通过 include 引入了 soc/intel/intel_ish/doc/supported_features.txt其内容如下Supported Features在标准架构设备HPET、local 与 I/O APIC 等之外Zephyr 还支持以下 ISH 特有 SoC 设备HSUART也就是说Zephyr 对 ISH 的驱动支持目前聚焦于HSUARTHigh-Speed UART它同时承担控制台输出的角色。这解释了官方调试流程中“通过 ISH UART0 观察 Zephyr 日志输出”的做法。板级配置佐证ISH 的板级默认配置boards/intel/ish/intel_ish_5_4_1_defconfig仅开启三项目关串口与控制台的基础选项这也与 HSUART 为当前唯一 ISH 特有外设支持的事实吻合CONFIG_CONSOLEy CONFIG_UART_CONSOLEy CONFIG_SERIALy对应地boards/intel/ish/intel_ish_5_4_1.dts 在chosen节点中将控制台与 shell 都绑定到uart0chosen { zephyr,sram sram; zephyr,console uart0; zephyr,shell-uart uart0; };板卡与 SoC 变体当前仓库中 ISH 相关的板卡目标位于 boards/intel/ish/共提供三个 SoC 变体均属于intel_ish5系列板卡名称SoC 名称说明intel_ish_5_4_1intel_ish_5_4_1ISH 5.4.1如 ADL 处理器所用intel_ish_5_6_0intel_ish_5_6_0ISH 5.6.0intel_ish_5_8_0intel_ish_5_8_0ISH 5.8.0三者关系在 soc/intel/intel_ish/soc.yml 中体现为intel_ish家族 →intel_ish5系列 → 三个 SoC 的层级soc/intel/intel_ish/intel_ish5/Kconfig.soc 通过SOC_INTEL_ISH_5_4_1/SOC_INTEL_ISH_5_6_0/SOC_INTEL_ISH_5_8_0三个 bool 选项及SOC默认值完成选择。boards/intel/ish/board.yml 则登记了这三块板的完整名称如 Integrated Sensor Hub (ISH) 5.4.1与厂商信息。以intel_ish_5_4_1为例其 board 描述文件 标明的关键属性为type: mcuarch: x86ram: 640KB对应文档所述 640KB L2 SRAMtoolchain: zephyrsupported: serial测试时忽略net、bluetooth相关 tag因为 ISH 作为协处理器通常不涉及网络与蓝牙协议栈。构建 Zephyr 应用原文档给出的标准构建方式与 Zephyr 通用流程一致。例如为 Intel ADLAlder Lake处理器上的 ISH 5.4.1 构建hello_worldwest build -b intel_ish_5_4_1 samples/hello_world等价于cmake -B build -DBOARDintel_ish_5_4_1 samples/hello_world cmake --build build取决于你习惯使用west还是直接调用 CMake。构建产物ish_fw.bin构建完成后构建目录下会自动生成一个名为ish_fw.bin的 Zephyr 镜像文件该文件即最终要部署到板卡上的固件。它的生成由 soc/intel/intel_ish/utils/build_ish_firmware.cmake 驱动调用同目录下的 Python 打包脚本完成。固件封装原理manifest 头机制ish_fw.bin并不是裸的二进制镜像而是带有manifest 头的封装镜像。ISH shim loader启动加载器会解析这个头把其中每个二进制加载到正确的内存位置。soc/intel/intel_ish/utils/build_ish_firmware.py 实现了完整的打包逻辑关键参数如下-k/--kernelEC 内核二进制必填通常是ec.RW.bin或ec.RW.flat-a/--aonAON 任务二进制可选通常是ish_aontask.bin-o/--output输出 flash 二进制文件。脚本的封装结构要点项目值说明MANIFEST_ENTRY_SIZE0x80128 字节每个 manifest 条目大小HEADER_SIZE0x10004KB头区域总大小与PAGE_SIZE一致内核条目 IDISHM 组件名ISH_KERN代码偏移HEADER_SIZE大小按页向上取整AON 任务条目 IDISHM 组件名AON_TASK代码偏移紧随内核之后结束条目 IDISHE表示 manifest 列表结束具体而言gen_manifest()在每个 128 字节的条目内以小端序写入4 字节 ASCII 外部 IDISHM/ISHE、8 字节组件应用名ISH_KERN/AON_TASK、4 字节代码偏移偏移 96 处以及 2 字节按页page size increment计数的模块大小偏移 100 处。roundup_page()将所有二进制大小向上取整到 4KB 页。最终镜像布局为manifest 头含内核条目、可选 AON 条目与结束条目其余以 0 填充 内核镜像带页对齐填充 可选 AON 镜像带页对齐填充。注意仓库中还提供build_ish_firmware_v1p1.py见 soc/intel/intel_ish/utils/供需要兼容 v1.1 封装格式的场景使用。正常 Zephyr 构建流程会自动完成打包一般无需手动调用这些脚本。在 ADL RVP 板Chrome OS上运行 ish_fw.bin原文档给出了在 ADL RVPReference Validation Platform板、Chrome OS 环境下的完整部署与调试流程。该流程面向已经具备 Chrome OS 开发者模式Developer Mode与 root 权限的用户步骤如下。1. 准备环境给 ADL RVP 板上电登录 Chrome OS注意用户必须拥有 root 访问权限参见 Chromium OS 的 Developer Mode 文档将根文件系统重新挂载为可读写$ mount -o remount,rw /2. 关闭 rootfs 校验如重挂载失败若上述 remount 失败则需要先移除 rootfs 校验verification执行$ /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --partitions $ reboot重启后重新执行mount -o remount,rw /。3. 替换 ISH 固件进入 ISH 固件目录$ cd /lib/firmware/intel用之前构建出的 Zephyr 镜像ish_fw.bin替换该目录下的adlrvp_ish.bin建议先备份原文件以便回退。4. 重启并观察日志重启板卡通过ISH UART0观察 Zephyr 日志输出。由于默认配置启用了串口控制台CONFIG_CONSOLEy、CONFIG_UART_CONSOLEy且 intel_ish_5_4_1.dts 将zephyr,console指向uart0hello_world应用会在 ISH 启动后于 UART0 上打印熟悉的Hello World!输出可据此确认固件已成功加载运行。开发者视角ISH 平台的电源管理由于 ISH 的本质是“常开低功耗协处理器”电源管理PM是平台支持中非常关键的一环。soc/intel/intel_ish/intel_ish5/pm/ 目录下包含power.c与Kconfig.pm并在 Kconfig.defconfig.series 中被rsource引入同时 soc/intel/intel_ish/Kconfig 中HAS_PM与PM_STATE_SET_IRQ_UNLOCKED的 select 也表明 Zephyr 为 ISH 启用了标准 PM 子系统。结合文档中“8KB AON RF 空间用于深度 D0i2/3 PG 状态下常驻代码”的描述可以推断Zephyr 对 ISH 的 PM 支持正是服务于这类深度电源门控场景让常驻代码在低功耗状态下保持存活。开发者若需要为 ISH 定制低功耗行为可以在此基础上扩展 PM 状态处理。小结与快速参考事项关键路径 / 命令板卡文档boards/intel/ish/doc/index.rst板卡目标boards/intel/ish/intel_ish_5_4_1/intel_ish_5_6_0/intel_ish_5_8_0SoC 支持soc/intel/intel_ish/家族 Kconfig、ISH5 系列、PM 实现固件封装脚本soc/intel/intel_ish/utils/build_ish_firmware.py构建命令west build -b intel_ish_5_4_1 samples/hello_world构建产物build/目录下的ish_fw.bin部署位置Chrome OS 下/lib/firmware/intel/adlrvp_ish.bin替换日志观察ISH UART0总而言之Zephyr 将 Intel ISH 视为标准的 x86 板卡目标开发者可以复用熟悉的应用开发、构建与调试链路同时借助ish_fw.bin的 manifest 封装机制无缝对接 ISH shim loader从而在 ADL RVP 等平台上快速完成传感器协处理固件的开发与验证。【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考