- 嵌入式
- 物联网
- 机器人
- 自动驾驶
- 智能硬件
【免费下载链接】PX4-Autopilot
PX4 Autopilot Software
AMOVLAB Flycore 是 PX4 支持的一款 STM32H7 飞控硬件,其固件镜像由 PX4 板级代码、NuttX 实时操作系统与多款第三方库共同构建,因此它的许可证构成比单一项目复杂得多。boards/amovlab/flycore/LICENSE.md 正是这样一份“许可全景图”:它基于本仓库内实际存在的 LICENSE、README、NOTICE 与文件头逐项核对,为 Flycore 板级支持及最终固件镜像给出逐路径的许可证归属说明。读完本文,你将掌握 Flycore 固件中每一类源码的许可来源、SPDX 标识的落地方式,以及商用与再分发时应当注意的合规边界。
许可全景总览:三层来源,三种开放许可
Flycore 固件镜像的代码并非单一许可。按该文档的梳理,来源可以分为三个层次:
- 仓库主体:PX4 仓库根目录采用 BSD-3-Clause 许可,仓库根目录的 LICENSE 文件明确声明
Copyright (c) 2012 - 2025, PX4 Development Team,且根目录 README.md 同样声明 PX4 源码为 BSD-3-Clause。 - 文档资产:PX4 文档单独采用 CC-BY-4.0 许可,与源码许可相互独立;文档与图片不属于固件镜像的一部分。
- 第三方组件:各第三方组件保留各自许可(Apache-2.0、MIT、ISC 等),如下表逐项列出。
这一分层结构决定了同一个固件镜像在“源码再分发”“二进制再分发”“文档复用”三个场景下的义务各不相同:BSD-3-Clause 与 MIT 只需保留版权声明,Apache-2.0 还需要保留 NOTICE 并标注修改,而 CC-BY-4.0 的文档则要求署名与相同方式共享。
逐路径许可证明细表(核心内容)
下表完整继承自 boards/amovlab/flycore/LICENSE.md,是 Flycore 合规核查的第一手依据。表格覆盖了 Flycore 板级支持代码、NuttX 配置、PX4 上游代码、RTOS、驱动集成与第三方子模块,每一行都标注了路径范围、来源、许可与注意事项:
| 路径 / 模块 | 来源 | 许可 | 版权 | 备注 |
|---|---|---|---|---|
boards/amovlab/flycore/src/*.c、*.cpp、*.h、src/CMakeLists.txt | AMOVLAB Flycore 板级支持代码,改编自 PX4 板级代码 | BSD-3-Clause | 存在 PX4 Development Team 版权头;Flycore 适配为 AMOVLAB 板级支持贡献 | 大部分源文件包含 BSD-3-Clause 许可文本与 PX4 版权头 |
boards/amovlab/flycore/nuttx-config/include/board.h、nuttx-config/scripts/*.ld、src/sdio.c | Flycore 专属 NuttX 板级配置,源自 NuttX/PX4 板级支持 | BSD-3-Clause 风格 NuttX 许可文本(文件头内) | Gregory Nutt 和/或 PX4 Development Team(视文件而定) | 文件含 NuttX/PX4 宽松许可头及 Flycore 专属硬件配置值 |
boards/amovlab/flycore/default.px4board、bootloader.px4board、firmware.prototype、init/*、nuttx-config/Kconfig、nuttx-config/bootloader/defconfig、nuttx-config/nsh/defconfig | AMOVLAB Flycore 板级构建、启动与默认配置 | BSD-3-Clause | AMOVLAB/PX4 贡献者 | 可注释的配置文件内含 SPDX 标识;firmware.prototype为 JSON,故在本文档说明而非插入非法 JSON 注释 |
boards/amovlab/flycore/extras/amovlab_flycore_bootloader.bin | 生成的 Flycore 引导程序二进制 | 与构建其使用的引导源码组件相同的许可集合 | 源自 PX4 与 NuttX 引导源码 | 由make amovlab_flycore_bootloader生成;二进制文件本身无法内嵌源码头 |
LICENSE、README.md、src/**、platforms/common/**、platforms/nuttx/src/px4/** | Flycore 固件复用的 PX4 上游代码 | BSD-3-Clause | PX4 Development Team | 仓库根LICENSE为 BSD-3-Clause,根README.md声明 PX4 源码为 BSD-3-Clause |
docs/**,含docs/en/flight_controller/amovlab_flycore.md与docs/assets/flight_controller/amovlab_flycore/** | PX4 文档与 Flycore 文档素材 | CC-BY-4.0 | AMOVLAB 与 PX4 文档贡献者 | docs/LICENSE为 CC-BY-4.0;Flycore 文档图片归 AMOVLAB 所有或经授权使用,可按 PX4 文档许可贡献;文档素材不属于固件镜像 |
platforms/nuttx/NuttX/nuttx/** | Apache NuttX RTOS | Apache-2.0,含LICENSE/NOTICE中的附加第三方声明 | Apache Software Foundation 及列出的第三方作者 | NuttX 根LICENSE为 Apache-2.0;部分旧文件或导入文件含兼容的 BSD 风格声明,需按文件头核对逐文件归属 |
platforms/nuttx/NuttX/apps/** | Apache NuttX Apps | Apache-2.0,含LICENSE/NOTICE中的附加第三方声明 | Apache Software Foundation 及列出的第三方作者 | NuttX Apps 根LICENSE为 Apache-2.0,并记录捆绑的兼容组件 |
platforms/nuttx/NuttX/nuttx/arch/arm/src/imxrt/**、s32k1xx/**、s32k3xx/**、platforms/nuttx/NuttX/nuttx/boards/arm/s32k*/** | 仓库内的 NXP i.MXRT/S32K NuttX HAL 与板级支持 | NuttX 文件为 Apache-2.0;部分 NXP/Freescale 来源代码含兼容 BSD 风格声明 | Apache Software Foundation;存在 NXP/Freescale 版权 | 本地文件含 Apache Software Foundation 头与 NXP 版权声明。Flycore 使用 STM32H7,这些 NXP 路径属于仓库组件但不参与 Flycore 目标构建 |
src/drivers/uavcan/**(不含libdronecan) | PX4 DroneCAN/UAVCAN 集成 | BSD-3-Clause | PX4 Development Team | PX4 集成层遵循仓库许可与文件头;Flycore 启用 UAVCAN 支持 |
src/drivers/uavcan/libdronecan/** | DroneCAN/libuavcan 第三方库 | MIT | Pavel Kirienko;存在 UAVCAN/DroneCAN Development Team | src/drivers/uavcan/libdronecan/LICENSE与dsdl/LICENSE均为 MIT |
src/drivers/cyphal/**(不含子模块与o1heap) | PX4 Cyphal 集成 | BSD-3-Clause | PX4 Development Team | 本地 PX4 Cyphal 集成文件带 PX4 版权头,遵循仓库 BSD-3-Clause |
src/drivers/cyphal/o1heap/** | Cyphal 使用的 o1heap 分配器 | MIT 风格宽松许可文本(文件头内) | Pavel Kirienko | 本地o1heap.c/o1heap.h含 MIT 授权与版权声明 |
src/drivers/cyphal/libcanard、public_regulated_data_types、legacy_data_types | Cyphal/OpenCyphal 数据类型与 libcanard 子模块 | 待核实(TBD) | 待核实(TBD) | 本检出中为 gitlink 且未本地初始化,无法本地核验其许可文件;列出仅为仓库完整性。Flycore 默认固件构建启用的是src/drivers/uavcan/libdronecan(MIT,已本地核验) |
src/modules/mavlink/mavlink/** | MAVLink 子模块 | 生成器为 (L)GPL v3;生成的代码按COPYING中的例外条款为 MIT | MAVLink 贡献者与 Free Software Foundation(视情况) | 固件使用生成的 MAVLink 代码;COPYING声明生成的二进制/产品输出为 MIT |
src/modules/uxrce_dds_client/Micro-XRCE-DDS-Client/** | Micro-XRCE-DDS Client PX4 子模块 | Apache-2.0 | 上游贡献者;需要时按文件核验版权 | 本地LICENSE为 Apache-2.0 |
src/drivers/gps/devices/** | PX4 GPSDrivers 子模块 | BSD-3-Clause | PX4 Pro Drone Autopilot | 本地LICENSE.md含 BSD-3-Clause 许可文本 |
src/lib/events/libevents/** | MAVLink libevents 子模块 | BSD-3-Clause | MAVLink Development Team | 本地LICENSE.md含 BSD-3-Clause 许可文本 |
src/lib/heatshrink/heatshrink/** | heatshrink 压缩库 | ISC 风格宽松许可文本 | Scott Vokes | 本地LICENSE授予使用、复制、修改与分发权利并要求署名 |
src/drivers/ins/microstrain/mip_sdk/** | MicroStrain MIP SDK | MIT | Parker Hannifin Corp. | 本地LICENSE.txt为 MIT |
src/drivers/ins/sbgecom/sbgECom/** | SBG Systems ECom SDK | MIT | SBG Systems SAS | 本地LICENSE.md为 MIT |
src/drivers/transponder/sagetech_mxs/sg_sdk/** | Sagetech SDK | Apache-2.0 | 待核实(需核对文件头) | 本地LICENSE为 Apache-2.0;该 SDK 未选入本地 Flycore 默认固件构建 |
src/lib/crypto/monocypher、libtomcrypt、libtommath | PX4 引用的加密子模块 | 待核实(TBD) | 待核实(TBD) | 本检出中为 gitlink 且未本地初始化,无法本地核验许可文件;未选入本地 Flycore 默认固件构建 |
这张表的实用价值在于:它明确区分了“已核验”“未选入默认构建”“gitlink 未初始化”三类状态,避免把仓库内所有路径一概当作固件组成部分来处理。
从源码看许可声明的实际落地
该文档的结论并非空泛声明,而是与仓库内的实际文件头一一对应。以 boards/amovlab/flycore/src/board_config.h 为例,其文件头完整包含 BSD-3-Clause 三条款文本及Copyright (c) 2025 PX4 Development Team声明;boards/amovlab/flycore/src/sdio.c 与 boards/amovlab/flycore/nuttx-config/include/board.h 则采用 NuttX 风格的 BSD 许可文本,版权标注为 Gregory Nutt 与 David Sidrane——这正是上表第二行“NuttX/PX4 宽松许可头”的实物证据。
可以从源码结构推断的是:Flycore 板级代码整体沿用 PX4 板级支持的模板结构(board_config.h、hw_config.h、init.c、led.c、usb.c等一应俱全),因此许可头也继承了 PX4 与 NuttX 的既有署名,Flycore 的适配贡献则以 AMOVLAB 名义补充。
SPDX 标识:可注释文件与 JSON 模板的不同处理
文档单列“Flycore 文件头状态”一节,说明 SPDX 标识的落地方式。以下 8 个可注释配置文件均加入了 SPDX 标识:
boards/amovlab/flycore/bootloader.px4boardboards/amovlab/flycore/default.px4boardboards/amovlab/flycore/init/rc.board_defaultsboards/amovlab/flycore/init/rc.board_sensorsboards/amovlab/flycore/nuttx-config/Kconfigboards/amovlab/flycore/nuttx-config/bootloader/defconfigboards/amovlab/flycore/nuttx-config/nsh/defconfigboards/amovlab/flycore/src/hw_config.h
例如 default.px4board 第 2 行为# SPDX-License-Identifier: BSD-3-Clause,init/rc.board_defaults 第 3 行同样以 shell 注释形式携带 SPDX 标识,src/hw_config.h 第 1 行则以 C 注释形式书写。这体现了一个细节:SPDX 标识必须依托合法的注释语法。
而 firmware.prototype 是 JSON 模板(内容包含board_id: 1218、magic: "AMOVLABv1"、image_maxsize: 1966080等字段),若强行插入//或/* */注释将破坏 JSON 合法性,因此它保持无内联 SPDX 注释,其许可归属由本文档与 AMOVLAB Flycore 板级支持贡献声明覆盖。
固件级合规结论:仅限固件的许可兼容性说明
文档最后一节“固件级许可兼容性说明”给出了面向最终固件镜像的结论:Flycore 固件镜像由宽松许可的 PX4 板级代码、PX4 上游代码、Apache-2.0 的 NuttX RTOS 代码及上表记录的宽松许可第三方库构成,在本地源码证据中未发现针对 Flycore 目标的非自由(non-FOSS)许可。
需要特别强调的是两个适用前提:
- 表内
TBD / needs verification条目均对应未选入本地 Flycore 默认固件构建的仓库组件(如 Cyphal gitlink 子模块、Sagetech SDK、加密子模块)。若这些组件被启用,其许可仍需先完成核验,才能将该文档视为覆盖所有仓库子模块的完整证据。 - NuttX 的 Apache-2.0 与个别 BSD 风格旧文件并存,逐文件核验文件头仍是合规审计的推荐做法;MAVLink 的“生成器 GPL / 生成代码 MIT”例外条款(见
src/modules/mavlink/mavlink/COPYING)也是此类场景下常见的合规陷阱。
延伸阅读
- Flycore 板级支持源码:boards/amovlab/flycore/src
- Flycore 构建配置:boards/amovlab/flycore/default.px4board 与 bootloader.px4board
- Flycore 用户文档:docs/en/flight_controller/amovlab_flycore.md
- 仓库根许可声明:LICENSE
- 嵌入式
- 物联网
- 机器人
- 自动驾驶
- 智能硬件
【免费下载链接】PX4-Autopilot
PX4 Autopilot Software
相关推荐
终极鼠标优化指南:如何用Mac Mouse Fix让普通鼠标超越苹果触控板
终极鼠标优化指南:如何用Mac Mouse Fix让普通鼠标超越苹果触控板 还在为Mac上的鼠标体验而烦恼吗?普通鼠标在macOS上总是感觉不够流畅?Mac M
桌面应用系统编程PX4-Autopilot 许可证体系全解:BSD-3-Clause 主许可、CC BY 4.0 文档许可与第三方组件合规指南
PX4 Autopilot 许可证体系全解:BSD 3 Clause 主许可、CC BY 4.0 文档许可与第三方组件合规指南 本篇指南以 PX4 Autopi
嵌入式物联网机器人自动驾驶智能硬件TensorRT Demos高级功能:DLA核心与INT8校准的实战应用指南
TensorRT Demos高级功能:DLA核心与INT8校准的实战应用指南 在深度学习推理优化领域, TensorRT Demos 项目提供了强大的工具集,特
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考