当前位置: 首页 > news >正文

ardupilot开发 --- 固件定制(OEM) 篇

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

http://www.lryc.cn/news/284043.html

相关文章:

  • 爬虫代理IP在电商行业的应用
  • Vue配置语法检查及关闭语法检查的说明
  • 【Linux】yum
  • 安装sftpgo
  • JS-元素尺寸与位置
  • 2024-01-15(SpringMVCMybatis)
  • Node+Express编写接口---前端
  • 防火墙技术
  • 图灵日记之java奇妙历险记--String类
  • 代码随想录算法训练营第六天| 242 有效的字母异位词 349 两个数组的交集 202 快乐数 1 两数之和
  • 数学建模--比赛
  • JVM工作原理与实战(十六):运行时数据区-Java虚拟机栈
  • DC-4靶机刷题记录
  • 【前端学习笔记1】css基础
  • CVE-2023-46226 Apache iotdb远程代码执行漏洞
  • Redis实战之-分布式锁
  • Cookie同源策略
  • 6、Numpy形状操纵
  • C++初阶类与对象(二):详解构造函数和析构函数
  • 【Vue3】3-3 : 组件之间是如何进行互相通信的
  • 网络端口映射和端口转发的区别和联系
  • VLSI超大规模集成电路设计复习
  • GCC 内联汇编
  • springboot整合websocket后启动报错:javax.websocket.server.ServerContainer not available
  • Vue面试之生命周期(上篇)
  • Gin 框架之用户密码加密
  • 【创作活动】ChatGPT 和文心一言哪个更好用?
  • 【linux】查看Debian应用程序图标对应的可执行命令
  • TortoiseSVN客户端如何安装配置并实现公网访问服务端提交文件到本地服务器
  • 【AUTOSAR】RTE 接口类型、应用场景差别及实例讲解