F´交叉编译与部署:嵌入式目标平台构建、配置与飞行软件部署完整教程
2026/9/17 9:28:20 网站建设 项目流程

F´交叉编译与部署:嵌入式目标平台构建、配置与飞行软件部署完整教程

【免费下载链接】fprimeF´ - A flight software and embedded systems framework项目地址: https://gitcode.com/GitHub_Trending/fpr/fprime

F´(fprime)是 NASA JPL 开发的飞行软件与嵌入式系统框架(flight software framework)。本文将带你掌握F´交叉编译的核心流程:如何选择工具链、配置平台参数、编译部署(Deployment)并部署到 ARM 等嵌入式目标平台。无论你是准备把 F´ 跑在树莓派上,还是为飞行任务做新硬件移植,这篇指南都能帮你少走弯路。

为什么飞行软件要交叉编译?

在桌面 Linux/macOS 主机上直接运行 F´ 当然可以,但真正的飞行软件运行在与主机架构不同的嵌入式目标板(如 ARM Cortex-A 芯片)上。此时必须:

  1. 安装交叉编译工具链——在主机上用目标平台的编译器(如aarch64-linux-gnu-gcc)生成目标板可执行的程序;
  2. 配置 F´ 平台文件——声明目标平台的类型、对齐、字节序等;
  3. 构建并部署——生成可执行文件后复制到目标板运行。

F´ 的构建体系基于 CMake,fprime-util命令行工具将这一流程封装成了简单几步。官方说明见 cmake-toolchains.md 与 cmake-platforms.md。

前置准备:安装 F´ 工具套件

按照 安装指南,需要 Linux/macOS/WSL、C/C++ 编译器、Python 3.10+。推荐两步安装:

pip install fprime-bootstrap fprime-bootstrap project # 交互式创建项目,自动克隆 F´ 并安装工具

也可以直接克隆仓库(含 F´ 本体):

git clone https://gitcode.com/GitHub_Trending/fpr/fprime pip install -r fprime/requirements.txt

安装完成后,进入项目并激活虚拟环境(fprime-venv)即可使用fprime-util命令。

交叉编译的核心:工具链文件

F´ 在 cmake/toolchain/ 目录下内置了多套现成工具链,这是交叉编译的关键所在:

工具链文件适用目标平台
aarch64-linux.cmake64 位 ARM Linux(ARMv8/AArch64)
arm-hf-linux.cmake32 位 ARM 硬浮点 Linux
arm-sf-linux.cmake32 位 ARM 软浮点 Linux
raspberrypi.cmake树莓派(Raspberry Pi)
toolchain.cmake.template自研平台模板

以树莓派为例,先在主机上安装交叉编译器:

sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf gdb-multiarch

工具链内部通过 arm-linux-base.cmake 自动查找编译器,并支持两个关键变量:

  • ARM_TOOLS_PATH:指定交叉工具安装根目录(包含bin/lib/等子目录);
  • CMAKE_SYSROOT:指定目标板 sysroot,解决主机库与目标库不匹配的问题。官方特别提醒:目标板 Linux 版本应不旧于交叉编译器,否则建议显式指定 sysroot。

配置平台文件:FPRIME_PLATFORM

工具链文件负责"用什么编译器",平台文件(platform file)则负责"目标平台长什么样"——定义类型大小、字节序、对齐方式等。F´ 内置平台位于 cmake/platform/,其中 platform.cmake 是入口文件,平台特定类型定义在 PlatformTypes.fpp。

在工具链文件中只需一行即可绑定平台:

set(FPRIME_PLATFORM Linux)

自研平台(如裸机系统)可以新建自己的平台文件,与通用工具链文件解耦维护。

一条命令完成交叉构建

fprime-util将"选工具链 + 选部署"合并为一个参数:

# 为树莓派交叉编译项目中的某个部署 fprime-util build --toolchain fprime/cmake/toolchain/raspberrypi.cmake -DDEPLOYMENT=MyDeployment

构建产物通常输出到build-<toolchain名>/bin/目录下。更多构建系统细节(实现、部署、目标等概念)见 01-cmake-intro.md 与 cmake-targets.md。

部署到目标板

交叉编译完成后,部署流程非常直接:

  1. 传输可执行文件到目标板(如通过scp或 NFS 共享);
  2. 传输配置与数据文件(参数库、序列表等);
  3. 在目标板上直接运行该可执行文件,F´ 拓扑即开始启动。

💡 提示:部署(Deployment)是 F´ 的核心概念——它由 FPP 拓扑文件、组件实现与配置文件组装而成。理解部署结构可参考 构建系统文档 中的 Projects and Deployments 章节。

移植到新硬件平台的 4 步清单

若目标平台不在内置支持范围内,官方 移植指南 给出了清晰的四步清单:

  1. CMake 工具链 + 平台文件——指定目标平台编译器与构建工具;
  2. Fw::Types 与配置——按硬件特点调整类型头文件与默认配置;
  3. 硬件驱动——为板级特有接口开发驱动(可参考 Drv/LinuxSpiDriver、Drv/PosixUartDriver 等现有驱动);
  4. OSAL 支持——若目标运行非 Linux 操作系统,需按 实现 OS 抽象层指南 开发(Os/ 目录是 OSAL 的参考实现)。

完成以上四步,F´ 即可在新平台上运行。得益于框架与硬件解耦的设计,移植工作量远小于从零搭建飞行软件框架。

常见问题速查

  • ARM_TOOLS_PATH未设置导致找不到编译器?-DARM_TOOLS_PATH=/opt/cross显式指定工具链根目录即可;
  • 链接到主机库报错?指定-DCMAKE_SYSROOT=...指向目标板 sysroot;
  • fprime-util: command not found忘了激活虚拟环境,先执行. fprime-venv/bin/activate(详见 troubleshooting)。

小结

掌握 F´ 交叉编译只需抓住三个抓手:工具链文件cmake/toolchain/,选对目标架构)、平台文件FPRIME_PLATFORM,描述目标硬件)、fprime-util build(一条命令完成构建)。配合内置的树莓派、ARM32/64 工具链,你可以在一个下午内把飞行软件部署到自己的嵌入式目标板上。

【免费下载链接】fprimeF´ - A flight software and embedded systems framework项目地址: https://gitcode.com/GitHub_Trending/fpr/fprime

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

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

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

立即咨询