Zephyr RTOS 在 Raspberry Pi 5 上的移植与实战指南:构建、串口调试与 Xen Dom0 运行 操作系统嵌入式RTOS物联网【免费下载链接】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 官方仓库中 Raspberry Pi 5 板卡文档 撰写系统讲解如何在 Raspberry Pi 5Broadcom BCM2712Arm Cortex-A76上编译并运行 Zephyr RTOS。你将掌握通过 microSD 卡启动 Zephyr 固件的完整流程、使用 Raspberry Pi Debug Probe 进行串口调试的方法以及借助xen-dom0snippet 将 Raspberry Pi 5 用作 Xen 特权域Dom0的进阶玩法。文末还补充了板级设备树、Kconfig 等源码层面的细节帮助你理解 Zephyr 是如何在树莓派上落地的。Raspberry Pi 5 硬件概览Raspberry Pi 5 是树莓派基金会推出的高性能单板计算机其核心是 Broadcom BCM2712 SoC。在 Zephyr 中该板卡对应目标rpi_5SOC 为bcm2712架构为 64 位 Armarm64。Zephyr 官方板卡元数据board.yml定义如下name:rpi_5full_name: Raspberry Pi 5 (Cortex-A76)vendor:raspberrypisocs:bcm2712含swd变体Raspberry Pi 5 的关键硬件特性包括CPUBroadcom BCM2712 2.4GHz 四核 64 位 Arm Cortex-A76带密码学扩展指令每核 512KB 独立 L2 缓存2MB 共享 L3 缓存GPUVideoCore VII支持 OpenGL ES 3.1 与 Vulkan 1.2显示双 4Kp60 HDMI 输出支持 HDR4Kp60 HEVC 解码器内存LPDDR4X-4267 SDRAM提供 1GB、2GB、4GB、8GB、16GB 多个 SKU无线双频 802.11ac Wi-FiBluetooth 5.0 / BLE存储microSD 卡槽支持高速 SDR104 模式USB2 × USB 3.0可同时 5Gbps 运行、2 × USB 2.0网络千兆以太网支持 PoE需独立 PoE HAT接口2 × 4-lane MIPI 摄像头/显示收发器PCIe 2.0 x1 接口需独立 M.2 HAT 或适配器树莓派标准 40-pin 排针电源USB-C 5V/5A DC 供电支持 Power Delivery带实时时钟RTC可由外部电池供电与电源按钮完整硬件功能列表可参见树莓派官方硬件文档Raspberry Pi hardware。构建 Zephyr 固件并烧录到 microSD 卡支持的硬件功能Zephyr 通过设备树DT为rpi_5使能了哪些外设从板级设备树 rpi_5_bcm2712.dts 中可以看到以下核心节点被激活外设设备树节点说明串口控制台uart10chosen 的zephyr,console/zephyr,shell-uart默认 115200 波特率系统内存sram0chosen 的zephyr,sram运行时 SRAM 区域PCIe 控制器pcie1chosen 的zephyr,pcie-controller通过CONFIG_PCIEy使能熵源rngchosen 的zephyr,entropy随机数发生器活动 LEDled_actaliases 的led0GPIO 控制低电平有效GPIO 控制器gio_aon、gpio0_0使能为okay从 rpi_5_bcm2712_defconfig 可以看到板级默认配置# ARM64 虚拟/物理地址宽度 40 位 CONFIG_ARM64_VA_BITS_40y CONFIG_ARM64_PA_BITS_40y # 系统时钟在运行时读取其频率 CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIMEy # 启用串口控制台 CONFIG_SERIALy CONFIG_CONSOLEy CONFIG_UART_CONSOLEy CONFIG_UART_INTERRUPT_DRIVENy CONFIG_PCIEyBlinky 示例三步启动Zephyr 官方文档给出的 Blinky 烧录流程非常简单核心是把 Zephyr 固件当作树莓派固件加载器的一个kernel来启动格式化 microSD 卡为 MBR 分区表 FAT32 文件系统。将以下三个文件放入 microSD 卡根目录config.txtzephyr.binbcm2712-rpi-5-b.dtbBCM2712 Raspberry Pi 5 B 型设备树 blob插入 microSD 卡并给 Raspberry Pi 5 上电即可看到zephyr.bin开始运行。其中config.txt内容只有一行指示固件加载zephyr.bin作为内核镜像kernelzephyr.bin构建 zephyr.bin以官方blinky示例LED 闪烁为例使用 west 构建west build -b rpi_5 samples/basic/blinky构建完成后将build/zephyr目录下的zephyr.bin复制到 microSD 卡根目录cp build/zephyr/zephyr.bin /path/to/sd_card_root/插入 microSD 卡并上电后Raspberry Pi 5 上的STATACTLED 即开始闪烁。这与设备树中led_act节点gpios gio_aon 9 GPIO_ACTIVE_LOW一一对应——Zephyr 通过gio_aon控制器的 GPIO9 驱动活动指示灯低电平点亮。串口通信使用 Raspberry Pi Debug Probe如果你的应用需要输出日志或与终端交互例如hello_world示例则需要通过 UART 串口连接。硬件接线你需要准备以下配件Raspberry Pi Debug Probe树莓派官方调试探针JST 线3-pin JST 公头对 3-pin JST 公头线缆USB 线USB A 公头 - Micro USB B 公头接线步骤如下用 JST 线将Debug Probe 的 UART 端口连接到Raspberry Pi 5 的两个 HDMI 接口之间的 UART 端口即板载 UART 排针。用 USB 线将 Debug Probe 连接到你的计算机。config.txt 配置启用串口后config.txt需要增加两行kernelzephyr.bin enable_uart1 uart_2ndstage1参数说明kernelzephyr.bin指定 Zephyr 固件为要启动的内核镜像enable_uart1启用树莓派固件的 UART 输出uart_2ndstage1在二级引导阶段2nd-stage bootloader也启用 UART。构建 hello_world构建官方hello_world示例west build -b rpi_5 samples/hello_world同样将build/zephyr/zephyr.bin复制到 microSD 卡根目录插入 Raspberry Pi 5。打开串口终端在计算机上打开任意串口终端模拟器如 minicom、picocom、screen 等连接 Debug Probe 枚举出的串口设备。上电后串口控制台会输出*** Booting Zephyr OS build XXXXXXXXXXXX *** Hello World! rpi_5/bcm2712其中Hello World! rpi_5/bcm2712中的rpi_5/bcm2712来自 hello_world 源码 中的printf(Hello World! %s\n, CONFIG_BOARD_TARGET)CONFIG_BOARD_TARGET展开为板卡/SoC 目标名。从设备树源码可以看到串口控制台的具体连接rpi_5_bcm2712.dts 的chosen节点将zephyr,console和zephyr,shell-uart指向uart10而uart10节点被使能并设置为current-speed 115200。值得注意的是当前 BCM2712 侧的 pinctrl 尚未完全实现rpi_5-pinctrl.dtsi 中放置的是一个桩stub定义uart10_default {}注释明确写着 Not yet implemented BCM2712 side pinctrl。SWD 变体使用 RP1 UART 调试板卡还提供了一个SWD-enabled 变体rpi_5/bcm2712/swd元数据见 rpi_5_bcm2712_swd.yaml。该变体的设备树 rpi_5_bcm2712_swd.dts 做了如下改动将zephyr,console与zephyr,shell-uart从uart10改为rp1_uart0RP1 南桥芯片上的 UART0禁用uart10使能rp1_uart0115200 波特率在 rpi_5_bcm2712_swd-pinctrl.dtsi 中为rp1_uart0配置了引脚复用TX 使用RP1_UART0_TX_P14RX 使用RP1_UART0_RX_P15带输入使能、施密特触发与上拉。对应地SWD 变体的 defconfigrpi_5_bcm2712_swd_defconfig关闭了CONFIG_SHELL_BACKEND_SERIAL_INTERRUPT_DRIVEN以适应不同的调试场景。进阶将 Raspberry Pi 5 作为 Xen Dom0Raspberry Pi 5 平台还可以被用作Xen Zephyr Dom0Xen 管理程序的特权域。Zephyr 提供了现成的xen-dom0snippet 来支持这一用途snippet 定义见 snippets/xen-dom0/snippet.yml。构建 Dom0 镜像以hello_world为例构建 Raspberry Pi 5 的 Xen Dom0 镜像west build -b rpi_5 -p always -S xen-dom0 samples/hello_world命令拆解-b rpi_5指定目标板卡-p always每次构建前执行 pristine彻底清理构建-S xen-dom0应用xen-dom0snippetsamples/hello_world应用源码。snippet.yml中针对rpi_5/bcm2712会附加一个板级 overlaysnippets/xen-dom0/boards/rpi_5.overlay其内容为uart10 { /* Xen consoleio will be used */ status disabled; };也就是说作为 Dom0 运行时Zephyr 不再直接使用uart10串口而是由Xen 的 consoleio控制台 I/O来接管控制台输出。该构建方式预期与专门执行 Xen Domain-0/Dom0 功能的特殊应用程序配合使用。设备树注意点注意使用xen-dom0时必须在 DT 应用 overlay 中指定hypervisorx与memoryx这两个设备树节点其取值要与 Xen 启动时提供的值一致。原因是正常情况下 Xen 会为目标内核更新设备树但在 Zephyr 场景下无法做到这一点因此需要应用开发者手动在 overlay 中补齐这两个节点。更多细节可参考xen-dom0的相关文档:ref:xen-dom0。源码级补充板卡如何被 Zephyr 识别为了让读者对整体机制有更完整的认识这里补充几个与板卡移植直接相关的源码文件Kconfig 入口Kconfig.rpi_5 定义config BOARD_RPI_5并select SOC_BCM2712将板卡与 BCM2712 SoC 绑定板卡标识rpi_5_bcm2712.yaml 声明identifier: rpi_5、type: mcu、arch: arm64工具链支持zephyr与cross-compile设备树兼容rpi_5_bcm2712.dts 中compatible raspberrypi,5-model-b, brcm,bcm2712并通过#include broadcom/bcm2712.dtsi引入 SoC 级描述。也就是说从板卡 Kconfig 选择 SoC → defconfig 配置外设 → dts 描述硬件连接的完整链路共同构成了rpi_5在 Zephyr 中的可移植性基础。小结通过本文你可以完整掌握 Zephyr RTOS 在 Raspberry Pi 5 上的三条主线基础运行MBRFAT32 格式化 microSD放入config.txt、zephyr.bin、bcm2712-rpi-5-b.dtb即可让树莓派启动 Zephyr 固件串口调试借助 Raspberry Pi Debug Probe JST 线连接板载 UART配合enable_uart1、uart_2ndstage1配置即可在终端看到 Zephyr 的启动日志与Hello World输出如需走 SWD 调试可选择rpi_5/bcm2712/swd变体虚拟化扩展通过-S xen-dom0构建 Zephyr 作为 Xen 特权域运行并注意在应用 overlay 中补充hypervisorx与memoryx节点。无论你是想在树莓派 5 上快速验证 Zephyr 示例还是探索RTOS 虚拟化的嵌入式前沿玩法rpi_5板卡支持都为你提供了开箱即用的起点。赞分享操作系统嵌入式RTOS物联网【免费下载链接】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 移植指南在 Arduino MKR ZeroSAMD21上完成构建、烧录与串口调试Zephyr 移植指南在 Arduino MKR ZeroSAMD21上完成构建、烧录与串口调试 Arduino MKR Zero 是 Arduino 官操作系统嵌入式RTOS物联网Zephyr 在 Raspberry Pi 4 Model B 上的移植与实战BCM2711 平台配置、构建与 TF 卡启动指南Zephyr 在 Raspberry Pi 4 Model B 上的移植与实战BCM2711 平台配置、构建与 TF 卡启动指南 导读 本文基于 Zephy操作系统嵌入式RTOS物联网Zephyr RTOS 在 96Boards Meerkat96NXP i.MX7D Cortex-M4上的移植、烧录与调试实战指南Zephyr RTOS 在 96Boards Meerkat96NXP i.MX7D Cortex M4上的移植、烧录与调试实战指南 96Boards Me操作系统嵌入式RTOS物联网创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考