To get over the air (OTA) Programming
工作时,您自己的代码库需要在另一层之上工作(因此其他用户也提到要查看 shell 示例)。
它类似于运行可执行文件并需要更新的Windows内核。
1:内核下载 foo 并将其保存在其文件系统上。
2:内核在进行一些必要的文件验证后终止旧的 foo 程序并启动新的 foo 程序。
3:如果一切正常,旧的 foo 程序将被删除。
现在您可以看到,更新程序时需要在同一设备上更新两次(旧设备和新设备)。
我希望这能让您更深入地了解 OTA 编程的工作原理。
那么我现在就尝试一一回答大家的问题:
1)为了将文件分发到所有其他节点,使用了deluge。现在使用deluge确实使用起来相当棘手。 Contiki 邮件列表中的以下帖子给出了 sky 代码示例的基本概念。http://permalink.gmane.org/gmane.os.contiki.devel/4884 http://permalink.gmane.org/gmane.os.contiki.devel/4884 .
2) 每个节点都需要一个 shell 来运行 deluge 应用程序。并且一个汇聚节点(传输最新文件的节点)需要调用 deluge_dessiminate() 函数来分发(dessiminate)新程序。
3)代码将被存储在coffee文件系统中。 Deluge 将自动(在 deluge_dessiminate 和天空节点上的 deluge 应用程序的幕后)将新文件保存在天空节点的闪存上。完成此操作后,您需要使用 ELF 加载程序来运行该程序。因为您需要您的程序是 ELF 编译文件才能由 Contiki ELF_LOADER 运行。
4)我认为你的意思是ROM?但是,是的,您需要额外的代码来支持 OTA 编程,并且需要两倍于应用程序大小的空间。您所说的您需要的所有模块可能都需要您自己在 shell 端进行编程。文件验证可以通过 CRC 检查文件来完成。
这确实是一项艰巨的工作,我建议采取一些小步骤。
1:使用保存在coffee文件系统上的ELF加载程序运行程序。
2:将您自己的(随机)文件从接收器节点消除(淹没)到其他节点
3:提取一个ELF文件。
4:使用 ELF 加载程序运行 deluge_dessimulated 文件。
5:为其他人创建教程并分享知识!
我希望这能以任何方式帮助你。