1.编写硬件描述文件
在以下路径文件夹下添加自己飞控硬件名称的文件夹:
Ardupilot/libaries/AP_HAL_ChibiOS/hwdef
文件内容参考此文件夹其他硬件写法,修改出适配自己硬件的硬件描述文件。
文件夹中有三个文件:
- hwdef-bl.dat:这个定义的是BootLoader程序对应的硬件描述,由于BootLoader只用到了很少一部分硬件外设,因此此文件内容明显比“hwdef.dat”少;
- hwdef.dat:这个定义的是飞控程序对应的硬件描述,其中包含了STM32时钟配置,串口、SPI、IIC、CAN等接口配置,IMU芯片型号描述,PWM以及定时器配置等等关键信息。
- defaults.parm:这个文件定义了针对此电路板的默认参数。比如默认不使用串口的流控制、电源电压检测的比例系数等。注意,此文件不是必须的,如果你没有哪些参数是特有的,可以没有这个文件。
注意,上述三个文件的文件名是固定的(hwdef-bl.dat、hwdef.dat、defaults.parm),不能改为其他的名字。
2.编译Bootloader
// 第一步,清理之前的编译中间文件,一定要清理一下,能避免很多奇怪的问题
./waf distclean
// 第二步,设置编译目标为针对你的硬件的BootLoader
./waf configure --board YourBoard --bootloader
// 注意,这里的“YourBoard”就是上面步骤中你自己新建的文件夹的名字
./waf configure --board NFCYv5 --bootloader
// 第三步,编译BootLoader
./waf bootloader
3.编译飞控固件
// 第一步,清理之前的编译中间文件,一定要清理一下,能避免很多奇怪的问题
./waf distclean
// 第二步,设置编译目标为针对你的硬件的飞控固件
./waf configure --board YourBoard
// 第三步,编译飞控固件(此处以编译多旋翼固件为例)
./waf copter