
Zephyr 中的 96Boards Argonkey 开发板支持硬件资源、时钟树与烧录调试实战指南【免费下载链接】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/zephyr96Boards Argonkey 是 Zephyr RTOS 官方支持的一款基于意法半导体 STM32F412CGCortex-M4F的传感器中枢开发板本指南以其官方板级文档为主体结合 Zephyr 仓库中的设备树、Kconfig 与测试用例完整讲解该板卡的硬件资源、引脚映射、时钟配置以及 ROM Bootloader 与 SWD 两种固件烧录方案。读完本文你将掌握在 Zephyr 中为目标板卡构建应用、理解传感器驱动挂载关系并完成实际烧录调试的完整技术路径。板卡概述与定位96Boards Argonkey 是基于 ST Microelectronics STM32F412CG 微控制器ARM Cortex-M4 内核的评估板其核心定位是作为所有 96Boards 规范兼容产品家族的传感器中枢平台sensor hub platform同时也可以作为独立开发板单独使用。在 Zephyr 仓库中该板卡的定义位于 boards/96boards/argonkey/其设备树文件 96b_argonkey.dts 中声明了板级模型信息model Tocoding Argonkey 96boards; compatible tocoding,argonkey;板卡标识符为96b_argonkey对应 SoC 为stm32f412cx见 board.yml其 MCU 级描述可在 96b_argonkey.yaml 中查看声明了ram: 256、flash: 1024单位 KB以及 gpio、i2c、i2s、hts221、lps22hb、lsm6dsl、counter、spi、vl53l0x 等受支持的功能特性。硬件资源一览96Boards Argonkey 提供的硬件组件如下主控STM32F412CGUFQFPN48 封装CPUARM® 32 位 Cortex®-M4带 FPU浮点运算单元主频最高 100 MHz工作电压1.8V存储1024 KB Flash、256 KB SRAM板载传感器湿度传感器STMicro HTS221温度/气压传感器STMicro LPS22HB环境光传感器ALSIntersil ISL29034接近传感器STMicro VL53L0X加速度计/陀螺仪STMicro LSM6DSL地磁传感器STMicro LIS2MDLAMR 霍尔传感器MRMS501A麦克风STMicro MP34DT05LED2 个用户 LED 16 个通用 LED接口支持外部中断的 GPIO、UART、I2C ×3、SPI ×1、I2S ×1引脚连接与映射LED功能引脚LED1 / User1 LEDPB2LED2 / User2 LEDPC13设备树 96b_argonkey.dts 中通过gpio-leds节点定义了这两颗 LED 及led0/led1别名green_led_0: led_0 { gpios gpioc 13 GPIO_ACTIVE_HIGH; label USR0 LED; }; green_led_1: led_1 { gpios gpiob 2 GPIO_ACTIVE_HIGH; label USR1 LED; };按键BUTTON RSTBT1——复位按键BUTTON USRBT2——用户按键用户按键在设备树中映射为gpio-keys节点PA2低电平有效并设置了别名sw0与输入事件码user_button: button { label User; gpios gpioa 2 GPIO_ACTIVE_LOW; zephyr,code INPUT_KEY_0; };系统时钟配置96Boards Argonkey 既可由内部振荡器驱动也可由主 PLL 时钟驱动。在默认板级配置中使用16 MHz 外部晶振HSE驱动主 PLL将系统时钟 SYSCLK 配置为84 MHz总线侧 AHB 时钟为 84 MHzAPB1/APB2 时钟均为 42 MHz。设备树中对应的 PLL 与 RCC 配置如下见 96b_argonkey.dtsclk_hse { clock-frequency DT_FREQ_M(16); status okay; }; pll { div-m 8; mul-n 84; div-p 2; div-q 8; clocks clk_hse; status okay; }; rcc { clocks pll; clock-frequency DT_FREQ_M(84); ahb-prescaler 1; apb1-prescaler 2; /* APB2 clock is fixed at 42MHz to prevent known SPI/I2S bug */ apb2-prescaler 2; };值得注意的实现细节是APB2 预分频被固定为 242 MHz以规避已知的 SPI/I2S 缺陷源码注释明确标注了这一点。此外PLLI2S 被配置为输出 48 MHz 时钟div-m 8; mul-n 192; div-r 3; div-q 4服务于 I2S 音频外设RTC 则由 LSI 低速内部时钟驱动见设备树中的rtc节点时钟源选择RTC_SEL(2)即 LSI。串口与调试控制台在 96Boards Argonkey 上Zephyr 控制台输出分配给USART1默认参数为115200 8N1115200 波特率、8 位数据、无校验、1 位停止位。设备树中通过chosen节点将控制台与 shell 绑定到 USART1并使用 PA9/PA10 作为 TX/RX 引脚chosen { zephyr,console usart1; zephyr,shell-uart usart1; ... }; usart1 { pinctrl-0 usart1_tx_pa9 usart1_rx_pa10; pinctrl-names default; current-speed 115200; status okay; };对应地默认 defconfig96b_argonkey_defconfig启用了串口、GPIO 与控制台相关配置并同时开启了 ARM MPU 与硬件栈保护CONFIG_ARM_MPUy CONFIG_HW_STACK_PROTECTIONy CONFIG_SERIALy CONFIG_GPIOy CONFIG_CONSOLEy CONFIG_UART_CONSOLEyI2C 总线映射96Boards Argonkey 最多提供 3 路 I2C默认映射如下信号引脚I2C1_SCLPB6I2C1_SDAPB7I2C2_SCLPB10I2C2_SDAPB9I2C3_SCLPA8I2C3_SDAPB4注原文档中 I2C3 行存在笔误正确映射以设备树 96b_argonkey.dts 中的i2c3_scl_pa8 i2c3_sda_pb4为准。I2C3 连接到 P2 扩展连接器可用于挂接外部传感器其最大通信速率为 100 Kbit/s。其余两路 I2C 在设备树中均配置为I2C_BITRATE_FAST400 kbit/s模式并挂载了板载传感器I2C1st,hts221地址 0x5F湿度传感器数据就绪中断接 PA2、st,lps22hb-press地址 0x5D气压传感器、st,vl53l0x地址 0x29接近传感器I2C2ti,lp3943地址 0x6016 通道 LED 驱动对应板上 16 颗通用 LED设备树中 I2C1 节点示例i2c1 { pinctrl-0 i2c1_scl_pb6 i2c1_sda_pb7; pinctrl-names default; scl-gpios gpiob 6 GPIO_ACTIVE_HIGH; sda-gpios gpiob 7 GPIO_ACTIVE_HIGH; status okay; clock-frequency I2C_BITRATE_FAST; hts2215f { compatible st,hts221; reg 0x5f; drdy-gpios gpioa 2 GPIO_ACTIVE_HIGH; }; ... };SPI 总线映射96Boards Argonkey 提供 2 路 SPI分工明确SPI1以从机slave模式工作作为与 AP应用处理器之间的通信总线SPI2以主机master模式工作用于控制板载 LSM6DSL 加速度计/陀螺仪传感器。默认 SPI 引脚映射如下信号引脚SPI1_NSSPA4SPI1_SCKPA5SPI1_MISOPA6SPI1_MOSIPA7SPI2_NSSPB12SPI2_SCKPB13SPI2_MISOPB14SPI2_MOSIPB15设备树中 SPI2 以very-high-speed斜率挂接 LSM6DSLSPI 最高频率 1 MHz中断引脚为 PB1spi2 { pinctrl-0 spi2_nss_pb12 spi2_sck_pb13 spi2_miso_pb14 spi2_mosi_pb15; pinctrl-names default; status okay; /* ST Microelectronics LSM6DSL accel/gyro sensor */ lsm6dsl: lsm6dsl1 { compatible st,lsm6dsl; reg 1; spi-max-frequency 1000000; irq-gpios gpiob 1 GPIO_ACTIVE_HIGH; }; };设备树别名accel0 lsm6dsl使其可被sensorAPI 便捷访问。板级 KconfigKconfig.defconfig进一步为 LSM6DSL 定制了触发模式与传感器中枢SensorHub配置choice LSM6DSL_TRIGGER_MODE default LSM6DSL_TRIGGER_GLOBAL_THREAD endchoice config LSM6DSL_SENSORHUB default y choice LSM6DSL_EXTERNAL_SENSOR_0 default LSM6DSL_EXT0_LIS2MDL endchoice即LSM6DSL 默认使用全局线程触发模式默认开启 SensorHub 功能并将外部传感器 0 默认配置为 LIS2MDL 地磁传感器——这正体现了 Argonkey 作为多传感器中枢平台的硬件与软件协同设计。I2S 与麦克风板载 MP34DT05 数字麦克风通过 I2S5 接口接入设备树中挂载为st,mpxxdtyy兼容节点i2s5 { status okay; pinctrl-0 i2s5_ck_pb0 i2s5_sd_pb8; pinctrl-names default; mp34dt050 { compatible st,mpxxdtyy; reg 0; }; };仓库中的 I2S 驱动测试如 tests/drivers/i2s/i2s_api/boards/96b_argonkey.overlay通过别名将i2s-node0指向i2s5配合 96b_argonkey.conf 中的CONFIG_HEAP_MEM_POOL_SIZE1024即可在该板上运行 I2S 收发测试可作为音频路径的验证参考。构建与烧录构建应用以 Zephyr 官方hello_world示例为例在 Zephyr 工作区根目录执行以下命令构建west build -b 96b_argonkey samples/hello_world其中-b 96b_argonkey指定目标板卡标识符构建产物zephyr.bin生成于build/zephyr/目录下。板卡 Kconfig 入口位于 Kconfig.96b_argonkey其内容为config BOARD_96B_ARGONKEY select SOC_STM32F412CXROM Bootloader 方式烧录UART96Boards Argonkey 支持两种烧录方式一是使用 STM32 内置的ROM Bootloader二是通过SWD 调试端口需要额外硬件。ROM Bootloader 需要特殊的激活序列可通过 BOOT0 引脚触发它支持 USBDFU、UART、I2C、SPI 等多种烧录通道本节仅描述UART 通道详见 ST 应用笔记 AN2606。在 Linux PC 上通过 UART 烧录 ArgonKey 固件的基本步骤如下连接 UART使用 USB-TTL 串口线文档实测使用带 FTDI 芯片的 TTL-232RG 线缆连接 ArgonKey 的 P3 低速扩展连接器位于板卡背面GND黑线→ ArgonKey GNDP3.1TXD橙线→ ArgonKey UART0_TXDP3.5RXD黄线→ ArgonKey UART0_RXDP3.7插入 USB 后Linux 下会出现设备节点/dev/ttyUSBxx 通常为 0。强制进入 Bootloader 模式将 BOOT0 连接到 1V8即短接 P2.1 与 P3.30按下并松开 RST 复位按键使用 stm32flash 工具烧录$ stm32flash -w zephyr.bin -v -g 0x08000000 /dev/ttyUSB0参数说明-w写入固件文件zephyr.bin-v校验写入内容-g 0x08000000指定烧录完成后从 Flash 起始地址 0x08000000 跳转运行STM32F412 的片上 Flash 基地址。SWD 调试器方式烧录选择一款商用 JTAG/SWD 硬件调试工具并连接到 ArgonKey 的 P4 连接器。官方实测使用 ST-LINK/V2 调试器将 ST-LINK/V2 通过 USB 连接到 PC 后它会以带大容量存储能力的 USB 复合设备形式出现在 Linux 下挂载该设备后将固件复制进去即可由 ST-LINK 自动烧录到 ArgonKey。操作示例如下$ mount /dev/sdb /mnt $ cp zephyr.bin /mnt $ umount /mnt烧录完成后可通过 USART1115200 8N1连接串口终端查看 Zephyr 控制台输出进行后续调试。参考资料ST 应用笔记 AN2606STM32 微控制器系统存储启动模式ROM Bootloader 启用与使用说明stm32flash开源 STM32 串行烧录工具ST-LINK/V2意法半导体调试器硬件TTL-232RGFTDI 芯片的 USB-TTL 串口线数据手册小结96Boards Argonkey 在 Zephyr 中是一份典型的传感器中枢 独立 MCU 板卡双形态支持范例设备树 96b_argonkey.dts 完整刻画了 84 MHz 时钟树、三路 I2C、双 SPI、I2S 与全部板载传感器的挂载关系板级 Kconfig 为 LSM6DSL 传感器中枢提供了开箱即用的触发与外部传感器默认配置烧录层面同时覆盖了免额外硬件的 ROM BootloaderUART路径与面向专业调试的 SWDST-LINK路径。对希望基于 Zephyr 快速构建多传感器数据采集或 96Boards 生态外设的开发者而言Argonkey 是一块可以直接上手验证的平台。【免费下载链接】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),仅供参考