无线/无线自动软件更新(热代码加载)策略

Posted

技术标签:

【中文标题】无线/无线自动软件更新(热代码加载)策略【英文标题】:Over-the-Air / Over-the-Wire automated Software Update (hot-code-loading) strategy 【发布时间】:2011-09-30 23:30:08 【问题描述】:

有一个 Linux 系统(作为我项目的一部分),我可能需要在其中进行热代码加载,即通过无线方式(通过 WiFi 下载软件)或通过无线方式更新部分软件有线(通过 LAN)。这个软件有两部分,一部分是用 C++ 写的,另一部分是用 Erlang 写的。 C++ 部分通过 TCP/IP(一组 6-7 个专有协议)与一些外部实体通信。我最需要进行热加载的部分是与那些外部实体对话的 C++ 部分。 C++ 部分通过端口与 Erlang 对话(目前正在开发中),但我想将其更改为 NIF(将来某个时候)。

有人可以建议一些 C++ 功能的热代码加载策略吗?我知道 Erlang 的能力,但我的理解是功能并没有扩展到用 C++ 编写的部分。

另外,我需要确保包含专有协议实现的 C++ 模块来自“有效来源”。什么可能是正确的策略?

我想,我的要求并不少见,所以如果存在这样的模块、框架、库,我会很乐意指出这些。

【问题讨论】:

【参考方案1】:

不知道任何现有的库。在大多数情况下,C/C++ 中的代码加载是使用动态库完成的,您可以使用 dlopen 从代码中加载这些动态库。然后你可以使用 dlsym 找到符号的地址。请注意,C++ 确实会进行名称修改,这会使查找符号变得困难。通常最好创建包装在 extern "C" 中的普通函数,为您创建对象,然后您可以像使用任何其他对象一样使用这些对象。

如果您想确定代码是否有效,您可能应该查看公钥/私钥密码术。您使用私钥对代码进行签名(基本上是创建二进制的加密哈希),加载代码的软件使用公钥检查签名。

【讨论】:

以上是关于无线/无线自动软件更新(热代码加载)策略的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu怎样安装无线网卡驱动解决无线网不能连接

Ubuntu怎样安装无线网卡驱动解决无线网不能连接

win10无线网卡不能用怎么办

ubuntu怎么使用usb无线网卡

怎么解决安装了Ubuntu后发现没有无线网络,搜索不到WiFi的情况

怎么更新4ksmartAndroidbox