DepthAI v2 has been superseded by DepthAI v3. You are viewing legacy documentation.
此页面由 AI 自动翻译。查看英文原版

本页目录

  • Device Manager
  • About Device
  • Configuration settings
  • Applications settings
  • Danger Zone
  • 工厂和用户引导加载程序
  • 启动开关
  • API
  • DepthAI 应用程序包(.dap)
  • MAC 地址

Bootloader

DepthAI bootloader 是一个小型程序,用于处理启动过程,可以通过启动已刷写的应用程序(请参阅 Standalone 模式 初始化 OAK PoE 相机以允许 DepthAI API 连接到它。OAK PoE 相机出厂时已预刷写了工厂 bootloader。Bootloader 包含在 depthai 库中,因此要刷写最新的 bootloader,您应该使用最新的 depthai 库。

Device Manager

device_manager.py 是一个与设备 Bootloader 和 bootloader 配置交互的 Python 脚本。 您可以在 depthai-python/utilities 找到它。

About Device

允许您选择要连接的设备,并查看已连接设备的元数据。
  • 首先,我们必须选择要连接(启动)的设备,您可以使用以下方式选择:
    • 下拉菜单,其中包含找到的设备 MX Ids。下拉菜单仅在应用程序启动时更新。
    • 如果您的 OAK PoE 相机不在同一局域网中,请使用指定 IP 按钮。
    • 搜索功能 - 将显示一个新窗口,其中包含所有可用相机(通过 USB 端口或局域网连接的 OAK PoE)的表格,包括它们的 MxId、名称和状态。单击表格行将选择该设备并启动它。

Configuration settings

选择已刷写 bootloader 的设备后,您还可以配置 bootloader 设置。
  • 如果设备已刷写 NETWORK bootloader,您将能够设置其静态/动态 IP/掩码/网关、DNS、MAC 等。
  • 如果设备已刷写 USB bootloader,您将能够设置其 USB 最大速度和 USB 超时。
设置一些值后,您必须单击 Flash configuration 按钮。您也可以 Clear configurationView configuration(其 JSON 格式)。
刷写静态 IP 时,请确保同时设置网关/掩码

Applications settings

在处理 Standalone 模式 应用程序时很有用。
  • Flash application: 选择要刷写到设备的 DepthAI Application Package (.dap) 文件。下面的代码片段展示了如何创建 dap 文件。
  • Remove application: 删除/清除设备上已刷写的应用程序。
  • Open device streaming application: 开始从设备上的所有连接的相机流式传输帧。
Python
1import depthai as dai
2pipeline = dai.Pipeline()
3# ... 添加节点到 pipeline
4dai.DeviceBootloader.saveDepthaiApplicationPackage(
5    './file.dap', # .dap 文件保存位置
6    pipeline, # 我的 pipeline
7    compress=True, # 压缩固件和资源。在本例中,文件大小从 24MB -> 9.5MB
8    applicationName='myAppName' # 可选,以便之后知道哪个应用程序已刷写
9  )

Danger Zone

这是一个关于如何更新 bootloader 的视频教程:
为防止软砖,OAK 设备(自 2023 年起)具有工厂 bootloader 和用户 bootloader。如果用户刷写了损坏的用户 bootloader,它将回退到使用工厂 bootloader。更新 bootloader 时, Device Manager 将尝试先刷写用户 bootloader,前提是已刷写的(工厂)bootloader 支持。如果不可能,它将刷写工厂 bootloader。
  • Update Bootloader 按钮将把最新的 bootloader 刷写到设备。您可以选择 AUTO、USB 或 NETWORK bootloader。
    • AUTO 将选择相机当前连接到的 bootloader 连接类型。如果您通过 USB 连接(进行工厂重置)到 OAK PoE 相机,则不应选择 AUTO,因为它将刷写 USB bootloader。
    • USB bootloader 将尝试启动存储在闪存中的应用程序。如果找不到已刷写的应用程序,它将像普通的 USB OAK 一样运行 - 即等待主机计算机初始化应用程序。
    • NETWORK bootloader 由 OAK PoE 相机使用,并在工厂刷写。它处理网络初始化,以便 OAK PoE 相机可以通过局域网启动。
  • Flash Factory Bootloader:如果您想刷写工厂 bootloader,可以使用此按钮。它将刷写工厂 bootloader,即使用户 bootloader 已被刷写。
  • Factory reset 将擦除所有闪存内容,并仅用 USB 或 NETWORK bootloader 重新刷写。已刷写的应用程序(pipeline、资源)和 bootloader 配置将丢失。
  • Boot into USB recovery mode 将强制(例如)OAK PoE 相机通过 USB 连接器可用,即使其启动引脚设置为 PoE 启动。这主要由我们的固件开发人员使用。

工厂和用户引导加载程序

有两种引导加载程序:
  • 工厂引导加载程序:在工厂刷写的引导加载程序。我们不建议重新刷写此引导加载程序,因为它不供最终用户编辑。
  • 用户引导加载程序:用户可以刷写的引导加载程序。如果启动不成功(例如,刷写时损坏),它将回退到工厂引导加载程序。
USB 设备不支持用户引导加载程序。如果设备具有用户引导加载程序,它将默认使用。如果未刷写用户引导加载程序,它将回退到工厂引导加载程序。

启动开关

  • 从闪存启动 - DIP 开关:0x03(开关 5、6 开启)- 由 OAK PoE 和 USB 相机在安装引导加载程序时使用。
  • USB 恢复模式 - DIP 开关:0x16(开关 2、4、5 开启)- 直接启动到 USB 模式,以便相机等待主机通过 USB 连接到它。
OAK-D-PoE,开关 2、4、5 开启,用于通过 USB 连接设备。
在较新版本的 OAK 设备上,我们有 0 欧姆电阻(见下图)而不是 DIP 开关,这意味着 OAK 将默认启动到闪存。这些新设备 已刷写引导加载程序,该引导加载程序负责启动过程。底板上还有一个额外的按钮,按下时可将启动切换到恢复模式, 这在引导加载程序尚未刷写时(例如,早期访问设备)可能很有用。您需要在设备通电时(启动时)按下此按钮。

API

DeviceBootloader 是一个用于与引导加载程序通信的类。它用于刷写创建的 Pipeline、depthai 应用程序包 或更新引导加载程序本身。
C++
1std::tuple<bool, std::string> flash(std::function<void(float)> progressCb, Pipeline& pipeline);
2
3std::tuple<bool, std::string> flashDepthaiApplicationPackage(std::function<void(float)> progressCb, std::vector<uint8_t> package);
4
5std::tuple<bool, std::string> flashBootloader(std::function<void(float)> progressCb, std::string path = "");
progressCb 参数接受一个回调函数,该函数将在每次发生进度更新时被调用(速率限制为 1 秒)。这主要用于 通知用户当前的刷写进度。

DepthAI 应用程序包(.dap)

DepthAI 应用程序包是一种二进制文件格式,用于存储数据段。此格式的目的是能够提取 单个段并进行 OTA 更新,而无需更新所有数据。例如:在用户应用程序的更新 1 和 2 之间, Depthai 固件、资产存储(50MiB 神经网络)和资产结构保持不变,但向 管道添加了一些额外的处理节点。无需传输整个包,只需发送和更新管道描述即可。Depthai 应用程序包(.dap)包含:
  • SBR(512B 头,描述数据段)
  • Depthai 设备固件("__firmware" 段)
  • 管道描述("pipeline" 段)
  • 资产结构("assets" 段)
  • 资产存储("asset_storage" 段)

MAC 地址

所有 OAK PoE 相机都有一个唯一的 MAC 地址,用于在网络上标识设备。它根据设备的 MxID 计算得出,请参见此处逻辑 MAC 地址存储在 DeviceBootloader 配置中。