ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Zephyr 上的 QuickFeather 开发板:EOS S3 平台移植、构建与 OpenOCD/JLink 调试实战

Zephyr 上的 QuickFeather 开发板:EOS S3 平台移植、构建与 OpenOCD/JLink 调试实战 Zephyr 上的 QuickFeather 开发板EOS S3 平台移植、构建与 OpenOCD/JLink 调试实战【免费下载链接】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/zephyrQuickFeather 是一块以 QuickLogic EOS S3 传感器处理平台Sensor Processing Platform为核心的开发板集成了 MCU 与可编程 FPGA并板载加速度计、气压传感器和 MEMS 麦克风。本文以 Zephyr 仓库中 QuickFeather 板级文档 为主体结合其设备树、默认配置与 SoC 层源码系统讲解该板卡的硬件构成、Zephyr 移植要点、SRAM 加载运行模式以及使用 OpenOCD / JLink 配合 GDB 完成烧录与调试的完整流程。读完后你将能够在 Zephyr 环境中为 QuickFeather 构建应用并完成真实的片上调试。QuickFeather 开发板外观硬件概览QuickFeather 的核心是 QuickLogic EOS S3 平台这是一颗面向传感器处理场景的低功耗 SoCMCU 侧基于 ARM Cortex-M4F并集成了可编程 FPGA Fabric用于在前端卸载传感器数据的预处理任务。板级文档列出的硬件资源如下QuickLogic EOS S3 MCU 平台Cortex-M4F 内核 eFPGA嵌入式 FPGAmCube MC3635 加速度计三轴加速度传感器Infineon DPS310 压力传感器高精度气压/温度测量Infineon IM69D130 MEMS 麦克风数字麦克风配合 FPGA 可实现语音唤醒等低功耗场景16 Mbit 板载 Flash 存储器存放出厂固件与用户程序用户按钮User ButtonRGB LED集成电池充电器可直接为锂电池充电适合可穿戴/便携设备原型。从 Zephyr 侧看板级描述文件 board.yml 将板卡标识为quick_feather全名 QuickFeather所属厂商为quicklogic对应 SoC 为quicklogic_eos_s3Kconfig.quick_feather 中的BOARD_QUICK_FEATHER通过select SOC_EOS_S3完成板卡与 SoC 的绑定。支持的 Zephyr 功能与外设映射板级支持的硬件结合板级设备树 quick_feather.dts 与默认配置 quick_feather_defconfig当前移植在 Zephyr 中激活的主要功能包括功能说明配置/设备树依据GPIO板载 LED、按钮及外部引脚控制CONFIG_GPIOygpio { status okay; }UART控制台/Shell 串口115200CONFIG_UART_CONSOLEyuart0 { current-speed 115200; }PinctrlUART 引脚复用配置uart_rx_default/uart_tx_defaultFPGAeFPGA 上电、时钟与编程管理设备树中fpga0 { status okay; }系统时钟61.44 MHz 硬件时钟CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC61440000板级文档中的zephyr:board-supported-hw::指令会在文档构建时依据设备树自动生成支持清单其核心来源正是上述 quick_feather.dts。设备树中的引脚与别名定义在 quick_feather.dts 中板级引脚映射定义得非常清晰RGB LED三色 LED 分别挂在 GPIO 4、5、6 上blue_led、green_led、red_led均为GPIO_ACTIVE_HIGH用户按钮挂在 GPIO 0 上采用GPIO_PULL_UP | GPIO_ACTIVE_LOW内部上拉、按下为低电平并映射为输入事件码INPUT_KEY_0别名led0/led1/led2对应蓝/绿/红三颗 LEDsw0对应按钮方便应用层以通用别名访问控制台串口chosen节点将zephyr,console、zephyr,shell-uart、zephyr,uart-pipe全部指向uart0UART 引脚复用RX 使用UART_RX_PAD45配置input-enableTX 使用UART_TX_PAD44配置output-enable复用定义见 pinctrl 绑定头文件CPU 频率cpu0中声明clock-frequency 61440000与 SoC 默认值一致。运行模式SRAM 加载而非 Flash 执行QuickFeather 硬件默认从板载 Flash 启动但当前 Zephyr 移植只支持将程序直接加载到 SRAM 中运行。这一设计在 quick_feather_defconfig 中有明确注释EOS S3 的 Configuration Manager 会在上电时把外部 Flash 中的软件通过预配置的 DMA 拷贝到 MCU 内存再执行因此 Zephyr 侧并不直接使用 Flash。对应配置为CONFIG_XIPn CONFIG_FLASHn CONFIG_FLASH_SIZE0 CONFIG_FLASH_BASE_ADDRESS0x0同时CONFIG_ARM_MPUn关闭了 ARM MPU程序完全在 SRAM 中运行这也解释了后续烧录调试为何必须依赖调试器OpenOCD/JLink将 ELF 直接装载进内存。SoC 层启动与时钟初始化进入板级细节之前有必要了解 EOS S3 的底层初始化这有助于理解 61.44 MHz 系统时钟从何而来。SoC 层实现位于 soc/quicklogic/eos_s3/soc.c其soc_early_init_hook()在系统早期启动阶段依次完成eos_s3_lock_enable()通过写MISC_CTRL-LOCK_KEY_CTRL解锁配置寄存器eos_s3_lock_disable()再重新上锁eos_s3_cru_init()使能振荡器、按CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC设置频率递增步进并等待时钟锁定随后打开 A/B/C/D/F/G/H/I/J 各时钟域的时钟门控关闭 A0 域分频使能 UART、WDT 与 TIMER 外设时钟并将 C11 域分频到约 5.12 MHz配置SCnSCB-ACTLR禁用默认写缓冲DISDEFWBUF清除所有中断并通过INTR_CTRL-OTHER_INTR_EN_M4 UART_INTR_EN_M4使能 UART 中断。对应的 SoC 默认值定义在 soc/quicklogic/eos_s3/Kconfig.defconfigNUM_IRQS默认为 52SYS_CLOCK_HW_CYCLES_PER_SEC默认为 61440000且启用串口时默认开启UART_INTERRUPT_DRIVEN。板级 defconfig 中的CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC61440000正是与 SoC 默认值对齐的显式声明。此外EOS S3 的 eFPGA 由 drivers/fpga/fpga_eos_s3.c 驱动管理通过 PMU 寄存器唤醒 FPGA 电源域、打开 C16/C21/C09/C02 时钟门控、再使能编程加载CFG_CTL_LOAD_ENABLE并提供FPGA_STATUS_ACTIVE/INACTIVE状态查询。这使得用户可以在 Zephyr 中统一管理 FPGA 的上下电与位流加载。构建应用在 Zephyr 中为 QuickFeather 构建应用使用标准的west流程。以官方 hello_world 示例为例west build -b quick_feather samples/hello_worldwest build会依据 quick_feather.yaml 中声明的元数据架构为arm支持zephyr与gnuarmemb工具链自动完成配置与编译产物为build/zephyr/zephyr.elf。需要注意该板卡的测试元数据将net、bluetooth标记为忽略标签即官方测试套件默认不在此板卡上运行网络与蓝牙相关用例这与当前移植未启用相关外设驱动是一致的。编程与烧录板级文档明确说明默认情况下Zephyr 移植通过 OpenOCD配合 SWD 编程器或 SEGGER JLink 将程序直接加载到 SRAM。zephyr:board-supported-runners::指令会在文档中自动生成受支持的烧录器列表即 OpenOCD 与 JLink。使用 OpenOCD 连接目标板使用 OpenOCD 需要一块受支持的 SWD 编程器例如 CMSIS-DAP、ST-Link 等。连接到 QuickFeather 的命令为openocd -f /path/to/swd-programmer.cfg -f tcl/board/quicklogic_quickfeather.cfg -c init -c reset halt其中/path/to/swd-programmer.cfg你所使用 SWD 编程器的接口配置文件tcl/board/quicklogic_quickfeather.cfgQuickFeather 的板级 OpenOCD 配置该文件位于 OpenOCD 主线仓库的 tcl/board 目录下需要与本机安装的 OpenOCD 版本配套-c init -c reset halt初始化调试会话并将目标复位到 halted 状态等待 GDB 接入。使用 JLink若使用 SEGGER JLink请按照 QuickFeather 官方用户指南完成连接配置包括驱动安装、目标设备选择EOS S3以及 J-Link 与板载 SWD 接口的接线确认。连接成功后同样会得到一个可供 GDB 远程接入的调试端口。板级文档将详细步骤指向 QuickFeather 用户指南此处不再赘述。调试GDB 远程加载与运行无论使用 OpenOCD 还是 JLink调试方式一致通过 GDB 远程连接到调试器暴露的端口加载 ELF 并运行。1. 构建示例按常规方式构建目标应用以 hello_world 为例west build -b quick_feather samples/hello_world2. 连接调试器先用上文 OpenOCD 或 JLink 的方式连接目标板并保持会话运行OpenOCD 默认监听 3333 端口JLink GDB Server 默认监听 2331 端口。3. 启动 GDB 并加载程序使用 Zephyr SDK 自带的 ARM 交叉 GDB 完成加载。Zephyr SDK 的 GDB 位于arm-zephyr-eabi/bin目录下例如zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gdb。典型会话如下/path/to/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gdb在 GDB 内部依次执行target remote port_number file /path/to/zephyr.elf load continue命令含义target remote port_number连接到调试器端口OpenOCD 为 3333JLink 为 2331file /path/to/zephyr.elf加载符号表使用build/zephyr/zephyr.elfload将 ELF 中的代码段与数据段写入目标 SRAMcontinue复位运行程序开始在 SRAM 中执行串口终端上即可看到 hello_world 输出。由于当前移植以 SRAM 运行为主load阶段不会涉及 Flash 编程因此整个过程不依赖板载 Flash 状态只要调试器能通过 SWD 访问 MCU 即可反复调试。参考资料与延伸阅读板级文档原文boards/quicklogic/quick_feather/doc/index.rst板级设备树boards/quicklogic/quick_feather/quick_feather.dts板级默认配置boards/quicklogic/quick_feather/quick_feather_defconfig板级元数据boards/quicklogic/quick_feather/quick_feather.yaml 与 boards/quicklogic/quick_feather/board.ymlSoC 启动与时钟初始化soc/quicklogic/eos_s3/soc.c、soc/quicklogic/eos_s3/Kconfig.defconfigeFPGA 驱动实现drivers/fpga/fpga_eos_s3.c引脚复用绑定include/zephyr/dt-bindings/pinctrl/quicklogic-eos-s3-pinctrl.h更多关于板卡引脚定义、原理图与出厂固件的详细资料可查阅 QuickFeather 官方硬件仓库及其文档板级文档的 References 一节给出了 QuickFeather 仓库、原理图 PDF、OpenOCD 板级配置与用户指南的原始链接。【免费下载链接】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),仅供参考
返回列表