Zephyr 上的 MikroE Clicker 2 for STM32 开发板指南:MikroBUS 外设开发、烧录解锁与调试实战
Zephyr 上的 MikroE Clicker 2 for STM32 开发板指南MikroBUS 外设开发、烧录解锁与调试实战【免费下载链接】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 RTOS 仓库中 boards/mikroe/clicker_2/doc/mikroe_clicker_2.rst 为骨架系统讲解基于 STM32F407 的 MikroE Clicker 2 开发板在 Zephyr 下的板级支持Board Support、两个 MikroBUS 插座的外设别名访问方式、首次烧录时的读保护解锁流程以及如何完成构建、烧录与调试。读完本文你将能够基于mikroe_clicker_2板级配置快速构建并烧录应用通过mikrobus_1_*/mikrobus_2_*别名直接驱动 SPI、I2C、UART 等 click 扩展板并解决板子出厂写保护导致的烧录失败问题。开发板概览MikroE Clicker 2 for STM32 是一块基于STM32F407微控制器的开发板板级配置在 Zephyr 中注册为mikroe_clicker_2。其核心特征包括主控STM32F407ARM Cortex-M4F最高主频 168MHz1MB Flash / 192KB RAM从 mikroe_clicker_2.yaml 可确认板级资源为flash: 1024、ram: 192两个标准MikroBUS 插座mikrobus 1 与 mikrobus 2可直插 1000 种 MikroE click 扩展板两排通用信号扩展排针general signal break out headers板载电池连接接口与电池管理单元既可使用 LiPo 等电池组供电也可通过USB 供电板载25MHz 主晶振与32.768kHz 时钟晶振后者为 RTC 提供低功耗时钟源。在仓库的 mikroe_clicker_2.dts 中板子的兼容标识被声明为mikroe,stm32-e407, st,stm32f407并复用st/f4/stm32f407Xg.dtsi与对应 pinctrl 定义说明其 SoC 对应stm32f407xx见 board.yml。硬件资源根据原文档Clicker 2 板卡的连接资源如下两个 MikroBUS 连接器mikrobus 1 / mikrobus 2两排通用连接排针两个与 MCU 直连的 LED两个与 MCU 直连的按键。结合设备树 mikroe_clicker_2.dts这些板载器件的具体引脚分配为资源标签GPIO 引脚电气属性LED1User LD1led0PE12高电平点亮GPIO_ACTIVE_HIGHLED2User LD2led1PE15高电平点亮GPIO_ACTIVE_HIGH按键 KeyPE0sw0PE0低电平有效GPIO_ACTIVE_LOW按键 K1sw1PE10低电平有效GPIO_ACTIVE_LOW这些器件在 dts 中通过aliases暴露为led0、led1、sw0、sw1应用层可以直接使用DEVICE_DT_GET(DT_ALIAS(led0))等标准方式访问同时volt-sensor0/volt-sensor1别名指向vref与vbat片内参考电压与电池电压采样通道两个 ADC 输入adc1_in2PA2与adc1_in3PA3也已在 mikroe_clicker_2.dts 中使能。支持的板级特性从 mikroe_clicker_2.yaml 可以确认本板在 Zephyr 中官方声明的支持特性架构ARMarch: arm工具链zephyr与gnuarmemb内存192KB RAM / 1024KB Flash支持的设备驱动类别SPI、I2C、ADC板级默认配置 mikroe_clicker_2_defconfig 开启了以下 Kconfig 选项# Enable MPU CONFIG_ARM_MPUy CONFIG_SERIALy # console CONFIG_CONSOLEy CONFIG_UART_CONSOLEy # enable GPIO CONFIG_GPIOy即默认启用 ARM MPU内存保护单元、串口与控制台UART 控制台以及 GPIO 驱动。Kconfig 入口 Kconfig.mikroe_clicker_2 通过select SOC_STM32F407XG将板卡绑定到 STM32F407 高密度XGSoC 变体。板级时钟配置见 mikroe_clicker_2.dts使用 25MHz HSE 外部晶振驱动 PLL最终得到系统主频168MHzclock-frequency DT_FREQ_M(168)AHB 预分频 1、APB1 预分频 4、APB2 预分频 2使能 LSI 低速内部时钟为 RTC 提供时钟源rtc节点启用。连接与 IOMikroBUS 别名机制两个 MikroBUS 接口在设备树中被做了别名alias处理使其外设可以通过mikrobus_N_INTERFACE的形式直接访问。例如 bus 2 上的 SPI 可用别名mikrobus_2_spi找到编号与板卡上的丝印标记一一对应。具体别名映射定义在 mikroe_clicker_2.dtsmikrobus_1_i2c: i2c3 {}; mikrobus_1_spi: spi3 {}; mikrobus_1_uart: usart2 {}; mikrobus_2_i2c: i2c2 {}; mikrobus_2_spi: spi2 {}; mikrobus_2_uart: usart3 {}; mikrobus_i2c: mikrobus_1_i2c {}; mikrobus_spi: mikrobus_1_spi {}; mikrobus_uart: mikrobus_1_uart {}; mikrobus_header_1: mikrobus_1_header {}; mikrobus_header_2: mikrobus_2_header {}; mikrobus_header: mikrobus_1_header {};也就是说mikrobus_1_spi→ SPI3mikrobus_1_i2c→ I2C3mikrobus_1_uart→ USART2mikrobus_2_spi→ SPI2mikrobus_2_i2c→ I2C2mikrobus_2_uart→ USART3不带编号的mikrobus_spi/mikrobus_i2c/mikrobus_uart默认指向 mikrobus 1 上的对应外设。两个 MikroBUS 插座还各自声明了完整的GPIO 映射gpio-map覆盖 MikroBUS 标准定义的 AN、RST、CS、SCK、MISO、MOSI、PWM、INT、RX、TX、SCL、SDA 共 12 个引脚见 mikroe_clicker_2.dts并保留 3.3V、GND、5V 电源引脚。两个插座的引脚分配汇总如下MikroBUS 信号mikrobus 1连接器 1mikrobus 2连接器 2ANPA2ADC1_IN2PA3ADC1_IN3RSTPE7PE13CSPE8SPI3 CSPE11SPI2 CSSCKPC10SPI3_SCKPB13SPI2_SCKMISOPC11SPI3_MISOPB14SPI2_MISOMOSIPC12SPI3_MOSIPB15SPI2_MOSIPWMPE9PD12INTPE10PE14RXPD6USART2_RXPD9USART3_RXTXPD5USART2_TXPD8USART3_TXSCLPA8I2C3_SCLPB10I2C2_SCLSDAPC9I2C3_SDAPB11I2C2_SDA两个 SPI 外设均在 dts 中指定了片选cs-gpios两个 I2C 外设也配置了scl-gpios/sda-gpios的 GPIO 模式备用路径方便软件模拟或用于总线恢复。板卡串口资源分配为USART2 / USART3 分别服务 mikrobus 1 / 2默认 9600 波特率而UART4PA0/PA1115200 波特率作为控制台与 shell 串口zephyr,console uart4、zephyr,shell-uart uart4。注意边缘扩展排针的具体连接定义详见 MikroE 官方《Clicker 2 for STM32 User Manual》仓库文档 mikroe_clicker_2.rst 中给出了官方手册链接。应用开发时通常直接使用上述 MikroBUS 别名即可无需关心排针物理位置。构建与烧录mikroe_clicker_2板级配置的应用可以按 Zephyr 标准方式构建与烧录。以 samples/hello_world 为例west build -b mikroe_clicker_2 samples/hello_world west flash其中west flash会根据 board.cmake 自动选择合适的烧录后端。该板支持两种 runnerboard_runner_args(jlink --deviceSTM32F407VG --speed4000) board_runner_args(openocd --cmd-pre-init source [find interface/jlink.cfg]) board_runner_args(openocd --cmd-pre-init source [find target/stm32f4x.cfg]) include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)即既可通过OpenOCD烧录也可通过SEGGER J-Link烧录J-Link 模式按STM32F407VG器件、4000kHz 速度配置。烧录成功并复位后串口控制台UART4上应输出Hello World! mikroe_clicker_2首次烧录的读保护解锁关键注意事项板子出厂时的初始状态被设置为读保护锁定lock。此时直接烧录会失败并报出如下错误Error: stm32x device protected出现该错误时需要先用 OpenOCD 对芯片执行一次解锁操作之后才能正常烧录。解锁命令如下$ openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg \ -f /usr/share/openocd/scripts/target/stm32f4x.cfg -c init \ -c reset halt -c stm32f4x unlock 0 -c reset run -c shutdown该命令的执行流程是-f .../interface/stlink-v2.cfg加载 ST-Link/V2 调试器接口配置也可按实际调试器替换为 jlink 等接口配置-f .../target/stm32f4x.cfg加载 STM32F4 目标芯片配置init初始化调试会话reset halt复位并将内核挂起stm32f4x unlock 0解除 bank 0 的读保护该操作会顺带擦除整片 Flash属于 STM32 读保护解锁的硬件行为请提前备份数据reset run复位并运行shutdown关闭 OpenOCD 会话。解锁完成后重新执行west flash即可正常写入固件。从 board.cmake 可以看到Zephyr 内置的 OpenOCD runner 在烧录前也会预先加载interface/jlink.cfg与target/stm32f4x.cfg作为--cmd-pre-init其目标配置与上方手动解锁命令使用的一致。调试调试同样采用 Zephyr 标准流程以hello_world为例west build -b mikroe_clicker_2 samples/hello_world west debugwest debug会启动调试器并连接目标板runner 由 board.cmake 决定默认优先 OpenOCD。调试器复位挂起后即可像往常一样设置断点、单步执行并观察变量由于板级已默认开启CONFIG_ARM_MPUy见 mikroe_clicker_2_defconfig调试时也可验证 MPU 对内存区域的保护行为是否符合预期。实战提示基于 MikroBUS 别名的 click 板开发由于两个 MikroBUS 插座的外设别名已固化在板级 dts 中应用开发时可以直接用别名访问对应外设而无需关心具体挂在哪个 SPI/I2C 实例上。例如在应用 overlay 中为 mikrobus 2 上的 SPI 设备做别名引用mikrobus_2_spi { my_click: my-sensor0 { compatible vendor,sensor; reg 0; spi-max-frequency 1000000; }; };在 C 代码中则可以用#define MY_SENSOR_NODE DT_COMPAT_GET_OKAY(vendor_sensor)或通过DT_ALIAS(mikrobus_2_spi)获得总线句柄从而让同一份应用代码在 mikrobus 1 / mikrobus 2 之间无缝切换。这种硬件接口抽象 板级别名的组合正是 Zephyr 设备树机制在 Clicker 2 这类多 MikroBUS 板卡上的典型应用方式。参考板级文档boards/mikroe/clicker_2/doc/mikroe_clicker_2.rst设备树源码boards/mikroe/clicker_2/mikroe_clicker_2.dts板级元数据boards/mikroe/clicker_2/mikroe_clicker_2.yaml 与 boards/mikroe/clicker_2/board.yml烧录器配置boards/mikroe/clicker_2/board.cmake默认 Kconfigboards/mikroe/clicker_2/mikroe_clicker_2_defconfig关于 STM32F407 的数据手册、Clicker 2 官网与用户手册的官方链接均收录在原文档 mikroe_clicker_2.rst 的 References 一节中需要时可查阅原文获取。【免费下载链接】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),仅供参考