固件升级
介绍
Zivid为其相机提供持续的更新。更新包括了在主机上运行的部分和相机本身。 Zivid SDK会定期更新,以改进主机上的图像处理。 SDK里还包括了最新的相机固件。相机固件的更新频率低于主机软件的频率。这些更新将提高稳定性、鲁棒性和采集速度。
本教程将介绍如何在Zivid相机上执行固件更新。
每个SDK版本都与相机固件相匹配,SDK将确保相机运行与之兼容的固件。
备注
本文是使用已停产的相机 Zivid One+ 编写的,但该概念适用于所有相机型号。
Zivid Studio
当Zivid Studio连接到相机时,它会检查相机是否有匹配的固件。如果固件不匹配,它将进行自动更新。
更多信息
命令行界面
可以通过命令行界面工具 ZividFirmwareUpdater 手动更新相机上的固件。执行后,该工具将:
获取连接到计算机的相机的列表。
连接到列表中的一台相机。
查询相机当前固件版本。
如果不匹配则进行更新。
对列表中的其他相机执行步骤2-4。
运行 ZividFirmwareUpdater
按下键盘上的Win+R键启动命令提示符,键入 cmd
后点击 Enter。
导航到您安装Zivid软件的文件夹:
cd C:/Program Files/Zivid/bin
运行 ZividFirmwareUpdater :
ZividFirmwareUpdater.exe
ZividFirmwareUpdater 是适用于Ubuntu系统的 Zivid-Tools 软件包的一部分。当您安装Zivid SDK和Studio时,它可能并未一同安装。按照以下步骤安装 Zivid-Tools :
ZividFirmwareUpdater
可以在 /usr/bin/
中找到。
按下键盘上的 Ctrl + Alt + T 键打开终端窗口:
wget https://downloads.zivid.com/sdk/releases/2.13.1+18e79e79-1/u24/amd64/zivid-tools_2.13.1+18e79e79-1_amd64.deb
wget https://downloads.zivid.com/sdk/releases/2.13.1+18e79e79-1/u22/amd64/zivid-tools_2.13.1+18e79e79-1_amd64.deb
wget https://downloads.zivid.com/sdk/releases/2.13.1+18e79e79-1/u20/amd64/zivid-tools_2.13.1+18e79e79-1_amd64.deb
备注
自 SDK 2.10 起,移除了对 Ubuntu 18.04 的支持。如需查看早期 SDK 版本的 Ubuntu 18.04 说明,请更改左上角的知识库版本。
sudo apt install ./zivid-tools_2.13.1+18e79e79-1_amd64.deb
现在您可以运行 ZividFirmwareUpdater 了:
usr/bin/ZividFirmwareUpdater
ZividFirmwareUpdater 是 Jetson Linux 的 Zivid-Tools 包的一部分。安装 Zivid SDK 和 Studio 时可能未安装此程序。请按照以下步骤安装 Zivid-Tools :
ZividFirmwareUpdater
可以在 /usr/bin/
中找到。
按下键盘上的 Ctrl + Alt + T 键打开终端窗口:
wget https://downloads.zivid.com/sdk/releases/2.13.1+18e79e79-1/u22/arm64/zivid-tools_2.13.1+18e79e79-1_arm64.deb
wget https://downloads.zivid.com/sdk/releases/2.13.1+18e79e79-1/u20/arm64/zivid-tools_2.13.1+18e79e79-1_arm64.deb
sudo apt install ./zivid-tools_2.13.1+18e79e79-1_arm64.deb
现在您可以运行 ZividFirmwareUpdater 了:
usr/bin/ZividFirmwareUpdater
更多信息
可以从 此处 找到 ZividFirmwareUpdater 的源代码。
Zivid API
Zivid Studio和ZividFirmwareUpdater CLI在Zivid SDK中使用了相同的API。您也可以在算法中使用这些API。
检查是否需要更新固件
int main()
{
try
{
Zivid::Application zivid;
auto cameras = zivid.cameras();
for(auto &camera : cameras)
{
if(!Zivid::Firmware::isUpToDate(camera))
{
std::cout << "Firmware update required" << std::endl;
}
else
{
std::cout << "Skipping update of camera " << camera.info().serialNumber()
<< ", model name: " << camera.info().modelName()
<< ", firmware version: " << camera.info().firmwareVersion() << std::endl;
}
}
}
return EXIT_SUCCESS;
}
更新固件
int main()
{
try
{
Zivid::Application zivid;
auto cameras = zivid.cameras();
for(auto &camera : cameras)
{
if(!Zivid::Firmware::isUpToDate(camera))
{
std::cout << "Updating firmware on camera " << camera.info().serialNumber()
<< ", model name: " << camera.info().modelName()
<< ", firmware version: " << camera.info().firmwareVersion() << std::endl;
Zivid::Firmware::update(camera, [](double progressPercentage, const std::string &stageDescription) {
std::cout << std::round(progressPercentage) << " % : " << stageDescription
<< (progressPercentage < 100 ? "..." : "") << std::endl;
});
}
else
{
std::cout << "Skipping update of camera " << camera.info().serialNumber()
<< ", model name: " << camera.info().modelName()
<< ", firmware version: " << camera.info().firmwareVersion() << std::endl;
}
}
}
return EXIT_SUCCESS;
}
小技巧
固件会根据SDK版本进行更新。因此,当较旧的SDK版本与具有较新固件版本的相机一起使用时,相机固件会回滚到旧版本。