OEM 定制

ArduPilot 为 OEM 提供了多种方式,使其能够在产品上提供根据特定系统配置定制的固件:

  • 能够为参数设定特定的默认值,以匹配包含的系统组件(如万向节)或整个系统的外围设备(如待飞飞行器)。这样,当参数被意外更改而出现问题时,用户就可以使用Mission Planner地面站或 MAVProxy "重置为默认值",最多只需重新校准罗盘/IMU/和遥控装置,即可进行飞行。

  • 能够在 ROM 中为特殊功能提供 Lua 脚本,终端用户无需将其加载到 SD 卡中。了解有关 ArduPilot 中 Lua 脚本的更多信息 这里.

  • 可更改显示给用户的固件字符串。

  • 可在可用的闪存空间中加入图片和信息文件。

  • 可更改参数并将其标记为只读,这样用户就无法通过以下方式更改参数 APJ 工具.(从 4.5 版固件开始,该功能不再可用)

定制步骤

本节假定 OEM 已设置了构建环境 (编写代码),并在本地克隆了 ArduPilot GitHub repo (下载代码/使用 Git),来构建其定制版本的固件。

  1. 创建一个分支,其中包含您希望基于其进行定制的固件版本。这通常是当前的稳定版本。以 ArduPlane Stable 为例,假设您已经在 PC 上的 ArduPilot 目录中,就可以这样做:

    git 取得 https://github.com/ArduPilot/ardupilot.git 版本>;
                        其中 版本>;   标签 对于  稳定 版本 对于                     所愿 载具: ArduPlane-stable、 ArduCopter-stable、
                        APMrover2-stable 等 git 销售点 -b 您的 分支机构 name>; FETCH_HEAD git 子模组 更新 --启动 --递归
    
  2. libraries/AP_HAL_ChibiOS/hwdef 目录下新建一个子目录,用于存放自定义的电路板定义。在本例中,该目录将命名为 OEM_CubeOrange 来为该电路板创建一个衍生物。

  3. 创建一个新的 hwdef.dat 文件的格式。在这种情况下,我们的待飞飞机将使用 CubeOrange (飞行)控制器,只需要一行:

    包括 ../橙色立方体/hwdef.数据
    
  4. 固件名称可通过在 hwdef.dat 定义

    定义 ap_custom_firmware_string "MyMagicFrame";
    

    备注

    可通过 Lua 脚本方法创建自定义框架类型字符串 motors:set_frame_string("Custom 画框 name").

  5. 现在在同一目录下,复制基础电路板的 hwdef_bl.dat 引导加载程序文件,然后包含一个名为 defaults.parm.该文件将覆盖标准默认设置的参数,以匹配您的系统配置。如输出功能分配、辅助遥控开关、飞行和飞行稳定调整参数等。

    警告

    "这款" defaults.parm 文件应尽可能小。有些板卡只允许该文件的总大小为 1024 字节。文件中的每个 ASCII 字节都会被计入此限制(注释行除外)。尽可能使用整数值。下面是一个简单的例子。串行端口参数、波特率和选项默认值可直接在 hwdef 中设置,NTF_LED_TYPES 和电池监视器默认值也是如此,因此应在 hwdef 中设置,而不是在默认值文件中设置。

    # 设置输出 5 上的 NTF LED 灯
    servo5_function 120
    NTF_LED_TYPES 256
    
  6. 您还可以嵌入 Lua 脚本 在芯片的 ROM 中自动运行。由于 Lua 目前只能在闪存空间较大的(飞行)控制器上运行,因此它们的总大小只受限于可用的空闲闪存。将脚本放在名为 脚本libraries/AP_HAL_ChibiOS/hwdef/OEM_CubeOrange/scripts.文件必须以 .lua.

    警告

    用户也可以从 SD 卡运行 Lua 脚本,因此在命名嵌入式脚本文件名时应注意不要与潜在的用户文件名相冲突。建议在产品文档中为用户提供嵌入式 Lua 脚本的文件名。

  7. 您还可以在芯片的 ROM 中嵌入小块文档,这些文档在通过 MAVFtp 检查 @ROMFS 文件夹时可以读取。这些文件可以是图片或小型信息文件。这些文件必须位于(飞行)控制器的可用闪存空间内。这些文件可以位于 libraries/AP_HAL_ChibiOS/hwdef/OEM_CubeOrange 例如 libraries/AP_HAL_ChibiOS/hwdef/OEM_CubeOrange/AircraftManual).

  8. 现在,像往常一样以 OEM-CubeOrange 作为配置中的电路板名称进行构建。默认参数、Lua 脚本和自定义固件名称将被适当嵌入。

自定义 hwdef.dat 的替代方法

您也可以在构建的 ROMFS 中插入 Lua 脚本甚至信息文件,而无需创建单独的分支并修改 hwdef 文件。只需转到 ArduPilot git 签出的顶层,在源代码树的根目录下创建一个名为 "ROMFS_custom "的子文件夹。将您的 LUA 脚本放入该目录中名为 "scripts "的子文件夹(即路径 ardupilot/ROMFS_custom/scripts).您还可以为信息文件设置其他子文件夹,在使用 MAVFtp 查看 @ROMFS 文件夹时,这些子文件夹也将包含在内并可供查看。