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 无线编程 的相关文章

  • 如何在c++中读取pcap文件来获取数据包信息?

    我想用 C 编写一个程序来读取 pcap 文件并获取数据包的信息 例如 len sourc ip flags 等 现在我找到了如下代码 我认为它会帮助我获取信息 但是我有一些疑问 首先我想知道应该将哪个库添加到我的程序中 然后什么是 pca
  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • 如何使用 UNIX shell 脚本删除平面文件的页眉和页脚记录?

    我有一个平面文件 如下所示 如何使用 UNIX shell 脚本从文件中删除页眉和页脚并重写同一文件 9 20050427 HEADER RECORD 0000000 00000 000000000 123456 00 654321 DAT
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • Cmake 链接共享库:包含库中的头文件时“没有这样的文件或目录”

    我正在学习使用 CMake 构建库 构建库的代码结构如下 include Test hpp ITest hpp interface src Test cpp ITest cpp 在 CMakeLists txt 中 我用来构建库的句子是 f
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • 如何使用 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