Contiki 无线编程

2023-12-31

我正在通过一个项目开始在天空微粒上使用 Contiki。我现在正在尝试让无线编程正常工作。
我一直在查看 example/sky-shell-exec 和 apps/shell/。我觉得我需要通过 sky-shell-exec 和可能的 test-deluge 或 codeprop 提供的功能的某种组合。然而,通读代码给我带来了一些概念上的障碍,涉及需要实现哪些代码以及已经提供了哪些代码才能获得一些无线编程功能(我对此很陌生,并且没有太多了解)嵌入式系统完全暴露)。我为我的问题有时含糊不清而道歉,但这是由于我普遍感到困惑,并且真的不知道如何更好地进行。我现在主要希望得到一些小东西(示例程序),它可以简单地向节点发送代码,然后使用发送的代码对该节点进行重新编程(例如,发送的代码可能只是 hello-world)。

1) 如何简单地通过无线方式向节点发送代码?我觉得 test-deluge 是无线编程问题的“无线”传输部分,但没有从代码中完全理解它。

2) 为了接收无线代码,应该在节点上运行什么代码?

3)我如何知道该代码存储在哪里,然后知道如何加载它?我觉得这一步或多或少是 sky-shell-exec 但又没有从代码中完全理解它。

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

我再次对任何无根据的无知表示歉意,我意识到还有另一个与此类似的线程,但我发现我需要对其中提到的每个组件进行更详细的解释(线程是:Contiki 的直播节目 https://stackoverflow.com/questions/21225480/on-the-air-programming-for-contiki).

Thanks


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:为其他人创建教程并分享知识!

我希望这能以任何方式帮助你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Contiki 无线编程 的相关文章

随机推荐

  • 如何使用 python 关闭程序?

    python 有没有办法关闭 Windows 应用程序 例如 Firefox 我知道如何启动应用程序 但现在我需要知道如何关闭应用程序 I have used subprocess comands for a while this prog
  • Matlab上3D数据的椭球拟合

    我正在研究一个3D体积 of CT肺部图像 为了检测结节 我需要为每个可疑结节拟合一个椭球模型 我该如何为此编写代码 结节是疑似肿瘤的物体 我的算法需要检查每个物体 并将其近似为椭球体 并根据椭球体参数计算8个特征来构建分类器 通过训练和测
  • Rails:切换用户 Gem 以及切换回原始用户的问题

    在我的应用程序中我正在使用switch user https github com flyerhzm switch user https github com flyerhzm switch user gem 允许管理员以另一个用户身份登录
  • BASH:基本 if then 和变量赋值

    我习惯了 csh 所以不得不使用 bash 有点令人恼火 这段代码有什么问题 if time gt 0300 time lt 0900 then mod 2 else mod 0 fi 按照标准应该是 if time gt 300 time
  • 有没有办法了解导致“_NSTouchBarFinderObservation”崩溃的原因?

    我的 Crashlytics 显示多个用户遇到以下崩溃 见下文 我能够重新创建这个的唯一方法 我怀疑用户正在这样做 是打开 Xcode Touch Bar 模拟器并在generations当应用程序运行时 以下设备和操作系统已报告崩溃 ma
  • 一个测试用例应该涵盖多少内容?

    到目前为止 我从未编写过正确的测试 只编写了测试成功后我会处理的小程序 我正在浏览Python的unittest网络上的模块和教程 但我不清楚 一个应该多少钱TestCase覆盖 我在网上看到过一些例子TestCase仅具有一种方法的类 以
  • 从 Postgres 和 jOOQ 中的分层表递归生成 JSON 树

    我在 Postgres 数据库中有一个分层表 例如category 结构很简单 如下所示 id parent id name 1 null A 2 null B 3 1 A1 4 3 A1a 5 3 A1b 6 2 B1 7 2 B2 我需
  • 当我需要其他内容时,BASH 脚本正在等待

    我的 bash 脚本需要一些帮助 bin bash zenity list title Select Server text Select the server to start radiolist column column Server
  • 如何收集实时推文? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何使用 Ruby 收集实时推文并将
  • Wicket 1.5(.2) 中的 url 更改时组件未重新加载?

    我第一次使用以下 URL 导航到我的应用程序 主页 0 用户 x 在调试模式下 我看到 wicket 很好地实例化了我的面板等 显然 如果我将 URL 更改为 主页 0 用户 y 那么什么也没有发生 面板不会重新初始化 对于新用户 gt 用
  • React 组件声明中“导出”的目的是什么?

    在 React ES6 中 为什么我有时看到这个吗 class Hello extends React Component 有时this export class Hello extends React Component 有何意义expo
  • 如何在protobuf中定义枚举的值和id? (原始java客户端)

    我对 protobuf 的使用很陌生 我计划编写带有枚举的 protobuf def 有什么方法可以在其中提供 id 值和描述 编译后我希望生成的枚举应该与下面的示例等效 enum Sample W 0 W P 0 P C 0 C B 0
  • Rails + devise:尝试删除用户帐户

    当我尝试在 Rails 应用程序中删除我的帐户时 我得到 没有路由匹配 users My View p We hate to see you go p 我的路线 user registration POST users format act
  • 如何为不同的根目录配置 xampp Web 服务器

    Web 目录是应用程序的所有公共文件和静态文件的所在地 包括图像 样式表和 JavaScript 文件 这也是前端控制器居住的地方 所以问题是当我安装并设置 xampp 时我的 web 目录是 xampp htdocs 我想将其设置为 xa
  • 将现有文件添加到不同的 Visual Studio 2010 项目

    是否可以将文件添加到位于不同目录中的 Visual Studio 项目中 但是将文件保留在这些目录中并在更新项目中的文件时更新这些文件 当我将现有文件添加到项目中时 它所做的只是将它们复制到项目中 然后更新复制的文件 而不是原始文件 有什么
  • 在脚本模块标记中使用 import 语句中的函数

    我正在尝试使用createPopup我使用导入的函数import我的脚本标签中的函数 但是 我总是收到错误消息 指出函数未定义 Uncaught ReferenceError createPopup is not defined 这是我的代
  • Xamarin Forms 自定义主题不起作用

    我有一个使用 Xamarin Forms 2 0 的 Android 应用程序 我制作了一个自定义主题来设置一些颜色 我创建了这些文件 资源 值 styles xml AndroidResource
  • Numpy dtype - 数据类型不理解

    我有一个数据框 我正在查看与每列关联的数据类型 当我跑步时 In 23 df dtype descr Out 24 u date
  • Ruby 中具有前瞻功能的正则表达式

    我当前的正则表达式之争是替换字符串中数字之前的所有逗号 然后 正则表达式必须忽略所有以下逗号 我已经在 rubular 上折腾了大约一个小时 但似乎没有什么效果 测试字符串 this is a sentence33 Here is anot
  • Contiki 无线编程

    我正在通过一个项目开始在天空微粒上使用 Contiki 我现在正在尝试让无线编程正常工作 我一直在查看 example sky shell exec 和 apps shell 我觉得我需要通过 sky shell exec 和可能的 tes