
Zephyr 下的 MXChip AZ3166 IoT DevKit 开发板支持指南硬件资源、设备树配置与烧录调试【免费下载链接】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 仓库中 MXChip AZ3166 IoT DevKit 板级文档 为主体完整介绍该开发板的硬件特性、Zephyr 支持范围、设备树DTS中的外设映射、串口与传感器配置以及基于west的构建、烧录与调试流程。读者读完可以掌握如何在 Zephyr 中为该板卡构建应用、烧录固件并通过串口观察输出同时理解板级源码az3166_iotdevkit.dts、defconfig等背后的实现细节。板卡概述MXChip AZ3166 IoT DevKit 是由 MXChip 推出的一体化物联网开发板专门面向 IoT 项目设计。它由一颗 Arm Cortex-M4 处理器驱动板载外设非常丰富OLED 屏幕、耳机输出、立体声麦克风以及湿度/温度、气压、运动加速度计与陀螺仪、磁力计等大量传感器适合快速搭建物联网原型。在 Zephyr 仓库中该板卡由 boards/mxchip/az3166_iotdevkit 目录下的板级定义文件支撑板级标识符identifier为az3166_iotdevkit与设备树中的compatible mxchip,az3166_iotdevkit相对应见 az3166_iotdevkit.dts。硬件资源一览根据板级文档MXChip AZ3166 IoT DevKit 具备以下物理特性主控STM32F412 Arm Cortex M4F 处理器主频 96 MHz工作电压3.3V 或 USB 供电支持 3.3V DC-DC 转换最大电流 1.5AOLED 显示屏128x64 像素2 个可编程按键1 个 RGB LED3 个状态指示灯Wi-Fi、Azure、User安全加密芯片红外发射器用于红外遥控或交互运动传感器LSM6DSL加速度计 陀螺仪磁力计传感器LIS3MDL气压传感器LPS22HB温湿度传感器HTS221EMW3166 Wi-Fi 模块带 256K SRAM1M2M Byte SPI Flash注意EMW3166 Wi-Fi 模块目前尚未在 Zephyr 中得到支持板级文档与 board.yml 的支持特性列表中均未包含网络相关能力。从板级清单文件 board.yml 可以看到该板卡的 SoC 为stm32f412rxSTM32F412RX对应的 Kconfig 中通过select SOC_STM32F412RX完成 SoC 选择见 Kconfig.az3166_iotdevkit。Zephyr 支持特性板级文档通过zephyr:board-supported-hw::指令自动列出受支持的外设结合 az3166_iotdevkit.yaml 中的supported字段当前 Zephyr 为该板卡明确支持以下子系统特性说明gpioGPIO 端口板载 LED、按键pwmPWMRGB LED 调光spiSPI 总线i2cI2C 总线连接各传感器与 OLED板级支持的工具链为zephyr与gnuarmemb架构为arm类型为mcu。设备树配置深度解读板级设备树 az3166_iotdevkit.dts 以stm32f412Xg.dtsi与对应的 pinctrl 头文件为基础展开下面逐项拆解其关键配置。aliases 与 chosenaliases { led0 user_led; pwm-led0 blue_pwm_led; sw0 button_a; red-led red_led; green-led green_led; blue-led blue_led; red-pwm-led red_pwm_led; green-pwm-led green_pwm_led; blue-pwm-led blue_pwm_led; accel0 lsm6dsl; };别名把常用外设映射为通用名称led0指向 User LED、sw0指向按键 A、accel0指向 LSM6DSL 加速度计PWM 调光版本的三色 LED 也提供了别名方便应用层直接使用DT_ALIAS()访问。chosen { zephyr,console usart6; zephyr,shell-uart usart6; zephyr,sram sram0; zephyr,flash flash0; zephyr,display ssd1306; };chosen节点指定了系统的默认控制台与 shell 串口为USART6默认 115200 波特率默认显示设备为 SSD1306 OLED。LED 与按键GPIO LED 定义如下均为gpio-ledscompatibleLED引脚电平GreenPB3高电平有效RedPB4高电平有效BluePC7高电平有效Wi-FiPB2高电平有效AzurePA15高电平有效UserPC13高电平有效RGB LED 同时以 PWM 方式驱动pwm-ledscompatible三个通道分别为通道PWM 外设周期Redpwm3通道 1PWM_MSEC(20)20msGreenpwm2通道 2PWM_MSEC(20)Bluepwm3通道 2PWM_MSEC(20)按键定义为gpio-keysbutton_a: button_a { gpios gpioa 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP); label Button A; zephyr,code INPUT_KEY_A; }; button_b: button_b { gpios gpioa 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP); label Button B; zephyr,code INPUT_KEY_B; };按键 A 位于 PA4、按键 B 位于 PA10均为低电平有效并启用内部上拉同时映射了INPUT_KEY_A/INPUT_KEY_B输入事件码可配合 Zephyr 的 input 子系统使用。时钟树时钟配置是让板卡跑在 96 MHz 的关键clk_hse { clock-frequency DT_FREQ_M(26); status okay; }; pll { div-m 13; mul-n 96; div-p 2; div-q 4; clocks clk_hse; status okay; }; rcc { clocks pll; clock-frequency DT_FREQ_M(96); ahb-prescaler 1; apb1-prescaler 2; apb2-prescaler 1; };即外部 26 MHz HSE 晶振经过 PLLM13、N96、P2倍频得到 96 MHz 系统时钟AHB 不分频APB1 二分频、APB2 不分频LSI 低速时钟被使能用于 RTC。串口、I2C 传感器与 SPIUSART1PB6/PB7与USART6PA11/PA12均配置为 115200 波特率USART6 作为控制台。I2C1SCLPB8、SDAPB9以快速模式400 kHz运行总线上挂载了板载全部传感器与 OLED设备兼容串I2C 地址LSM6DSL 运动传感器st,lsm6dsl0x6AHTS221 温湿度传感器st,hts2210x5FLIS2MDL 磁力计st,lis2mdl0x1ELPS22HB 气压传感器st,lps22hb-press0x5CSSD1306 OLEDsolomon,ssd13060x3CSPI1使能复用 PB13/PB14/PB15 引脚组。TIM2/TIM3以st,prescaler 10000配置作为 PWM 发生器。SSD1306 OLED 在设备树中配置为 128x64segment-remap、com-invdir、inversion-on等参数对齐了实际面板的驱动时序其驱动实现位于 drivers/display/display_ssd1306.c设备树绑定定义在 dts/bindings/display/solomon,ssd1306-i2c.yaml。LSM6DSL 的驱动则位于 drivers/sensor/st/lsm6dsl/lsm6dsl.c支持 I2C 与 SPI 两种总线接入方式lsm6dsl_i2c.c、lsm6dsl_spi.c。默认 defconfig 与基础安全特性az3166_iotdevkit_defconfig 给出了板级默认的 Kconfig 配置# Enable MPU CONFIG_ARM_MPUy # Enable HW stack protection CONFIG_HW_STACK_PROTECTIONy CONFIG_SERIALy # console CONFIG_CONSOLEy CONFIG_UART_CONSOLEy # enable GPIO ports CONFIG_GPIOy默认开启了ARM MPU与硬件栈保护HW stack protection体现该板卡在 Zephyr 中默认具备内存保护与栈溢出检测能力同时默认启用串口与 GPIO确保基础控制台和板载外设开箱即用。构建与烧录烧录支持板级文档通过zephyr:board-supported-runners::指令列出可用的烧录器。从 board.cmake 可以看到该板卡支持OpenOCD与J-Link两种 runnerboard_runner_args(jlink --deviceSTM32F412ZG --speed4000) include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)J-Link 烧录时以 STM32F412ZG 为设备型号、4 MHz 速率连接OpenOCD 则复用 boards/common/openocd.board.cmake 的通用流程并配合 support/openocd.cfg 中的目标配置该配置引用了board/stm32f4discovery.cfg并在 GDB attach/detach 时自动执行 halt/resume。连接串口终端在烧录前先打开终端监听串口输出$ minicom -D tty_device -b 115200将tty_device替换为开发板对应的串口设备节点。例如在 Linux 下通常是/dev/ttyACM0。波特率固定为 115200与设备树中 USART6 的current-speed 115200保持一致。构建并烧录 hello_world以 Zephyr 自带的hello_world示例为例按照常规的构建与运行方式参见 Zephyr 文档中的构建应用与运行应用章节$ west build -b az3166_iotdevkit samples/hello_world $ west flashwest build时通过-b az3166_iotdevkit指定板卡标识符构建产物生成后west flash会自动选用已配置的 runnerOpenOCD 或 J-Link完成固件烧写。烧录完成后程序输出会出现在之前打开的 minicom 串口终端中。参考资料板级主文档boards/mxchip/az3166_iotdevkit/doc/index.rst板级设备树boards/mxchip/az3166_iotdevkit/az3166_iotdevkit.dts板级默认配置boards/mxchip/az3166_iotdevkit/az3166_iotdevkit_defconfig板级硬件清单boards/mxchip/az3166_iotdevkit/az3166_iotdevkit.yaml 与 boards/mxchip/az3166_iotdevkit/board.yml烧录器配置boards/mxchip/az3166_iotdevkit/board.cmake 与 boards/mxchip/az3166_iotdevkit/support/openocd.cfg板级图片boards/mxchip/az3166_iotdevkit/doc/img/az3166-iotdevkit.webp更多关于板卡的信息可参考 MXChip 官方 AZ3166 产品页面板级文档中以 target-notes 形式给出了该外部链接此处不再赘述。【免费下载链接】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),仅供参考