Joh*_*ast 5 c air flash shell contiki
我正在通过一个项目开始在天空中使用contiki.我正试图让空中节目现在正常工作.
我一直在查看examples/sky-shell-exec和apps/shell /.我觉得我需要通过sky-shell-exec和可能的test-deluge或codeprop提供的功能的某种组合.然而,通过代码阅读导致了一些概念上的障碍,涉及需要实现什么代码以及已经提供了什么代码以便获得一些无线编程功能(我对此非常新,并且没有太多嵌入式系统暴露在一起).我很抱歉我的问题有时模糊不清,但这是由于我一般的困惑,并不知道如何更好地进行.我主要希望得到一些小的东西(示例程序)现在可以将代码发送到mote然后使用发送的代码重新编程(例如发送的代码可能只是hello-world).
1)如何通过空中简单地将代码发送到mote?我觉得test-thluge是无线编程问题的"无线"传输部分,但是从代码中并没有完全理解它.
2)为了通过无线代码接收,应该在mote上运行什么代码?
3)我如何知道存储此代码的位置,然后知道如何加载它?我觉得这一步是天空shell-exec或多或少,但再次从代码中完全不了解它.
4)我正在网上阅读很多内容,如果代码库很大,那么无线编程是很困难的,因为ram是有限的.一般来说,我在无线传输时存储我的代码,如何知道/验证它是否在那里?另外,我怎么能简单地知道由于代码大小我是否会有内存存储问题(最终对于项目来说,需要传输大型代码库而不仅仅是单个模块)?
我再次为任何无根据的无知道歉,我意识到还有另一个类似于这个的线程,但我发现我需要对那里提到的每个组件进行更详细的解释(线程是:Contiki的Air编程).
谢谢
小智 5
要开始over the air (OTA) Programming工作,您自己的代码库需要在另一个层之上工作(因此其他用户也提到了shell示例).
它与运行可执行文件并需要更新的Windows内核相当.
1:内核下载foo并将其保存在其文件系统中.
2:内核终止旧的foo程序,并在一些必要的文件验证后启动新的foo程序.
3:如果一切正常,旧的foo程序将被删除.
现在您可以看到,在更新时,您的程序需要在同一设备上使用两次(旧设备和新设备).
我希望这能让我更深入地了解OTA编程的工作原理.
所以我现在将逐一回答你的问题:
1)要将文件分发到所有其他节点,请使用deluge.现在使用洪水确实很难使用.contiki邮件列表中的以下帖子给出了天空代码示例的基本概念.http://permalink.gmane.org/gmane.os.contiki.devel/4884.
2)每个mote需要运行一个运行大洪水应用程序的shell.并且一个汇聚节点(传输最新文件的节点)需要调用deluge_dessiminate()函数来分配(取消)新程序.
3)代码将存储在咖啡文件系统中.Deluge将自动(在deluge_dessiminate和天空节点上的大量应用程序的幕后)将新文件保存在天空节点的闪存上.完成此操作后,您需要使用ELF加载程序运行此程序.因为您需要您的程序是由contiki ELF_LOADER运行的ELF编译文件.
4)我认为你的意思是ROM?但是,是的,您需要额外的代码来支持OTA编程,并且您需要两倍于应用程序大小的空间.你说你需要的所有模块都可能需要在shell端编程.文件验证可以通过CRC检查您的文件来完成.
这确实是很多工作,我建议这样做是一个小步骤.
1:使用保存在咖啡文件系统上的ELF加载程序运行程序.
2:将您自己的(随机)文件从汇聚节点去除(大量)到其他节点
3:消除ELF文件.
4:使用ELF加载程序运行deluge_dessiminated文件.
和5:为其他人创建教程并分享知识!
我希望这会以任何方式帮助你.