尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Zephyr 在 PHYTEC phyBOARD-Lyra AM62x A53 上的移植与实战指南

Zephyr 在 PHYTEC phyBOARD-Lyra AM62x A53 上的移植与实战指南 Zephyr 在 PHYTEC phyBOARD-Lyra AM62x A53 上的移植与实战指南【免费下载链接】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/zephyrphyBOARD-Lyra AM62x 是 PHYTEC 基于 TI Sitara AM62x 处理器设计的评估套件包含 phyCORE-AM62x 核心板与底板。本指南以 phyboard_lyra_am62xx_a53.rst 为核心系统讲解 Zephyr RTOS 如何在四核 Cortex-A53 集群上运行涵盖板级硬件特性、设备树与 Kconfig 配置、SD 卡镜像准备、west build构建流程以及通过 U-Boot 加载并启动zephyr.bin的完整链路帮助读者从零开始在真实硬件上跑通 Zephyr 应用。板卡概览AM62x 异构平台上的 A53 移植AM62x 是 TI Sitara 系列应用处理器片上集成了四核 Cortex-A53 集群与单核 Cortex-M4位于 MCU 域。Zephyr OS 在 phyBOARD-Lyra 上提供了两套相互独立的板级配置phyboard_lyra/am6234/a53Zephyr 运行在Cortex-A53应用核上本文主题phyboard_lyra/am6234/m4Zephyr 运行在Cortex-M4F核上详见 phyboard_lyra_am62xx_m4.rst由运行于 A53 的 Linux 通过 remoteproc 加载。板级核心硬件规格如下RAM2GB DDR4存储16GB eMMC、64MB OSPI NOR、4KB EEPROM网络板载 Ethernet调试XDS110 类 JTAGM4 配置使用在仓库中板级标识由 board.yml 声明full_name为 phyBOARD-Lyra AM62x A53 Core所属 SoC 为am6234Kconfig.phyboard_lyra 通过config BOARD_PHYBOARD_LYRA在 A53 配置下select SOC_AM6234_A53将板级与 SoC 绑定。SoC 支持代码位于 soc/ti/k3/am62x含Kconfig.soc、Kconfig.defconfig等而 dts/arm64/ti/ti_am6234_a53.dtsi 在通用ti_am62x_a53.dtsi基础上补充了cpu1~cpu3的 Cortex-A53 节点定义。支持的硬件特性根据板卡文档phyboard_lyra/am6234/a53配置支持以下硬件特性接口控制器驱动/组件GIC-v3on-chip中断控制器interrupt controllerARM TIMERon-chip系统时钟system clockPINCTRLon-chippinctrl 引脚复用UARTon-chip串口serial portMailboxon-chipIPC Mailbox 核间通信从设备树 phyboard_lyra_am6234_a53.dts 可以看到该移植仅启用了 A53 集群中的CPU0cpu1~cpu3均被status disabled并以compatible phytec,phyboard-lyra-am62xx-a53, ti,am625标识整板。Mailbox 的存在为 A53 与 M4 之间的核间通信如 rpmsg预留了通道这也与 M4 配置通过 remoteproc 加载的方式相互呼应。板级资源分配详解系统时钟200 MHz本板配置的系统时钟频率为200 MHz由片上 ARM TIMER 驱动。与 M4 配置400 MHz见 M4 文档不同A53 配置的时钟域和定时器路径由 ARMv8-A 架构层提供支持。DDR RAM2GB 物理内存Zephyr 占用 1MB板卡实际具备 2GB DDR4但 Zephyr 的 A53 配置只向内核分配了1MB RAM地址范围0x82000000~0x82100000。这一分配在设备树中明确体现ddr0: memory82000000 { /* Note: This board actually has 2GB DRAM available */ reg 0x82000000 DT_SIZE_M(1); };同时chosen节点将zephyr,sram指向ddr0即 Zephyr 的静态内存区域SRAM 区直接落在 DDR 起始地址0x82000000——这正是后续 U-Boot 加载内核镜像的目标地址。板级 YAML 元数据 phyboard_lyra_am6234_a53.yaml 中的ram: 1024KB也与该 1MB 分配保持一致。串口UART0 作为唯一串行通道配置使用 CPU 域UART0main_uart0作为唯一串行通信通道波特率 115200。设备树中完成了引脚复用与串口节点使能pinctrl { uart0_rx_default: uart0_rx_default { pinmux K3_PINMUX(0x1c8, PIN_INPUT, MUX_MODE_0); }; uart0_tx_default: uart0_tx_default { pinmux K3_PINMUX(0x1cc, PIN_OUTPUT, MUX_MODE_0); }; }; main_uart0 { current-speed 115200; pinctrl-0 uart0_rx_default uart0_tx_default; pinctrl-names default; status okay; };chosen节点同时将zephyr,console与zephyr,shell-uart指向main_uart0因此串口同时承载内核日志控制台与 Shell 输出。defconfig 关键配置解读phyboard_lyra_am6234_a53_defconfig 定义了该移植的 Kconfig 基线几类关键项如下ARM64 镜像与地址空间CONFIG_AARCH64_IMAGE_HEADERy生成 AArch64 启动镜像头、CONFIG_ARMV8_A_NSy非安全世界、CONFIG_ARM64_VA_BITS_36/CONFIG_ARM64_PA_BITS_3636 位虚拟/物理地址空间Cache 管理CONFIG_CACHE_MANAGEMENTy配合CONFIG_DCACHE_LINE_SIZE_DETECT/CONFIG_ICACHE_LINE_SIZE_DETECT在运行时自动探测缓存行大小执行模式CONFIG_XIPn镜像从 RAM 执行由 U-Boot 加载到 DDR 后运行串口与控制台CONFIG_SERIALy、CONFIG_UART_INTERRUPT_DRIVENy、CONFIG_CONSOLEy、CONFIG_UART_CONSOLEy使能 UART 中断驱动模式与 UART 控制台。注west build时若需调整可通过-DEXTRA_CONF或prj.conf覆盖上述默认值例如增大 RAM 分配或改用其他控制台后端。准备 SD 卡启动镜像A53 核的启动流程依赖一张预置 Linux 系统的 SD 卡由 PHYTEC BSP 构建。操作步骤如下从 PHYTEC 官方发布渠道下载WIC镜像文件如phytec-qt5demo-image-phyboard-lyra-am62xx-3.wic.xz及其配套的bmap文件使用bmaptoolbmap-tools 工具包将镜像快速烧写至 SD 卡bmaptool copy phytec-qt5demo-image-phyboard-lyra-am62xx-3.wic.xz /dev/sdX其中/dev/sdX请替换为实际 SD 卡设备节点。bmap 文件记录了镜像的块映射可大幅缩短烧写时间并跳过空白区域。烧写完成后这张 SD 卡同时承担两层职责其一U-Boot 与 Linux 引导A53 应用核其二承载编译出的zephyr.bin供 U-Boot 直接加载。构建 Zephyr 应用A53 配置的构建方式与标准 Zephyr 流程完全一致。以官方hello_world示例为例在 Zephyr 仓库根目录执行west build -p -b phyboard_lyra/am6234/a53 samples/hello_world-p构建前执行 pristine 清理保证干净构建-b phyboard_lyra/am6234/a53指定板级标识符samples/hello_world应用源码目录。构建产物位于build/zephyr/目录其中zephyr.bin是后续需要拷贝到 SD 卡的裸二进制镜像。该板默认使用zephyrZephyr SDK或cross-compile工具链详见 phyboard_lyra_am6234_a53.yaml 中的toolchain声明。编程与 U-Boot 启动拷贝镜像到 SD 卡将编译出的build/zephyr/zephyr.bin拷贝到 SD 卡第一个 FAT 分区弹出 SD 卡并插入板卡上电在 U-Boot 提示符出现时中断自动启动进入 U-Boot 命令行。U-Boot 加载并运行在 U-Boot 提示符下执行如下命令序列fatload mmc 1:1 0x82000000 zephyr.bin; dcache flush; icache flush; dcache off; icache off; go 0x82000000命令逐步拆解fatload mmc 1:1 0x82000000 zephyr.bin从 MMC 设备 1 分区 1即第一个 FAT 分区读取zephyr.bin到内存地址0x82000000dcache flush; icache flush将缓存中的内容刷回内存保证加载的数据对 CPU 可见dcache off; icache off关闭数据/指令缓存避免缓存一致性干扰直接跳转执行go 0x82000000跳转到0x82000000执行。0x82000000正是设备树中ddr0的起始地址与zephyr,sram指向一致因此镜像被加载到 Zephyr 期望的内存基址上。启动后的预期行为启动成功后串口UART0115200将输出 Zephyr 启动日志及hello_world示例的打印信息。若需交互调试可使用zephyr,shell-uart所指向的同一 UART 进入 Zephyr Shell。调试与常见注意事项构建/烧写差异A53 配置通过 U-Boot 直接go跳转运行而 M4 配置则需由 A53 上的 Linux 通过 remoteproc 加载zephyr.elf命名为am62-mcu-m4f0_0-fw放入/lib/firmware两者加载路径完全不同请勿混淆参见 M4 文档Cache 一致性U-Boot 命令中的 cache 开关序列是本板启动的关键步骤省略会导致指令/数据不一致而无法启动资源预算默认仅向 Zephyr 分配 1MB RAM若应用需要更大内存需同步修改设备树ddr0的reg大小注意DT_SIZE_M宏并保证与 U-Boot 加载地址协调多核策略当前移植仅启用 CPU0其余 A53 核处于 disabled 状态SMP 支持未在本配置中启用。小结通过本指南你已掌握在 PHYTEC phyBOARD-Lyra AM62x 的 Cortex-A53 核上运行 Zephyr 的完整流程从板级硬件资源与支持特性到设备树/Kconfig 的配置细节再到 WIC 镜像烧写、west build构建、以及通过 U-Bootfatloadgo的启动方法。若要进一步深入可继续阅读 板级设备树、defconfig 及 SoC 层源码 soc/ti/k3/am62x理解 K3 平台在 Zephyr 中的完整实现。【免费下载链接】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),仅供参考
返回列表