【发布时间】:2021-07-08 19:25:47
【问题描述】:
所以我正在尝试实施一种 OTA 方式来同时更新 100 台设备。现在,我用谷歌搜索了很多区域,总是看到你有一个网络服务器正在运行,并在设备本身上上传一个 .bin 文件,然后将此文件刷写到设备上。
没关系,如果您只有 1 到 5 台设备,而不是当您拥有 100 台边缘设备时,您不需要物理访问这些设备和/或通过本地 IP 访问这些设备(因为它们遍布全国)。
他们确实可以访问所有互联网并通过 MQTT 与服务器通信,但我们也可以进行一些 API 调用。
我要实现的主要目标如下:
ESP 使用一些闪存的“引导加载程序”启动,该引导加载程序访问引导加载程序中预定义的服务器地址。 响应是边缘设备应该运行的二进制文件。 二进制文件被加载到设备的 RAM 中(或者如果需要,一个 SD 卡或某种其他闪存)。 当二进制文件被下载后,它会被执行NOT FLASHED ON TO THE DEVICE。当我拿到设备并想要对二进制文件进行逆向工程时,我想拥有我只能对引导加载程序进行逆向工程,而不是从服务器中提取的主要代码。
主要问题是这样的;
- 这甚至可能吗? (我正在制作一个定制板,因此如果需要可以在上面放置很多特殊组件)
- 我应该怎么做?我完全不知道这是怎么回事
- 我错过了什么吗?
谢谢!
【问题讨论】:
-
那么当设备断电时会发生什么?重启时会运行什么?
-
当设备断电时,从服务器拉取的所有代码都应该消失。当你给设备供电时,它需要重新下载它的二进制文件并执行
-
如果你想保护你的代码,那么你只需要加密闪存,esp32 已经有工具可用。否则你将不得不自己实现所有这些功能。