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
- 如果设备已刷写 NETWORK bootloader,您将能够设置其静态/动态 IP/掩码/网关、DNS、MAC 等。
- 如果设备已刷写 USB bootloader,您将能够设置其 USB 最大速度和 USB 超时。
Flash configuration 按钮。您也可以 Clear configuration 或 View configuration(其 JSON 格式)。
Applications settings
- 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
软砖
此部分可能会导致您的设备软砖,请谨慎使用。
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 启动。这主要由我们的固件开发人员使用。
工厂和用户引导加载程序
- 工厂引导加载程序:在工厂刷写的引导加载程序。我们不建议重新刷写此引导加载程序,因为它不供最终用户编辑。
- 用户引导加载程序:用户可以刷写的引导加载程序。如果启动不成功(例如,刷写时损坏),它将回退到工厂引导加载程序。
启动开关
- 从闪存启动 - DIP 开关:0x03(开关 5、6 开启)- 由 OAK PoE 和 USB 相机在安装引导加载程序时使用。
- USB 恢复模式 - DIP 开关:0x16(开关 2、4、5 开启)- 直接启动到 USB 模式,以便相机等待主机通过 USB 连接到它。


API
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 = "");DepthAI 应用程序包(.dap)
- SBR(512B 头,描述数据段)
- Depthai 设备固件("__firmware" 段)
- 管道描述("pipeline" 段)
- 资产结构("assets" 段)
- 资产存储("asset_storage" 段)