基于 Zephyr RTOS 的 NXP RDDRONE-FMUK66 无人机飞控板开发指南:硬件资源、构建烧录与调试实践
2026/9/20 19:45:36 网站建设 项目流程
  • 操作系统
  • 嵌入式
  • RTOS
  • 物联网

【免费下载链接】zephyr

Primary 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
点击查看免费下载

RDDRONE-FMUK66 是 NXP 面向 PX4 无人机飞控应用推出的飞行管理单元(FMU),搭载 Kinetis K66 主控,板载丰富的传感器与舵机/PWM、GPS、CAN、SDHC 等飞行控制常用外设接口。本文以 Zephyr 仓库中该板卡文档 boards/nxp/rddrone_fmuk66/doc/index.rst 为核心骨架,结合板级设备树、Kconfig 与构建配置源码,系统讲解该板卡的硬件构成、外设分配、系统时钟、串口/USB 使用方式,以及从构建、烧录到调试的完整实操流程,帮助你快速上手基于 Zephyr 的飞控应用开发。

板卡概览

RDDRONE-FMUK66 是一块无人机控制板(drone control board),板载一颗 Kinetis K66 主控,并引出飞控系统常用的各类外设连接器。根据板卡文档的描述,其最大特点是随板附带 J-Link Edu Mini 调试器,可直接用于程序烧录与 UART 控制台输出,开箱即具备完整的开发闭环:

  • 随板附带 J-Link Edu Mini,承担编程烧录与 UART 控制台功能;
  • 板载飞行控制常用传感器组合(加速度计、陀螺仪、磁力计、气压计);
  • 提供 PWM 舵机/电机控制接口、UART GPS/GLONASS 接口与 SDHC 卡槽。

该板卡在 Zephyr 仓库中的标识为rddrone-fmuk66,对应 SoC 为 MK66F18(详见 board.yml 中的socs: mk66f18)。

硬件资源详解

根据板卡文档的 Hardware 章节,RDDRONE-FMUK66 的主要硬件资源如下:

  • MCU:MK66FN2MOVLQ18,ARM Cortex-M4F 内核,主频 180 MHz,2 MB Flash、256 KB RAM,支持低功耗模式与无晶振 USB(crystal-less USB),采用 144 引脚 LQFP 封装;
  • USB:双角色(dual role)USB 接口,micro-B 连接器;
  • RGB LED:板载三色灯,可用于状态指示;
  • FXOS8700CQ:加速度计与磁力计二合一传感器;
  • FXAS21002CQ:三轴陀螺仪;
  • BMM150:磁力计;
  • ML3114A2:气压计;
  • BMP280:气压计;
  • PWM 舵机/电机控制连接器
  • UART GPS/GLONASS 连接器
  • SDHC:SD 卡接口。

这些传感器在板级设备树 rddrone_fmuk66.dts 中均有对应的设备节点:

外设总线设备树节点说明
FXOS8700CQ 加速度计/磁力计SPI1(CS#0)fxos8700@0挂载于 SPI1,片选为 PIOB10
FXAS21002CQ 陀螺仪SPI1(CS#1)fxas21002@1挂载于 SPI1,片选为 PIOB9
BMM150 磁力计I2C1bmm150@10I2C 地址 0x10
BMP280 气压计I2C1bme280@76I2C 地址 0x76

关于气压计节点,设备树中有值得注意的细节:板卡文档写的是 BMP280,而设备树注释明确说明"本板没有 BME280 而是 BMP280,两款器件高度相似,因此 BME280 驱动同样适用于 BMP280",节点名也沿用了bme280@76。这是 Zephyr 设备树中常见的驱动复用模式。

支持的板级特性

RDDRONE-FMUK66 在 board.yml 中声明的supported特性列表如下:

  • can(CAN 总线)
  • counter(定时器/计数器)
  • flash(Flash 存储)
  • gpio(通用 IO)
  • i2c(I2C 总线)
  • nvs(非易失性存储)
  • pwm(PWM 输出)
  • spi(SPI 总线)
  • usb_device(USB 设备)
  • watchdog(看门狗)

该列表是west build -b rddrone-fmuk66时校验板卡功能是否可用的依据。从设备树看,板卡还额外使能了以太网(enet,RMII 接口)与双路 CAN 收发器(nxp,tja1042),这两项为飞控与机载通信提供了基础。

系统时钟配置

板卡文档指出:K66F SoC 使用板载16 MHz 外部晶振,配合芯片内部 PLL 产生160 MHz 系统时钟

这在源码中有完整印证:

  • rddrone_fmuk66_defconfig 中设置CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=160000000,并开启CONFIG_OSC_EXTERNAL=y使用外部晶振;
  • Kconfig.defconfig 定义了 PLL 相关的分频/倍频参数:OSC_XTAL0_FREQ默认 16 MHz,MCG_PRDIV0(预分频)为 0x0,MCG_VDIV0(倍频)为 0x4,MCG_FCRDIV为 1;
  • rddrone_fmuk66.dts 中&cpu0节点声明clock-frequency = <160000000>&sim节点选择KINETIS_SIM_PLLFLLSEL_MCGPLLCLK作为系统时钟源。

文档中的"180 MHz MCU"指的是 K66 芯片的最高主频能力,而 Zephyr 板级配置将其设定在 160 MHz,这是板级配置的明确前提,开发时如需调整频率应同步修改设备树、Kconfig 与CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC三处。

串口资源分配

K66F SoC 共有 6 个 UART。RDDRONE-FMUK66 板卡文档给出了明确的串口用途划分:

  • LPUART0:配置为控制台(console),连接调试接口;
  • UART0:标签为Serial 2
  • UART2:标签为GPS,用于连接 GPS/GLONASS 模块;
  • UART4:标签为Serial 1

文档同时说明:以上任一 UART 都可通过 overlay 覆盖板级设备树的方式改作控制台

在 rddrone_fmuk66.dts 的chosen节点中,控制台相关别名统一指向 LPUART0:

chosen { zephyr,console = &lpuart0; zephyr,shell-uart = &lpuart0; zephyr,uart-pipe = &lpuart0; zephyr,uart-mcumgr = &lpuart0; };

已使能的 5 路 UART(lpuart0、uart0、uart1、uart2、uart4)在设备树中均配置为 115200 波特率,其引脚复用定义位于自动生成的 rddrone_fmuk66-pinctrl.dtsi:

UART引脚用途
LPUART0PTD8(RX)/PTD9(TX)调试接口控制台
UART0PTA1(RX)/PTA2(TX)Serial 2
UART1PTC3(RX)/PTC4(TX)通用串口
UART2PTD2(RX)/PTD3(TX)GPS
UART4PTC14(RX)/PTC15(TX),含 CTS/RTSSerial 1

需要注意的是,pinctrl 文件中明确标注了两处引脚冲突ftm3_default与 UART2 冲突、ftm3的通道与 FTM3 冲突——即 FTM3(RGB LED 及 PWM 通道)与 UART2 复用了同一组引脚,二者不可同时启用,开发时需根据实际需求取舍。

USB 接口

K66F SoC 内置 USB OTG(USBOTG)控制器,通过 micro-USB 连接器(K66F USB)同时支持**设备(device)与主机(host)**两种角色。板卡文档明确指出:当前 Zephyr 仅支持 USB 设备功能

设备树中 USB 控制器的配置如下:

zephyr_udc0: &usbotg { compatible = "nxp,kinetis-usbd"; status = "okay"; num-bidir-endpoints = <8>; };

即使用nxp,kinetis-usbd驱动,双向端点数为 8。配合 board.yml 中声明的usb_device支持,开发者可以在此板卡上实现 USB CDC-ACM 串口、HID、MSC 等标准 Zephyr USB 设备应用。

编程与调试

RDDRONE-FMUK66 默认使用J-Link作为调试探针(debug probe),板卡随附的 J-Link Edu Mini 与专用线缆直接连接板卡,同时提供 USB 转 UART 线缆直连 J-Link Edu Mini,这是文档描述的默认编程与获取控制台的期望配置

board.cmake 中对该配置的实现为:

board_runner_args(jlink "--device=MK66FN2M0xxx18") include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)

即通过board_runner_args指定 J-Link 目标器件为MK66FN2M0xxx18,并引入通用的 jlink runner 支持。

构建与烧录应用的方式与 Zephyr 标准流程一致(可参考 samples/hello_world 与构建相关文档),以hello_world为例:

west build -b rddrone_fmuk66 samples/hello_world

执行上述命令后,Zephyr 会依据板卡目录下的 rddrone_fmuk66_defconfig 完成内核与驱动配置(该 defconfig 已默认开启 CONSOLE、UART_CONSOLE、SERIAL、GPIO,并启用 ARM MPU 与硬件栈保护CONFIG_HW_STACK_PROTECTION,以及固定稳压器CONFIG_REGULATOR)。

配置控制台

使用串口终端工具(如 minicom、putty 等)连接控制台时,需采用以下参数:

  • 波特率(Speed):115200
  • 数据位(Data):8 bits
  • 校验位(Parity):None
  • 停止位(Stop bits):1

即标准 115200 8N1 配置,与设备树中各 UART 节点的current-speed = <115200>一致。

烧录(Flashing)

hello_world为例,烧录命令如下:

west build -b rddrone_fmuk66 samples/hello_world --runner jlink west flash

烧录完成后,打开串口终端,按下板卡上的SW1 按键复位,终端中应出现如下启动信息:

***** Booting Zephyr OS v2.7.0 ***** Hello World! rddrone-fmuk66

(上述输出为板卡文档提供的示例,其中的 Zephyr 版本号以当前使用的 SDK 版本为准。)

调试(Debugging)

同样以hello_world为例,启动调试会话的命令为:

west build -b rddrone_fmuk66 samples/hello_world west debug

west debug会通过 J-Link 启动调试器(默认 GDB 连接),此时打开串口终端并在调试器中单步执行程序,终端中会逐步打印出与烧录运行相同的输出:

***** Booting Zephyr OS v2.7.0 ***** Hello World! rddrone-fmuk66

源码级扩展:从设备树看板级设计要点

Flash 分区布局

rddrone_fmuk66.dts 中为 2 MB Flash 定义了基于 MCUboot 的标准分区布局,分区大小按 4 KB 扇区对齐:

分区起始地址大小标签
boot0x0000000064 KBmcuboot(只读)
slot00x00010000932 KBimage-0
slot10x000F9000932 KBimage-1
storage0x001E2000120 KBstorage

其中slot0_partition同时被指定为zephyr,code-partition,即应用固件的默认加载区。该布局与nvs、MCUboot 升级流程等板级支持能力直接相关。

电源域与关键使能

设备树中定义了三个固定稳压器,分别控制板载关键外设的电源轨:

  • reg-3v3-s:使能 3V3_S 电源轨,为板载传感器供电,启动延时 2 ms;
  • reg-3v3-neth:使能板载以太网 PHY 电源;
  • reg-3v3-sd:使能板载 SD 卡电源。

三者均标记为regulator-always-on,配合 defconfig 中的CONFIG_REGULATOR=yCONFIG_REGULATOR_FIXED_INIT_PRIORITY=75使用。

PWM 与 LED

  • FTM0:驱动 PWM 航插的通道 1~4,clock-source = "fixed"
  • FTM3:驱动 RGB LED 的三个 PWM 通道(红 PTC8/通道4、绿 PTC9/通道5、蓝 PTD1/通道1,周期 15625000 ns 即 64 Hz 左右,极性反相),同时引出通道 5、6 供 PWM 航插使用。

GPIO LED(amber/green)定义为低电平有效,alias 分别为led0led1;RGB 三个 PWM LED 的 alias 为pwm-led0/1/2

通信外设

  • 以太网enet使用 RMII 接口,phy-connection-type = "rmii",PHY 地址 0,启用zephyr,random-mac-address
  • CANflexcan0flexcan1均使能,各自挂载nxp,tja1042收发器(can-phy0/can-phy1),支持最大 5 Mbps 位率,zephyr,canbus指向 flexcan0;
  • I2C0:外部 I2C 航插接口;I2C1:板载传感器总线(BMM150、BMP280);
  • SPI0:FRAM 存储接口;SPI2:外部 SPI 接口。

结语

RDDRONE-FMUK66 在 Zephyr 中的支持相当完整:160 MHz 的 K66 主控、六路 UART、USB 设备、CAN、以太网、SDHC、PWM 舵机接口以及一整套板载传感器,配合随板 J-Link Edu Mini,构成了一套"开箱即用"的无人机飞控开发平台。通过本文的硬件资源梳理、串口/USB 分配说明以及构建、烧录、调试三步实操,配合 板级设备树 与 板级配置 的源码印证,你可以在此基础上快速移植或开发自己的飞控应用。实际开发中遇到引脚冲突、时钟调整或外设扩展需求时,建议优先从上述板级文件入手,通过 overlay 机制灵活适配。

  • 操作系统
  • 嵌入式
  • RTOS
  • 物联网

【免费下载链接】zephyr

Primary 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询