news 2026/9/24 0:30:05

PX4 中 AMOVLAB Flycore 板级支持的开源许可证全景解析:BSD、Apache、MIT 与 CC-BY 的合规边界

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PX4 中 AMOVLAB Flycore 板级支持的开源许可证全景解析:BSD、Apache、MIT 与 CC-BY 的合规边界
  • 嵌入式
  • 物联网
  • 机器人
  • 自动驾驶
  • 智能硬件

【免费下载链接】PX4-Autopilot

PX4 Autopilot Software

项目地址:https://gitcode.com/gh_mirrors/px/PX4-Autopilot
点击查看免费下载

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*.hsrc/CMakeLists.txtAMOVLAB Flycore 板级支持代码,改编自 PX4 板级代码BSD-3-Clause存在 PX4 Development Team 版权头;Flycore 适配为 AMOVLAB 板级支持贡献大部分源文件包含 BSD-3-Clause 许可文本与 PX4 版权头
boards/amovlab/flycore/nuttx-config/include/board.hnuttx-config/scripts/*.ldsrc/sdio.cFlycore 专属 NuttX 板级配置,源自 NuttX/PX4 板级支持BSD-3-Clause 风格 NuttX 许可文本(文件头内)Gregory Nutt 和/或 PX4 Development Team(视文件而定)文件含 NuttX/PX4 宽松许可头及 Flycore 专属硬件配置值
boards/amovlab/flycore/default.px4boardbootloader.px4boardfirmware.prototypeinit/*nuttx-config/Kconfignuttx-config/bootloader/defconfignuttx-config/nsh/defconfigAMOVLAB Flycore 板级构建、启动与默认配置BSD-3-ClauseAMOVLAB/PX4 贡献者可注释的配置文件内含 SPDX 标识;firmware.prototype为 JSON,故在本文档说明而非插入非法 JSON 注释
boards/amovlab/flycore/extras/amovlab_flycore_bootloader.bin生成的 Flycore 引导程序二进制与构建其使用的引导源码组件相同的许可集合源自 PX4 与 NuttX 引导源码make amovlab_flycore_bootloader生成;二进制文件本身无法内嵌源码头
LICENSEREADME.mdsrc/**platforms/common/**platforms/nuttx/src/px4/**Flycore 固件复用的 PX4 上游代码BSD-3-ClausePX4 Development Team仓库根LICENSE为 BSD-3-Clause,根README.md声明 PX4 源码为 BSD-3-Clause
docs/**,含docs/en/flight_controller/amovlab_flycore.mddocs/assets/flight_controller/amovlab_flycore/**PX4 文档与 Flycore 文档素材CC-BY-4.0AMOVLAB 与 PX4 文档贡献者docs/LICENSE为 CC-BY-4.0;Flycore 文档图片归 AMOVLAB 所有或经授权使用,可按 PX4 文档许可贡献;文档素材不属于固件镜像
platforms/nuttx/NuttX/nuttx/**Apache NuttX RTOSApache-2.0,含LICENSE/NOTICE中的附加第三方声明Apache Software Foundation 及列出的第三方作者NuttX 根LICENSE为 Apache-2.0;部分旧文件或导入文件含兼容的 BSD 风格声明,需按文件头核对逐文件归属
platforms/nuttx/NuttX/apps/**Apache NuttX AppsApache-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/**(不含libdronecanPX4 DroneCAN/UAVCAN 集成BSD-3-ClausePX4 Development TeamPX4 集成层遵循仓库许可与文件头;Flycore 启用 UAVCAN 支持
src/drivers/uavcan/libdronecan/**DroneCAN/libuavcan 第三方库MITPavel Kirienko;存在 UAVCAN/DroneCAN Development Teamsrc/drivers/uavcan/libdronecan/LICENSEdsdl/LICENSE均为 MIT
src/drivers/cyphal/**(不含子模块与o1heapPX4 Cyphal 集成BSD-3-ClausePX4 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/libcanardpublic_regulated_data_typeslegacy_data_typesCyphal/OpenCyphal 数据类型与 libcanard 子模块待核实(TBD)待核实(TBD)本检出中为 gitlink 且未本地初始化,无法本地核验其许可文件;列出仅为仓库完整性。Flycore 默认固件构建启用的是src/drivers/uavcan/libdronecan(MIT,已本地核验)
src/modules/mavlink/mavlink/**MAVLink 子模块生成器为 (L)GPL v3;生成的代码按COPYING中的例外条款为 MITMAVLink 贡献者与 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-ClausePX4 Pro Drone Autopilot本地LICENSE.md含 BSD-3-Clause 许可文本
src/lib/events/libevents/**MAVLink libevents 子模块BSD-3-ClauseMAVLink Development Team本地LICENSE.md含 BSD-3-Clause 许可文本
src/lib/heatshrink/heatshrink/**heatshrink 压缩库ISC 风格宽松许可文本Scott Vokes本地LICENSE授予使用、复制、修改与分发权利并要求署名
src/drivers/ins/microstrain/mip_sdk/**MicroStrain MIP SDKMITParker Hannifin Corp.本地LICENSE.txt为 MIT
src/drivers/ins/sbgecom/sbgECom/**SBG Systems ECom SDKMITSBG Systems SAS本地LICENSE.md为 MIT
src/drivers/transponder/sagetech_mxs/sg_sdk/**Sagetech SDKApache-2.0待核实(需核对文件头)本地LICENSE为 Apache-2.0;该 SDK 未选入本地 Flycore 默认固件构建
src/lib/crypto/monocypherlibtomcryptlibtommathPX4 引用的加密子模块待核实(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.hhw_config.hinit.cled.cusb.c等一应俱全),因此许可头也继承了 PX4 与 NuttX 的既有署名,Flycore 的适配贡献则以 AMOVLAB 名义补充。

SPDX 标识:可注释文件与 JSON 模板的不同处理

文档单列“Flycore 文件头状态”一节,说明 SPDX 标识的落地方式。以下 8 个可注释配置文件均加入了 SPDX 标识:

  • boards/amovlab/flycore/bootloader.px4board
  • boards/amovlab/flycore/default.px4board
  • boards/amovlab/flycore/init/rc.board_defaults
  • boards/amovlab/flycore/init/rc.board_sensors
  • boards/amovlab/flycore/nuttx-config/Kconfig
  • boards/amovlab/flycore/nuttx-config/bootloader/defconfig
  • boards/amovlab/flycore/nuttx-config/nsh/defconfig
  • boards/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: 1218magic: "AMOVLABv1"image_maxsize: 1966080等字段),若强行插入///* */注释将破坏 JSON 合法性,因此它保持无内联 SPDX 注释,其许可归属由本文档与 AMOVLAB Flycore 板级支持贡献声明覆盖。

固件级合规结论:仅限固件的许可兼容性说明

文档最后一节“固件级许可兼容性说明”给出了面向最终固件镜像的结论:Flycore 固件镜像由宽松许可的 PX4 板级代码、PX4 上游代码、Apache-2.0 的 NuttX RTOS 代码及上表记录的宽松许可第三方库构成,在本地源码证据中未发现针对 Flycore 目标的非自由(non-FOSS)许可。

需要特别强调的是两个适用前提:

  1. 表内TBD / needs verification条目均对应未选入本地 Flycore 默认固件构建的仓库组件(如 Cyphal gitlink 子模块、Sagetech SDK、加密子模块)。若这些组件被启用,其许可仍需先完成核验,才能将该文档视为覆盖所有仓库子模块的完整证据。
  2. 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

项目地址:https://gitcode.com/gh_mirrors/px/PX4-Autopilot
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 0:30:02

OpenStock开源项目:手把手搭建A股行情数据采集与展示系统

要说最近在金融数据这个圈子里有什么值得自己动手玩一玩的开源项目,OpenStock绝对算一个。简单来说,OpenStock是一套开源的股票行情数据采集、存储与展示系统,它把A股行情源、数据库、API服务和前端展示整个链路的代码全部开放出来&#xff0…

作者头像 李华
网站建设 2026/9/24 0:27:26

Axure流程图自定义元件库建设与实战方法论

1. 为什么现在还要花时间学Axure画流程图?——一个老UE设计师的坦白你可能刚在招聘网站上看到“熟悉Axure,能输出高保真原型及业务流程图”这条要求,心里嘀咕:Figma不是更火?ProcessOn画流程图不是更轻量?甚…

作者头像 李华
网站建设 2026/9/24 0:26:52

C#手写DBSCAN:直角坐标系下的工业实时聚类实现

简介:本资源是一份面向C#初学者与机器学习实践者的DBSCAN聚类算法可视化实现,聚焦直角坐标系下无监督点云聚类任务,适用于大数据预处理、机器视觉中的目标区域划分及教学演示场景。压缩包共37个文件,含7个核心C#源码文件&#xff…

作者头像 李华
网站建设 2026/9/24 0:24:59

YOLOv8快递包裹缺陷检测:权重推理、数据集训练与实战避坑

简介:YOLOv8快递包裹与包装盒缺陷检测权重资源包,面向目标检测学习者和物流包装质检场景,适用于电商仓储、分拣中心或学术实验中的常见缺陷识别与快速验证。模型已训练完成,可直接进行推理检测,数据集含1200多张快递包…

作者头像 李华
网站建设 2026/9/24 0:23:35

图书馆预约微信小程序毕设:信用积分+多角色+B/S全栈实现

简介:本资源是一套完整的微信小程序毕业设计项目,面向计算机相关专业本科生及初学者,聚焦图书馆自习室预约场景,解决多角色协同管理与信用积分机制落地问题。压缩包共5个文件,含2个RAR源码包(分别对应小程序…

作者头像 李华
网站建设 2026/9/24 0:13:28

VR注视选择交互实现:基于Unity射线检测与高亮反馈的完整方案

简介:这是一份面向Unity VR开发者的注视交互资源包,解决在VR场景中通过视线凝视选择、触发物体的核心需求,适合想快速实现Gaze交互的初中级开发者,也可用于毕业设计或课程项目。工程基于Unity 2019.4.9f1与VS2019编写,…

作者头像 李华