c - 是否可以使用 Azure IoT 中心和 Blob 存储进行固件更新?

标签 c download binaryfiles azure-iot-hub firmware

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

我做了什么:

我已将二进制文件上传到 Azure Blob 存储。 我已经让示例“iothub_client_device_twin_and_methods_sample.c”正常工作并运行(它可以毫无问题地连接到 Azure IoT 中心)

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

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

根据上述内容,我的问题是:

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

PS:我看到有一个使用树莓派进行固件更新的示例,但我无法理解它并根据我的目的对其进行修改。

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

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

谢谢

最佳答案

您可以看一下 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

关于c - 是否可以使用 Azure IoT 中心和 Blob 存储进行固件更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60225635/

相关文章:

c - 如何在宏中使用宏来转换宏的参数?

C 编程 : warning:conflicting types?

c - 如何替换 Makefile 中的 LD 变量以链接 C 对象

php - Laravel 5 文件下载无效

c - 每次从二进制文件中读取 2 个字节

c++ - ios::trunc 如何在 C++ 中为二进制文件工作?

c - ddd 未找到调试符号

java - Angular 2 : download file from Rest webservice

javascript - 将 ExcelBuilder.js 与 FileSaver.js 结合使用

c# - 在c#中读取复合文档