代工定制
代工定制¶
ArduPilot 为 OEM 提供了几种方法,可以在其产品上提供针对其特定系统配置定制的固件:
能够为参数设置特定的默认值,以匹配包含的系统组件(如万向节)或整个系统的外围设备(如在准备飞行的车辆中)。这允许用户使用Mission Planner或MAVProxy“重置为默认值”,以防意外更改参数的问题,并且最多只需重新校准指南针/ IMU /和RC即可准备飞行。
能够在ROM中为特殊功能提供Lua脚本,而无需最终用户将其加载到SD卡上。在此处阅读有关 ArduPilot 中 Lua 脚本的更多信息。
能够更改向用户显示的固件字符串。
能够在可用的可用闪存空间中包含图片和信息文件。
能够更改参数并将其标记为只读,以便用户无法使用 APJ 工具更改它们。
自定义步骤¶
本节假设 OEM 已设置构建环境(构建代码)并在本地克隆 ArduPilot GitHub 存储库(下载代码/使用 Git),以构建其自定义版本的固件。
使用您希望基于自定义的固件版本创建一个分支。这通常是当前的稳定版本。例如,要为 ArduPlane Stable 执行此操作,假设您已经在 PC 上的 ArduPilot 目录中:
在目录中,为自定义板定义创建新的子目录。在此示例中,将命名目录以创建该板的衍生产品。
libraries/AP_HAL_ChibiOS/hwdefOEM_CubeOrange
创建此格式的新文件。在这种情况下,我们的准备飞行的飞机将使用CubeOrange自动驾驶仪,只需要一条线:
hwdef.dat
可以通过向文件添加一行来自定义固件名称。
hwdef.dat
注意
自定义帧类型字符串可以通过Lua脚本方法创建。
motors:set_frame_string("Custom frame name")
现在在同一目录中,复制基板的引导加载程序文件,然后包含一个名为 的文件。此文件将是标准默认值的参数覆盖,以匹配系统的配置。诸如输出功能分配、辅助 RC 开关、飞行和调谐参数等。
hwdef_bl.datdefaults.parm
警告
文件应尽可能小。某些主板只允许此文件总共 1024 字节。文件中的每个 ASCII 字节都计入此限制(注释行除外)。尽可能使用整数值。下面是一个简单的例子。串行端口protcols,波特率和选项defaultscan直接在hwdef中设置,以及NTF_LED_TYPES和电池监视器默认值,并且应该在那里完成,而不是默认文件。
defaults.parm
您还可以在将自动运行的芯片的ROM中嵌入Lua脚本。由于Lua目前仅在具有大量闪存空间的自动驾驶仪上运行,因此它们的总总大小仅限于可用的可用闪存。将脚本放在名为 的子目录中,即 。文件必须以 结尾。
scriptslibraries/AP_HAL_ChibiOS/hwdef/OEM_CubeOrange/scripts.lua
警告
用户还可以从 SD 卡上运行 Lua 脚本,因此在命名嵌入式脚本文件名时应小心,以免与潜在的用户文件名冲突。建议在产品文档中为用户提供嵌入式 Lua 脚本的文件名。
您还可以在芯片的 ROM 中嵌入小块文档,这些文档在通过 MAVFtp 检查@ROMFS文件夹时是可读的。这些可以是图片或小型信息文档。这些必须适合自动驾驶仪的自由闪光空间。这些文件可以位于 (例如 ) 中的子目录中。
libraries/AP_HAL_ChibiOS/hwdef/OEM_CubeOrangelibraries/AP_HAL_ChibiOS/hwdef/OEM_CubeOrange/AircraftManual
现在,使用OEM-CubeOrange作为配置中的板名进行正常构建。默认参数、Lua 脚本和自定义固件名称将适当嵌入。
自定义 hwdef 的替代方法.dat¶
除了创建单独的分支并修改 hwdef 文件之外,您还可以将 Lua 脚本甚至信息文件插入到构建的 ROMFS 中。只需转到本地 ardupilot 存储库的“build”文件夹并创建一个名为“ROMFS_custom”的子文件夹。将 LUA 脚本放在此目录中名为“scripts”(即路径)的子文件夹中。您可以为信息文件使用其他子文件夹,在使用 MAVFtp 检查@ROMFS文件夹时,这些子文件夹将包含在内并可查看。ardupilot/build/ROMFS_custom/scripts
Last updated