0. 前言
- 固件功能定制
- OEM Customization: 原厂设备制造商OEM(Original Equipment Manufacturer)、代工
- 功能勾选
- 参数预设
- 固件名称自定义
1. 基于某个飞控硬件来定制自己的飞控产品
可以自定义的包括:固件名称、预设参数、lua脚本内嵌、文件内嵌、宏定义开启或关闭、功能使能等等…
以雷迅的CUAV-X7为例。
步骤
- 复制目录 libraries/AP_HAL_ChibiOS/hwdef/CUAV-X7 到libraries/AP_HAL_ChibiOS/hwdef/ 中;
- 更名为myAutoPilot;
- hwdef.dat 文件:添加自定义的固件名称描述
include ../CUAV-X7/hwdef.dat
# 将需要重新赋值的参数写在下面,参考CUAV-X7/hwdef.dat,如:
define AP_CUSTOM_FIRMWARE_STRING "myAutoPilot-V1.0"
- hwdef.dat 中根据需要进行功能使能(宏定义定义)还可以参考在线编译生成的extra_hwdef.dat,如:
define AP_EFI_NWPWU_ENABLED 1
define AP_ICENGINE_ENABLED 0
define HAL_ADSB_ENABLED 1
define HAL_ADSB_SAGETECH_ENABLED 1
define HAL_ADSB_SAGETECH_MXS_ENABLED 1
define HAL_ADSB_UAVIONIX_MAVLINK_ENABLED 1
- hwdef-bl.dat 只需一行代码:
include ../CUAV-X7/hwdef-bl.dat
# 将需要重新赋值的参数写在下面,参考CUAV-X7/hwdef-bl.dat
- 在defaults.parm 文件中设置预设参数的值:
@include ../CUAV-X7/defaults.parm
# 将需要预设的参数写在下面,如:
CAN_P1_DRIVER 1
BATT_MONITOR 4
- 生成myAutoPilot_bl.bin和myAutoPilot_bl.hex
Tools/scripts/build_bootloaders.py myAutoPilot
- 编译
./waf configure --board myAutoPilot./waf copter
2. 功能使能
- 在hwdef.dat中声明宏定义,如:
undef AP_VIDEOTX_ENABLED
define HAL_EXTERNAL_AHRS_ENABLED 1
- 在./waf configure 时使能,如:
./waf configure --debug
./waf configure --enable-custom-controller
3 ./waf configure报错
【1】AttributeError: ‘NoneType’ object has no attribute ‘abspath’
解决:git submodule update --init --recursive
参考:https://discuss.ardupilot.org/
4. 参考文献
https://ardupilot.org/dev/docs/common-oem-customizations.html