十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

Zephyr 驱动 96Boards Aerocore2 无人机扩展板:STM32F427 硬件详解与 DFU 烧录实战

Zephyr 驱动 96Boards Aerocore2 无人机扩展板:STM32F427 硬件详解与 DFU 烧录实战 Zephyr 驱动 96Boards Aerocore2 无人机扩展板STM32F427 硬件详解与 DFU 烧录实战【免费下载链接】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 仓库中 96Boards Aerocore2 板卡文档 为核心系统讲解这一定位无人机Drone场景的 96Boards CE Mezzanine 扩展板在 Zephyr RTOS 中的完整支持情况从 STM32F427VIT6 芯片规格、板载外设与接口引脚映射到 Zephyr 设备树devicetree中的使能配置再到基于 ROM Bootloader dfu-util 的 DFU 烧录与串口调试全流程。读完本文你将能够独立完成 Aerocore2 的 Zephyr 应用编译、烧录与串口验证并理解其引脚复用pinctrl与时钟配置的底层原理。板卡概述面向无人机的 96Boards 扩展板96Boards Aerocore2仓库标识符96b_aerocore2是由 Gumstix 设计、符合 96Boards CEConsumer Edition规范的 Mezzanine 扩展板。它既可以作为夹层板叠加在任意 96Boards CE 兼容主板上使用也可以作为独立单板运行。从 96b_aerocore2.dts 可以看出板卡的设备树模型声明为model 96Boards Gumstix AeroCore 2; compatible gumstix,aerocore2;其核心是一颗意法半导体STMicroelectronics的STM32F427VIT6微控制器采用 LQFP100 封装内置 ARM Cortex-M4 CPU 并带有 FPU浮点运算单元。这颗 SoC 为无人机飞控类应用提供了充足的算力与外设资源硬件特性规格内核ARM® 32-bit Cortex®-M4 CPU with FPU最大主频168 MHz供电范围 VDD1.7 V ~ 3.6 VFlash2048 KB2 MBSRAM256 KBGPIO支持外部中断能力ADC12-bit16 通道RTC实时时钟定时器高级控制定时器 ×2通用定时器 ×10看门狗×2USART/UART×4I2C×3SPI×3其他SDIO、USB 2.0 OTG FS、DMA 控制器上述规格均源自官方板卡文档STM32F427 芯片的完整数据手册与参考手册可从意法半导体官网获取。在 96b_aerocore2.yaml 中Zephyr 将板卡描述为arch: arm、ram: 256KB、flash: 2048KB并声明supported外设列表为 gpio、pwm、i2c、spi、usb_device、adc工具链支持 zephyr 与 gnuarmemb 两种。这一清单与下方设备树中的实际使能外设一一对应。Zephyr 中的板级支持设备树与 Kconfig 配置板级文件组成一个完整的 Zephyr 板卡定义由以下文件构成Aerocore2 全部位于 boards/96boards/aerocore2/ 目录下96b_aerocore2.dts设备树源文件声明 SoC、内存、外设与引脚复用96b_aerocore2.yaml板卡硬件元数据供 Zephyr 构建系统识别96b_aerocore2_defconfig板级默认 Kconfig 配置Kconfig.96b_aerocore2板卡 Kconfig 符号定义board.cmake构建/烧录辅助脚本指定 dfu-util 作为烧录器board.yml板卡注册信息vendor: 96boardsSoC: stm32f427xx。其中Kconfig.96b_aerocore2的内容非常简洁config BOARD_96B_AEROCORE2 select SOC_STM32F427XX它通过select SOC_STM32F427XX将板卡与soc/st下的 STM32F427 系列 SoC 绑定。时钟树配置LSI 24 MHz HSE PLL 168 MHz设备树中对时钟的配置展示了 STM32F4 典型的倍频链路。值得注意的是板卡文档中提到32.768 kHz 外部晶振 内部 16 MHz 主时钟而设备树中实际使能的是24 MHz 外部高速晶振HSE经 PLL 倍频到 168 MHz 系统主频clk_lsi { status okay; }; clk_hse { clock-frequency DT_FREQ_M(24); status okay; }; pll { div-m 24; mul-n 336; div-p 2; div-q 7; clocks clk_hse; status okay; }; rcc { clocks pll; clock-frequency DT_FREQ_M(168); ahb-prescaler 1; apb1-prescaler 4; apb2-prescaler 2; };对应的 96b_aerocore2.dts 计算关系为24 MHz ÷ 24 × 336 ÷ 2 168 MHz这正是文档所述的168 MHz max CPU frequency。其中 LSI低速内部时钟用于驱动 RTC见rtc节点的STM32_SRC_LSI RTC_SEL(2)配置HSE 则作为 PLL 输入源APB1 预分频 4外设时钟 42 MHz、APB2 预分频 2外设时钟 84 MHz。外设使能清单96b_aerocore2.dts 中除时钟外还逐一使能了以下外设均通过status okay打开串口usart1PB6/PB7、usart2PD5/PD6、usart3PD8/PD9、uart7PE8/PE7控制台、uart8PE1/PE0Spektrum 接收机接口波特率均配置为 115200SPIspi1PA4-PA7、spi2PB12-PB15、spi3PC10-PC12、spi4PE11-PE14其中 SPI1/2/4 的 NSS 引脚设置了slew-rate very-high-speed以适应高速传输I2Ci2c2PB10/PB11并配置clock-frequency I2C_BITRATE_FAST400 kHz 快速模式同时通过scl-gpios/sda-gpios提供 GPIO 备用控制PWMtimers4PD12-PD15对应 TIM4_CH1~CH4与timers5PA0-PA3对应 TIM5_CH1~CH4这正是板上 Octal PWM 航模信号输出的来源ADCadc1引脚为 PC0-PC3ADC1_IN10~IN13配置st,adc-clock-source SYNC与st,adc-prescaler 2USBusbotg_fs作为zephyr_udc0设备引脚 PA11/PA12USB OTG FS DM/DP其他rtcLSI 驱动、rng硬件随机数、vref与vbat内部电压参考与电池电压监测。chosen节点则把 Zephyr 的关键运行时资源固定下来chosen { zephyr,console uart7; zephyr,shell-uart uart7; zephyr,sram sram0; zephyr,flash flash0; zephyr,dtcm ccm0; };即控制台与 Shell 都绑定到 UART7SRAM/Flash 指向芯片默认的sram0/flash0DTCM 使用 STM32F4 的 CCM 内核紧耦合内存ccm0。板级默认 Kconfig96b_aerocore2_defconfig 为板卡默认开启了以下内核与驱动选项# Enable MPU CONFIG_ARM_MPUy # Enable HW stack protection CONFIG_HW_STACK_PROTECTIONy CONFIG_SERIALy # console CONFIG_CONSOLEy CONFIG_UART_CONSOLEy # enable GPIO CONFIG_GPIOy可见该板默认即启用 ARM MPU 内存保护单元与硬件栈保护CONFIG_HW_STACK_PROTECTION体现面向安全关键无人机应用的设计取向同时开启串口、控制台与 GPIO 驱动。板载接口与引脚映射详解LED 指示灯板卡提供两颗用户 LED设备树中定义为gpio-ledsLED1 / USR1 PE10GPIOE 引脚 10GPIO_ACTIVE_HIGH设备树节点yellow_led_1LED2 / USR2 PE9GPIOE 引脚 9设备树节点blue_led_2。对应的 96b_aerocore2.dts 同时通过aliases将两颗 LED 注册为led0/led1应用程序可以直接通过LED0/LED1别名操作。Octal PWM 航模信号接口J1J1 是 24 pin 的 Octal PWM 排针为无人机电调/舵机提供 8 路 PWM 输出其中前 4 路来自 TIM4、后 4 路来自 TIM5电源与地线交错排列PIN #Signal NameSTM32F427 引脚PIN #SignalPIN #Signal1PWM4_CH1PD1225.0v3GND4PWM4_CH2PD1355.0v6GND7PWM4_CH3PD1485.0v9GND10PWM4_CH4PD15115.0v12GND13PWM5_CH1PA0145.0v15GND16PWM5_CH2PA1175.0v18GND19PWM5_CH3PA2205.0v21GND22PWM5_CH4PA3235.0v24GND在 Zephyr 中这 8 路 PWM 由设备树timers4/timers5节点下的pwm子节点暴露引脚复用已在 96b_aerocore2.dts 中通过 pinctrl 配置完成tim4_ch1_pd12~tim5_ch4_pa3应用层可直接以pwm4/pwm5为句柄驱动 PWM 输出。IO Header J11通用数字 IOJ11 提供 19 个可用引脚其中PB8 连接看门狗蜂鸣器必须每 10 秒被脉冲触发一次以保持蜂鸣器静音——这是无人机设计中防止系统挂死的硬件看门狗机制在应用开发时必须注意周期性喂狗PIN #SignalPIN #Signal1PB92PB8*看门狗蜂鸣器3PC94PB05PE56NA7PE68NA9PC610NA11PC712NA13PC814NA15PA816GND17PA9183v319PA1020GNDIO Header J5模拟/通信混合接口J5 是 34 pin 的混合接口排针包含 ADC 输入、I2C、UART、SPI 与 CAN 总线PIN #Signal NameSTM32F427 引脚PIN #Signal NameSTM32F427 引脚1AGNDAGND2ADC1_13PC33ADC1_12PC24ADC1_11PC15I2C_SDAPB116GNDGND7I2C_SCLPB108VCC 3v3VCC 3v39NCNC10NCNC11NCNC12NCNC13UART_TX 7PE814GNDGND15UART_RX 7PE716GNDGND17UART_TX 2PD518GNDGND19UART_TX 2PD620GNDGND21NCNC22NCNC23NCNC24NCNC25SPI1_NIRQPC526GNDGND27SPI1_CLKPA528SPI1_MISOPA629SPI1_CS0PA430SPI1_MOSIPA731CAN_TXPD132CANHNC33CAN_RXPD034CANLNC注表中 UART2 的 RX 引脚原始文档标记为 UART_TX 2实际对应 PD6请以 STM32 参考手册为准。SPI1 的完整四线 PD 定义见上文设备树spi1节点。GPS 接口J15J15 为 5 pin GPS 连接器将 UART1 引出用于连接 GPS 模块PIN #Signal NameSTM32F427 引脚1V_OUT 5vNC2UART1_TXPB63UART1_RXPB74VCC 3v3NC5GNDGND对应设备树中使能的usart1usart1_tx_pb6/usart1_rx_pb7。Spektrum 接收机接口J3J3 为 3 pin Spektrum 卫星接收机接口使用 UART8 接收 RC 遥控信号PIN #Signal NameSTM32F427 引脚1VCC 3v3NC2GNDGND3UART8_RXPE0设备树中uart8已使能uart8_tx_pe1/uart8_rx_pe0其中 PE0 即 Spektrum 数据输入脚。串口Serial Port板卡最多提供 4 路 U(S)ARTZephyr 控制台输出固定分配在USART7PE7/PE8默认参数115200 8N1。烧录后可通过 UART7 头即 J5 的 UART_TX/RX 7 引脚连接 USB-TTL 转接器观察输出。I2C / SPI 默认映射I2C板卡对外提供 1 路 I2CZephyr 默认映射为 I2C1_SCL PB10、I2C1_SDA PB11。从设备树看实际使能的是i2c2控制器并使用 PB10/PB11 引脚速率为快速模式 400 kHzSPIZephyr 默认映射 SPI1SPI1_CS0 PA4、SPI1_SCK PA5、SPI1_MISO PA6、SPI1_MOSI PA7。此外设备树还使能了 SPI2/SPI3/SPI4 供片内外设如传感器、外置 Flash使用。USB板卡通过 mini OTG 连接器提供 USB OTG 双角色DRD控制器支持 Host 与 Device 两种功能不过当前 Zephyr 仅支持 USB 设备功能zephyr_udc0绑定到usbotg_fs引脚 PA11/PA12。这一约束在设备树zephyr_udc0: usbotg_fs节点中体现应用若需使用 USB CDC ACM 等设备类协议可直接基于它开发。编程与调试ROM Bootloader 与 SWD 双通道STM32F4 系列 SoC 提供两种主要的烧录入口ROM Bootloader无需额外硬件但需要特殊的激活时序——按住BOOT0开关再按一下RST复位开关即可进入Aerocore2 上 BOOT 按钮位于 PCB 背面。ROM Bootloader 支持通过USBDFU、UART、I2C 和 SPI四种接口烧录固件具体协议细节可参考意法半导体应用笔记 AN2606第 109 页。SWD 调试口需要额外的调试器硬件如 ST-Link、J-Link支持在线调试与断点。对于 Zephyr 开发者最常用的是DFU 烧录。板卡的 board.cmake 已提前配置好烧录器参数board_runner_args(dfu-util --pid0483:df11 --alt0 --dfuse) include(${ZEPHYR_BASE}/boards/common/dfu-util.board.cmake)--pid0483:df11对应 ST 官方 USB VID:PID--alt0选择内部 Flash 的 DFU 接口--dfuse启用 DfuSe 模式随后由通用脚本 dfu-util.board.cmake 注册dfu-util为默认 flasher。安装 dfu-util建议至少使用dfu-util v0.8及以上版本。Debian/Ubuntu 自带的 dfu-util 可能过旧必要时需从源码自行编译。安装后可用dfu-util --version确认版本。烧录步骤实战连接与进入 DFU 模式用 micro-USB 线连接 Aerocore2 的 USB OTG/STM_CONSOLE 端口与电脑板卡上电自启按住 BOOT0 开关不放同时按下再松开 RST 开关松开 BOOT0板卡进入 DFU 模式。确认进入 DFU 模式$ sudo dfu-util -l dfu-util 0.8 Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2014 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to dfu-utillists.gnumonks.org Found DFU: [0483:df11] ver2200, devnum15, cfg1, intf0, alt3, nameDevice Feature/0xFFFF0000/01*004 e, serial3574364C3034 Found DFU: [0483:df11] ver2200, devnum15, cfg1, intf0, alt2, nameOTP Memory /0x1FFF7800/01*512 e,01*016 e, serial3574364C3034 Found DFU: [0483:df11] ver2200, devnum15, cfg1, intf0, alt1, nameOption Bytes /0x1FFFC000/01*016 e, serial3574364C3034 Found DFU: [0483:df11] ver2200, devnum15, cfg1, intf0, alt0, nameInternal Flash /0x08000000/04*016Kg,01*064Kg,03*128Kg, serial3574364C3034 Found Runtime: [05ac:8290] ver0104, devnum2, cfg1, intf5, alt0, nameUNKNOWN, serialUNKNOWNLinux 主机上对应的dmesg输出会显示 ST 官方 Bootloader 枚举信息$ dmesg usb 1-2.1: new full-speed USB device number 14 using xhci_hcd usb 1-2.1: New USB device found, idVendor0483, idProductdf11 usb 1-2.1: New USB device strings: Mfr1, Product2, SerialNumber3 usb 1-2.1: Product: STM32 BOOTLOADER usb 1-2.1: Manufacturer: STMicroelectronics usb 1-2.1: SerialNumber: 3574364C3034编译并烧录应用以 Zephyr 的 hello_world 示例为例使用 west 构建并烧录到96b_aerocore2板卡west 会调用 board.cmake 中配置的 dfu-util 自动完成烧录west build -b 96b_aerocore2 samples/hello_world west flash底层对应的 dfu-util 命令为dfu-util -a 0 -s 0x08000000:leave -D build/zephyr/zephyr.bin-a 0即 board.cmake 中的--alt0内部 Flash 接口。观察串口输出将 USB-TTL 转接器连接到 UART7 排针并用终端程序监听$ minicom -D tty_device -b 115200将tty_device替换为板卡对应串口设备Linux 下通常为/dev/ttyUSB0-b 115200强制指定波特率。按下板卡 Reset 按钮后终端应打印Hello World! arm其中arm是 Zephyr 在 hello_world 输出中标注的架构名表示固件运行于 ARM 架构。测试与验证ADC 驱动的官方用例仓库中提供了 Aerocore2 专属的 ADC 驱动测试配置 tests/drivers/adc/adc_api/boards/96b_aerocore2.overlay它定义了 Zephyr ADC API 测试所需的通道映射/ { zephyr,user { /* adjust channel number according to pinmux in board.dts */ io-channels adc1 0; }; }; adc1 { #address-cells 1; #size-cells 0; channel0 { reg 0; zephyr,gain ADC_GAIN_1; zephyr,reference ADC_REF_INTERNAL; zephyr,acquisition-time ADC_ACQ_TIME_DEFAULT; zephyr,resolution 12; }; };该用例以adc1的通道 0 为采样对象对应板载 ADC1_IN10~IN13 引脚组之一具体通道号取决于引脚复用使用内部参考电压、增益 1、默认采样时间与 12 位分辨率——与板卡文档中12-bit ADC with 16 channels的硬件能力一致。运行该测试可快速验证板载 ADC 链路是否正常west build -b 96b_aerocore2 -p tests/drivers/adc/adc_api west flash这为开发者提供了一个从配置正确性到硬件可用性的可复现验证路径。开发注意事项小结看门狗蜂鸣器J11 的 PB8 连接看门狗蜂鸣器应用必须每 10 秒脉冲一次否则蜂鸣器会响——这实际上是一个要求系统保持活跃的硬件看门狗时钟差异官方文档描述32.768 kHz 外部振荡器 内部 16 MHz 主时钟而 Zephyr 设备树实际采用24 MHz HSE PLL 倍频至 168 MHzRTC 由 LSI 驱动开发时应以设备树实际配置为准USB 限制当前 Zephyr 仅支持 Aerocore2 的 USB 设备功能CDC ACM 等Host 模式尚未启用烧录前提DFU 烧录依赖 ROM Bootloader进入 DFU 模式需要 BOOT0 RST 按键组合操作且主机需安装 dfu-util ≥ 0.8默认串口控制台固定为 USART7115200 8N1所有调试输出都从这里查看安全特性板级默认开启CONFIG_ARM_MPU与CONFIG_HW_STACK_PROTECTION在内核层面对内存访问与栈溢出提供保护适合无人机等安全敏感场景。通过本文你已掌握 96Boards Aerocore2 在 Zephyr 下的完整硬件资源、设备树配置逻辑与 DFU 烧录调试全流程可以基于96b_aerocore2板卡直接开展飞控、传感器采集或 PWM 电机控制等应用的开发验证。【免费下载链接】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),仅供参考
返回列表