妙算 3 系统配置说明

本文档用于说明妙算 3 当前开发环境、系统版本、常用查询命令、应用安装目录和开发注意事项,便于项目部署、问题定位和后续维护。

1. 基础系统信息

项目 当前配置 说明
设备平台 DJI 妙算 3 面向 PSDK 应用开发与部署。
JetPack 版本 JetPack 5.1.3 当前暂不支持升级。
CUDA 版本 V11.4.315 可通过 nvcc -V 查看。
CMake 版本 3.16.3 系统默认 CMake 版本。
应用开发和安装目录 /open_app 用户开发应用和安装应用建议放在该目录。
系统可用空间 约 99 GB 实际空间以设备当前查询结果为准。

2. CUDA 版本查看

nvcc -V

当前环境 CUDA 版本为:

V11.4.315

3. 应用开发和安装目录

妙算 3 用户开发应用和安装应用的推荐目录为:

/open_app

建议项目部署时将可执行程序、配置文件、运行脚本和必要资源统一放在 /open_app 或其子目录下,便于后续维护和升级。

示例目录结构:

/open_app/
  mavlink_app/
    bin/
    config/
    logs/
    scripts/

4. 获取设备唯一编码

4.1 产品 Serial Number

cat /factory/device_id.txt

4.2 SOC Serial Number

cat /sys/firmware/devicetree/base/serial-number

说明:

  • 产品 Serial Number 可用于设备识别、部署记录和售后追踪。
  • SOC Serial Number 可用于底层硬件识别。
  • 注意命令路径中 devicetree/base 之间只需要一个 /

5. 系统时间与同步

妙算 3 已通过 PPS 硬件引脚与飞机系统完成毫秒级时间同步,应用层无需额外开发时间同步功能。

5.1 Bash 查看 UTC 时间

date -u '+%Y-%m-%d %H:%M:%S.%3N'

输出示例:

2026-07-08 03:20:15.123

5.2 C/C++ 程序中获取时间

C/C++ 程序中建议使用系统实时时钟:

CLOCK_REALTIME

或使用 C++ 标准库:

std::chrono::system_clock

说明:

  • CLOCK_REALTIMEstd::chrono::system_clock 获取的是系统实时时间。
  • 在本平台上,系统时间已由飞机系统同步,适合用于日志时间戳、MAVLink 时间戳和业务事件记录。

6. 码流硬件编解码

妙算 3 已封装基于硬件编解码的接口,应用开发中无需手动实现底层硬件编解码流程。

6.1 获取硬件解码后的码流

DjiLiveview_StartImagestream

6.2 将码流硬件编码为 H264

DjiLiveview_EncodeAFrameToH264

说明:

  • 推荐优先使用 PSDK 已封装接口获取、编码和处理视频流。
  • 不建议在应用层重复实现底层硬件编解码逻辑。
  • 若需要转发到 QGC、播放器或网络端,应重点确认编码格式、分辨率、帧率、RTP/UDP 地址和端口配置。

7. USB 转串口通信

妙算 3 支持接入常见 USB 转串口设备,例如:

  • FT232
  • CP2102

接入设备后,可通过以下命令查看串口设备节点:

ll /dev/ttyUSB*

如果系统未识别到设备,可检查:

  • USB 转串口模块是否连接正常。
  • 设备是否被系统识别。
  • 用户权限是否允许访问 /dev/ttyUSB*
  • 串口波特率、数据位、停止位、校验位配置是否与外设一致。

8. 系统 OpenCV 版本查看

查看系统 OpenCV 相关安装包:

dpkg -l | grep -E 'libopencv|opencv' | head

说明:

  • 系统 OpenCV 版本以设备实际查询结果为准。
  • 如果项目需要指定 OpenCV 版本,应在 CMake 中明确查找和链接路径,避免误链接到不符合预期的系统库。

9. CMake 版本

当前系统 CMake 版本:

cmake version 3.16.3

查看命令:

cmake --version

开发注意事项:

  • CMakeLists.txt 中不要使用高于 3.16.3 才支持的语法。
  • 如果需要跨平台构建,应在 cmake_minimum_required() 中选择与妙算 3 环境兼容的版本。

示例:

cmake_minimum_required(VERSION 3.16)

10. 头文件依赖索引路径

在 C/C++ CMake 工程中,应让头文件依赖索引和搜索路径优先指向项目自己的目录,而不是系统目录,例如 /usr/include

推荐使用:

target_include_directories()

示例:

target_include_directories(my_target
    PRIVATE
        ${CMAKE_CURRENT_SOURCE_DIR}/include
        ${CMAKE_CURRENT_SOURCE_DIR}/src
)

不推荐在项目中全局滥用:

include_directories(...)

原因:

  • 全局 include 路径容易影响其它 target。
  • 容易误引用系统头文件或旧版本头文件。
  • 不利于定位依赖关系。

11. 开发环境检查命令汇总

功能 命令
查看 CUDA 版本 nvcc -V
查看产品 Serial Number cat /factory/device_id.txt
查看 SOC Serial Number cat /sys/firmware/devicetree/base/serial-number
查看 UTC 时间 date -u '+%Y-%m-%d %H:%M:%S.%3N'
查看 USB 串口设备 ll /dev/ttyUSB*
查看 OpenCV 安装信息 dpkg -l | grep -E 'libopencv|opencv' | head
查看 CMake 版本 cmake --version

12. 开发建议

  1. 应用程序、脚本、配置文件和日志建议统一放在 /open_app 或其子目录下。
  2. 不要自行升级 JetPack,当前环境固定为 JetPack 5.1.3。
  3. 涉及 CUDA、OpenCV、GStreamer、PSDK 的工程,应明确 CMake include 和 link 路径。
  4. 视频流处理优先使用 PSDK 已封装的硬件编解码接口。
  5. 与飞机系统时间相关的功能优先使用系统时间,不需要额外实现时间同步。
  6. 串口外设接入后,先确认 /dev/ttyUSB* 是否出现,再调试协议层。
  7. 交付部署时建议记录设备 Serial Number、应用版本、配置文件版本和启动命令。
作者:孙渝泓  创建时间:2026-06-12 08:32
最后编辑:bai  更新时间:2026-07-08 09:44