FMT-Firmware Windows下SCons编译流程记录
FMT源码获取
git clone https://github.com/Firmament-Autopilot/FMT-Firmware.git --recursive --shallow-submodules
编译工具安装
1.ARM交叉编译器
随便一个版本都可以,我这里使用的是GNU Arm Embedded Toolchain\10 2021.10
这部分安装教程很多,这里不再赘述,总之确保编译器环境变量设置正确即可。
打开cmd终端输入指令测试安装是否成功:
arm-none-eabi-gcc -v
若输出类似如下则为安装成功:
gcc version 10.3.1 20210824 (release) (GNU Arm Embedded Toolchain 10.3-2021.10)
2.SCons
这个是基于Python的一个工具,所以使用pip安装即可:
pip install scons
打开cmd终端测试是否安装成功:
scons
若有如下类似输出表示安装成功:
scons: *** No SConstruct file found.
编译准备
对于FMT,不在项目根目录进行编译,而是进入target要编译对应飞控的目录下编译:

随便选一个即可。
例如我们进入到:FMT-Firmware\target\pixhawk\fmu-v2
首先需要修改rtconfig.py文件:
将EXEC_PATH = 'your-compiler-path'修改为你的编译器路径
例如我这里设置为:
EXEC_PATH = r'C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin'
随后,在文件末尾地方添加一个CFLAGS:
CFLAGS += ' -DHAVE_SIGVAL -DHAVE_SIGEVENT -DHAVE_SIGINFO'
添加完毕之后大概是这个样子:
CXXFLAGS = CFLAGS
CFLAGS += ' -std=c99'
CXXFLAGS += ' -std=c++14'
CFLAGS += ' -DHAVE_SIGVAL -DHAVE_SIGEVENT -DHAVE_SIGINFO' # 20250604 Wakkk Add
POST_ACTION = OBJCPY + ' -O binary $TARGET build/fmt_' + BOARD + '.bin\n' + SIZE + ' $TARGET \n'
添加这部分的原因是处理一些因为工具链版本高导致的编译错误,例如:
error: redefinition of 'struct sigevent'
error: conflicting types for 'siginfo_t'
error: redefinition of 'union sigval'
具体原因详见:https://blog.csdn.net/notMine/article/details/108263638
编译
scons
或者多核编译,这里用16线程:
scons -j16
编译结果:

浙公网安备 33010602011771号