您的位置 首页 厂商

嵌入式多节点的无线批量程序更新体系规划(一)

一 总体设计和平台简介项目旨在实现多ARM节点通过无线通信完成对批量节点的程序烧录,如图2.1所示。系统分为上位机、发射接收模块和待烧录节点

  一 总体规划和渠道简介

  项目旨在完成多ARM节点经过无线通讯完成对批量节点的程序烧录,如图2.1所示。体系分为上位机、发射接纳模块和待烧录节点三个部分,上位机经过ID号挑选待烧录节点并经过无线模块向下播送烧录数据,各被挑选节点经过无线模块接纳烧录数据查看无误后存储。上位机软件设定待烧录节点的ID、烧录文件目录、发送数据包巨细、发送速率等参数后将数据打包传送到基站,基站经过无线发射模块播送数据。

  全体思维是运用已有的代码和方针代码进行比较。将两者的差异经过无线网络(802.15.4)播送出去。在每个承受节点依据收到的差异文件(也便是补丁文件patch),对原有代码进行批改(patching的进程)以到达更新程序的意图。

  总体上来说本项目有两大难点,涉及到奇妙的算法规划。

  1、怎么竭尽或许少的字节数,来表明不同代码之间的差异?

  2、怎么确保可靠性传输?

  关于问题1,咱们知道要待传输的字节数越少,对通讯的要求越低。更新程序的功率也会更高。而且少的字节数也意味着丢更少的包。关于问题2,因为咱们是要对代码进行批改,所以一个字节的过错或许就会形成整个程序的溃散。这对嵌入式程序,特别是运转在不计其数个节点上的程序是不行承受的,有必要确保100%的正确承受。除此两大难点(也是要害点)之外,还有一些其他附加要求。假如满意了能够进步体系的持久性。分别是:

  1、使竭尽或许小的RAM。因为嵌入式芯片的RAM遍及宝贵。

  2、耗费尽或许少的能量。

  3、更新速度尽或许的快。

  项目运用的硬件渠道是咱们克己的智能小车eMouse 。渠道选用 TI公司32位Stellaris LM3S1968微处理器,作业频率为50MHz,内含256 KB单周期Flash和64 KB单周期SRAM,flash支撑可由用户办理的块维护和数据编程;板上Zigbee模块经过串口与CPU通讯,模块仅供给MAC层服务,CPU与模块间以MAC帧的方式经过串口传递数据。eMouse外观如图2.2所示。

  项目开发体系环境为Ubuntu9.04,程序编译和下载工具分别为开源的sourcery G++和Openocd,用户界面选用java言语编写。

  以下章节将对体系规划作翔实的论说。

  二 程序更新规划与完成

  一些传统的更新办法重视代码自身的特色。比如以函数为根本的更新单位。在每个节点上运转一个动态链接器,将新的函数从头链接到原程序。其实代码自身能够将其视为一串二进制的文本文件。代码的更新便是从一串旧的文本更新为一串新的文本。

  为此咱们界说了一系列根本的更新操作指令,以及两个辅佐的索引指针:in_index以及out_index。in_index代表输入文件当时的索引值,而out_index代表输出文件当时的索引值。

  根本的指令如下:

  Copy:将in_index所指的字节复制到out_index处,而且in_index和out_index分别加1。

  Replace A:将当时out_index所指的字节用A来替换,而且in_index和out_index分别加1。

  Delete:in_index加1,out_index不变。实践为删去in_index所指的字节

  Insert A:在当时out_index处刺进A,in_index不变,out_index加1。

  Kill:表明删去in_index后一切的原程序代码。

  其间包括了如下的子问题:

  2.1 指令的表明

  经过上面所说的根本指令的组合,咱们能够表明出从一个旧文件到一个新文件的进程。随之带来了一个问题。这些指令应该怎么表明才干尽或许的下降补丁文件(指令的组合)的巨细?

  有几个需求留意的当地:

  假如有接连的Copy指令,咱们能够将其合并成一条指令,只要在Copy后加上表明长度的Length参数即可。

  同理,假如有接连的Delete指令,也能够将其合并成一条指令,只要在Delete后加上表明长度的Length参数即可。

  假如能够运用Replace指令,就不要用Delete和Insert指令的组合。这其实是另一重要的子问题:怎么依据这些指令发生尽或许少补丁文件?

  有五条根本指令,这样为了差异这五条指令,至少需求3个比特。

  因为大多数情况下,更新的大多数是程序的参数。也便是说Copy指令的数目远远大于其他指令。咱们界说这5条指令如下表所示:

表3.1

指令

操作码(最左端开端)

操作数的长度(紧跟操作码)

总长度(字节)

Copy

1

15

2

Delete

000

13

2

Replace

001XXXXX

8

2

Insert

010XXXXX

8

2

Kill

011XXXXX

8

2

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/136830.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部