首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >contiki空中编程

contiki空中编程
EN

Stack Overflow用户
提问于 2014-03-18 15:16:28
回答 2查看 2.4K关注 0票数 5

我正在通过一个项目开始contiki在天空微尘上的工作。我现在正试着从空中编程中解脱出来去工作。

我一直在查看示例/sky-shell-exec和apps/shell/。我觉得我需要把通过sky-shell-exec提供的功能和可能的test-deluge或codeprop结合起来。然而,通读代码给我带来了一些概念上的障碍,比如为了获得一些空中编程功能,需要实现哪些代码以及已经提供了哪些代码(我对此非常陌生,没有太多嵌入式系统的经验)。我为我的问题有时含糊不清道歉,但这是因为我普遍的困惑,真的不知道如何更好地进行。我主要是找一些小的(示例程序)现在工作,简单地可以发送代码到微尘,然后微尘被重新编程使用发送的代码(例如,发送的代码可能只是hello-world)。

1)如何简单地通过无线方式向微尘发送代码?我觉得测试泛滥是空中编程问题的“无线”传输部分,但从代码中并没有完全理解它。

2)应该在微尘上运行什么代码才能通过空中接收代码?

3)我如何知道这些代码存储在哪里,然后知道如何加载它?

4)我在网上读到了很多东西,说如果代码库很大,那么无线编程是很困难的,因为ram是有限的。当代码被无线传输时,我通常将代码存储在哪里,以及如何知道/验证它在那里?另外,我怎么才能简单地知道我是否会因为代码大小而出现内存存储问题(最终对于项目来说,需要传输大量的代码库,而不仅仅是单个模块)?

我再次为任何不必要的无知道歉,我意识到还有另一个与此类似的线程,但我发现我需要对其中提到的每个组件进行更详细的解释(线程是:On the Air programming for Contiki)。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-04-03 17:22:57

要使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

2)每个微尘都需要一个shell来运行,以便运行洪水应用程序。并且一个汇聚节点(发送最新文件的节点)需要调用deluge_dessiminate()函数来分发(分发)新程序。

3)代码将存储在咖啡文件系统中。Deluge会自动(在你的天空节点上的deluge_dessiminate和deluge应用程序的幕后)将新文件保存到天空节点的闪存中。完成此操作后,您需要使用ELF加载器运行此程序。因为你需要你的程序是一个由contiki ELF_LOADER运行的ELF编译文件。

4)我想你是指ROM吧?但是,是的,您需要额外的代码来支持OTA编程,并且需要两倍于应用程序大小的空间。您说需要的所有模块可能都需要在shell端进行编程。文件验证可以通过CRC检查您的文件来完成。

这确实是大量的工作,我建议这样做是很小的步骤。

1:使用保存在咖啡文件系统上的ELF加载器运行程序。

2:将你自己的(随机)文件从汇聚节点转移到其他节点

3:设计ELF文件。

4:使用ELF loader运行deluge_dessiminated文件。

和5:为其他人创建一个教程,并分享知识!

我希望这对你有任何帮助。

票数 5
EN

Stack Overflow用户

发布于 2016-06-24 11:06:56

当我自己尝试在Contiki中实现OTA时,我无法告诉你有多少次我回到了这个帖子。我知道这是一个老生常谈的问题,但是对于任何正在寻找工作示例的人来说,我通过CoAP (最初是超文本传输协议)为CC2650实现了OTA,服务器在NodeJS中。

我可以说得更详细一些,但您可以直接阅读教程:http://marksolters.com/programming/2016/06/07/contiki-ota.html

它抽象地讨论了镜像的体系结构、传输机制和下载验证,因此信息并不是唯一地绑定到CC2650上。

我没有使用动态链接。我静态地链接了我的二进制文件,并开发了一个引导加载程序,它可以将它们写入一个已知的闪存地址。我从来没有在康提基见过elfloader的工作。

以下是Contiki示例来源:https://github.com/msolters/contiki/tree/master/examples/cc26xx-ota-bootloader

希望这能有所帮助!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22472638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档