Zephyr FK750M1-VBT6 板级移植解析:STM32H750(Cortex-M7 @ 480MHz)硬件、时钟树与编译烧录实战
【免费下载链接】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 仓库中的 FANKE FK750M1-VBT6 核心板文档展开,系统梳理这块基于 STM32H750VBT6(Arm Cortex-M7 + FPU、480MHz)的 MCU 平台的硬件构成、默认外设引脚映射与 25MHz 晶振经 PLL 推导至 480MHz 的系统时钟设计,并结合仓库内设备树、defconfig、board.cmake 与 OpenOCD 配置给出从west build到 ST-Link 烧录、串口验证Hello World! fk750m1_vbt6输出的完整流程。读完后你可以独立完成该板的应用编译、烧写与串口调试,并理解其外设映射与运行配置在源码中的落地方式。
1. 板卡概述
FK750M1-VBT6 是 FANKE Technology 推出的核心板开发平台,主控芯片为 STMicroelectronics 的 STM32H750VBT6 微控制器(LQFP100 封装),内置 Arm 32 位 Cortex-M7 内核与单精度浮点单元(FPU),CPU 主频最高可达 480MHz。该板定位为量产产品开发前的参考设计(reference design),凭借丰富的外围硬件(尤其是显示与图像相关接口)便于开发者对外设与整机功能进行完整评估和测试,再平滑过渡到最终产品。
板级元信息定义在 board.yml 中:板名为FK750M1-VBT6,厂商为fanke,关联的 SoC 为stm32h750xx;Kconfig.fk750m1_vbt6 中BOARD_FK750M1_VBT6选项通过select SOC_STM32H750XX将该板与对应的 STM32H750 SoC 配置绑定,编译时-b fk750m1_vbt6即会启用这一 SoC 体系。
2. 硬件构成
FK750M1-VBT6 提供的硬件组件如下(与板卡文档一致):
| 类别 | 规格 |
|---|---|
| 主控 | STM32H750VB,LQFP100 封装 |
| CPU | ARM 32 位 Cortex-M7(带 FPU) |
| 主频 | 最高 480 MHz |
| Flash | 128 KB 片上 Flash |
| SRAM | 1 MB:192 KB TCM RAM(64 KB ITCM + 128 KB DTCM)+ 864 KB 用户 SRAM + 备份域 4 KB SRAM |
| 主时钟 | 外部 25MHz 晶振 |
| RTC | 32.768kHz 晶振 |
| 定时器 | 高分辨率定时器(最高 2.1 ns 分辨率)、32 位定时器 ×2、16 位定时器 ×17 |
| 按键 | 1 个复位键、1 个 BOOT 键 |
| LED | 1 个用户 LED |
| 外部存储 | 64-Mbit QSPI NOR Flash(W25Q64)、1 个 microSD 卡槽 |
| 接口 | USB OTG FS/HS、1 路 DCMI 相机接口、1 路 SPI LCD 接口 |
| 调试 | SWD 与串口经排针引出 |
| IO 引出 | 73 个 IO 引脚 |
与片上资源配套的是 fk750m1_vbt6.yaml 中声明的板级标识信息:type: mcu、arch: arm、RAM 1024 KB、Flash 128 KB、支持工具链为zephyr与gnuarmemb,与上述内存/Flash 规格一一对应。
3. Zephyr 支持的特性
该板在 Zephyr 中当前声明支持的外设驱动为UART与GPIO(见 fk750m1_vbt6.yaml 的supported字段)。默认内核配置 fk750m1_vbt6_defconfig 在此基础上启用了:
CONFIG_ARM_MPU:使能 MPU 内存保护;CONFIG_HW_STACK_PROTECTION:使能硬件栈保护;CONFIG_SERIAL/CONFIG_CONSOLE/CONFIG_UART_CONSOLE:串口控制台;CONFIG_GPIO:GPIO 驱动。
这组默认项体现了该板"安全特性优先"的移植取向(MPU + 硬件栈保护默认打开),同时保证开箱即用的串口控制台能力。
4. 默认引脚映射
FK750M1-VBT6 板上有 5 个 GPIO 控制器,负责引脚复用(pin muxing)、输入输出方向及上拉/下拉等配置。Zephyr 的设备树 fk750m1_vbt6.dts 在stm32h750vbtx-pinctrl.dtsi引脚复用基座之上,定义了如下默认外设映射:
- UART1 TX/RX:PA9/PA10(经排针引出,作 Zephyr 控制台);
- 用户 LED(蓝色):PC13;
- SPI4 NCS/CLK/MOSI:PE11/PE12/PE14(接 SPI LCD 屏);
- QuadSPI NCS/CLK/IO0/IO1/IO2/IO3:PB6/PB2/PD11/PD12/PE2/PD13(接 W25Q64 NOR Flash);
- USB DM/DP:PA11/PA12。
设备树中与之对应的关键节点:
usart1节点(fk750m1_vbt6.dts)配置了usart1_tx_pa9/usart1_rx_pa10引脚复用,current-speed = <115200>,并置status = "okay";- 用户 LED 在顶层
leds节点中定义为gpios = <&gpioc 13 GPIO_ACTIVE_LOW>(fk750m1_vbt6.dts),低电平点亮,并通过aliases暴露为led0,可直接用device/led接口访问; spi4节点(fk750m1_vbt6.dts)复用 SCK=PE12、MOSI=PE14,片选 CS 软配置为PE11(GPIO_ACTIVE_LOW);gpiod中还定义了lcd_led的gpio-hog(PD15 输出高电平),用于点亮屏幕背光。
5. 时钟树:25MHz 晶振经 PLL 推至 480MHz
板级文档说明:FK750M1-VBT6 的系统时钟可由内部振荡器、外部振荡器或主 PLL 驱动,默认由 PLL 以 480MHz 驱动,PLL 输入来自 25MHz 外部晶振。
设备树 中这一时钟链路可以精确读出:
&clk_hse:clock-frequency = <DT_FREQ_M(25)>,即 25MHz HSE 使能;&pll:div-m = <5>; mul-n = <192>; div-p = <2>,即 VCO 频率 = 25/5 × 192 = 960MHz,再经 P 分频得到480MHz系统时钟;&rcc:clocks = <&pll>、clock-frequency = <DT_FREQ_M(480)>,同时配置了 D1CPRE/D1PPRE/D2PPRE1/D2PPRE2/D3PPRE 等总线分频器(均为 ×2),将 AHB/APB 总线频率从 480MHz 逐级分频到各外设域可用范围;&pll3:同样以 25MHz HSE 为源,div-m = <5>; mul-n = <192>; div-p = <2>,其 Q/R 分频(div-q = <20>、div-r = <99>)从源码结构看是为 USB/SDMMC 等外设域提供独立时钟输出;&clk_hsi48亦置为okay,可推断用于为 USB PHY 等需要 48MHz 精度时钟的外设提供内部 HSI48 源。
6. 片外存储:QuadSPI 接 W25Q64
虽然主 Flash 是片上 128KB,但该板通过 QuadSPI 外挂了一片Winbond W25Q64(64-Mbit,即 8MB)NOR Flash。设备树 中quadspi节点将六个引脚(PB6/PB2/PD11/PD12/PE2/PD13)绑定到 QuadSPI 外设,qspi-nor-flash@0子节点声明了:
size = <DT_SIZE_M(64)>:64 Mbit 容量;qspi-max-frequency = <40000000>:QSPI 时钟最高 40MHz;spi-bus-width = <4>:四线模式,写命令使用PP_1_1_4(1-1-4 page program);partitions:划分出一个覆盖全片 64Mbit 的storage分区(partition@0),供 Zephyr 存储子系统使用。
7. 串口控制台
Zephyr 控制台输出固定分配到UART1,默认通信参数115200 8N1。这一点与设备树中zephyr,console = &usart1、zephyr,shell-uart = &usart1(fk750m1_vbt6.dts)以及usart1节点的current-speed = <115200>完全吻合。PA9/PA10 已引出到板载排针,接 USB 转串口线缆即可使用。
8. 编译与烧录
FK750M1-VBT6没有板载调试器,需要使用外部调试器(如 ST-Link)通过板上的 SWD 排针完成烧录与调试。
8.1 烧录流程
- 用 SWD 接口将 ST-Link 调试器连接到 FK750M1-VBT6 的 SWD 排针;
- 将 ST-Link 通过 USB 连接到主机;
- 按 Zephyr 常规方式编译并烧录应用,以 hello_world 示例为例:
$ west build -b fk750m1_vbt6 samples/hello_world $ west flash8.2 支持的 runner
board.cmake 为该板注册了三种烧录/调试后端:
- OpenOCD:
--target-handle=_CHIPNAME.cpu0,复用 boards/common/openocd.board.cmake 公共逻辑; - STM32CubeProgrammer:
--port=swd、--reset-mode=hw; - J-Link:
--device=STM32H750VB、--speed=4000。
配套的 OpenOCD 配置位于 support/openocd.cfg,针对该板做了以下关键设置:
source [find interface/stlink-dap.cfg]+transport select "dapdirect_swd":通过 ST-Link 的 DAP 模式直连 SWD;set CHIPNAME STM32H750VB并source [find target/stm32h7x.cfg]:使用 STM32H7 系列目标定义;set ENABLE_LOW_POWER 1:允许应用在低功耗模式下仍可被调试器访问;set STOP_WATCHDOG 1:halt 时暂停看门狗计数,避免烧录过程中被看门狗复位打断;reset_config srst_only srst_nogate connect_assert_srst+CONNECT_UNDER_RESET 1:使用硬件复位、连接时先拉低复位(connect under reset),从源码注释看这是为"低功耗(WFI 等)应用中挂起连接"场景准备的;CORE_RESET 0表示复位时不主动重启 CPU 核。
8.3 串口验证烧录结果
烧录完成后,运行串口主机程序连接开发板(示例使用 minicom,按实际 USB 串口设备名调整):
$ minicom -D /dev/ttyACM0 -b 115200按下板上 RESET 键复位,即可在串口看到:
Hello World! fk750m1_vbt6这行输出同时验证了时钟树、UART1 引脚复用(PA9/PA10)、115200 8N1 串口参数与控制台驱动整条链路工作正常。
8.4 调试现状说明
需要明确:按照当前移植文档的表述,该 Zephyr 移植目前不支持调试(debugging),SWD 排针主要用于 ST-Link 烧录。从 openocd.cfg 已配置 connect-under-reset、低功耗与看门狗保护等参数来看,底层调试通路具备一定基础,但是否可用请以当前版本的实际移植能力为准。
9. 小结与延伸阅读
FK750M1-VBT6 在 Zephyr 中的移植核心脉络为:stm32h750xxSoC(Cortex-M7 @ 480MHz)→ 25MHz HSE 经 PLL(M=5/N=192/P=2)产生 480MHz 系统时钟 → UART1(PA9/PA10,115200 8N1)承载控制台 → QuadSPI 外挂 W25Q64 提供 8MB 片外存储 → ST-Link 经 SWD 排针完成烧录。相关源码入口:
- 板级文档:boards/fanke/fk750m1_vbt6/doc/index.rst
- 设备树(时钟/引脚/存储定义):boards/fanke/fk750m1_vbt6/fk750m1_vbt6.dts
- 默认内核配置:boards/fanke/fk750m1_vbt6/fk750m1_vbt6_defconfig
- 烧录 runner 注册:boards/fanke/fk750m1_vbt6/board.cmake
- OpenOCD 配置:boards/fanke/fk750m1_vbt6/support/openocd.cfg
- 厂商目录索引(同厂商还有 FK723M1-ZGT6、FK743M5-XIH6、FK7B0M1-VBT6 等 FANKE 板卡):boards/fanke/index.rst
- 构建与运行应用的通用说明可参考 Zephyr 文档中的 "Build an application" 与 "Run an application" 章节(对应原文档引用的
build_an_application、application_run主题)。
【免费下载链接】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),仅供参考