【问题标题】:Is it possible to do a firmware update using the Azure IoT Hub and Blob storage?是否可以使用 Azure IoT 中心和 Blob 存储进行固件更新?
【发布时间】:2020-02-20 00:41:59
【问题描述】:

我在 STM32H7 上运行 Azure IoT 客户端,并使用 Keil RTX 5 作为其操作系统。我想要做的是从 Azure(固件)下载一个二进制文件并更新我设备上的固件(STM32H7)。

我做了什么:

我已将二进制文件上传到 Azure Blob 存储。 我的示例“iothub_client_device_twin_and_methods_sample.c”示例正常运行(它连接到 Azure IoT 中心没有问题)

我想通过下载这个二进制文件然后将其写入我设备上的存储区域来进行固件更新,但我想我已经涵盖了后面的部分。

根据我目前的研究,我认为正确的方法是以某种方式创建包含二进制文件的云到设备消息。

我的问题是,基于上述:

使用 C sdk 从 blob 存储下载二进制文件到我的嵌入式设备的正确方法是什么?

PS:我看到有一个使用 raspberry pi 进行固件更新的示例,但我无法理解并为我的目的对其进行修改。

任何帮助将不胜感激。谢谢。

编辑:我的固件更新将是无线固件,因此需要一种从 Azure 下载它的方法

谢谢

【问题讨论】:

    标签: c download binaryfiles azure-iot-hub firmware


    【解决方案1】:

    大家可以看看 ESP-IDF 实现 FOTA 的方式:

    ESP32 OTA via HTTPS

    ESPRESSIG - Over The Air Updates

    您还可以查看 NXP 的以下 AN: Firmware Update Using Secondary Bootloader

    要下载固件,您可以使用原始 tcp/ip、http(s)、ftp 等...

    如果你在google中输入“arm bootloader”,你会得到很多有用的内容:

    Why every Cortex-M developer should consider using a bootloader

    From Zero to main(): How to Write a Bootloader from Scratch

    【讨论】:

      【解决方案2】:

      回答我自己的问题:

      我发现 C sdk 确实支持将文件上传到 blob 存储但不支持下载。我发现下载它们的最佳方法是安装 HTTP 库并请求从 Azure 存储下载文件。我还发现似乎没有办法像我最初想象的那样使用 C SDK 进行固件无线更新。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-16
        • 1970-01-01
        • 1970-01-01
        • 2020-11-29
        • 2021-03-22
        相关资源
        最近更新 更多