资料介绍
一 总体设计和平台简介
项目旨在实现多ARM节点通过无线通信完成对批量节点的程序烧录,如图2.1所示。系统分为上位机、发射接收模块和待烧录节点三个部分,上位机通过ID号选择待烧录节点并通过无线模块向下广播烧录数据,各被选择节点通过无线模块接收烧录数据检查无误后存储。上位机软件设定待烧录节点的ID、烧录文件目录、发送数据包大小、发送速率等参数后将数据打包传送到基站,基站通过无线发射模块广播数据。

图2.1 多节点无线批量烧录示意
整体思想是利用已有的代码和目标代码进行比较。将两者的差异通过无线网络(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所示。
图2.2 硬件平台eMouse
项目开发系统环境为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个比特。
项目旨在实现多ARM节点通过无线通信完成对批量节点的程序烧录,如图2.1所示。系统分为上位机、发射接收模块和待烧录节点三个部分,上位机通过ID号选择待烧录节点并通过无线模块向下广播烧录数据,各被选择节点通过无线模块接收烧录数据检查无误后存储。上位机软件设定待烧录节点的ID、烧录文件目录、发送数据包大小、发送速率等参数后将数据打包传送到基站,基站通过无线发射模块广播数据。

图2.1 多节点无线批量烧录示意
整体思想是利用已有的代码和目标代码进行比较。将两者的差异通过无线网络(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所示。
图2.2 硬件平台eMouse
项目开发系统环境为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个比特。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 基于邻近节点分级的无线传感网络分簇路由算法 13次下载
- 无线传感器网络的中继节点部署方式 8次下载
- 无线传感器网络中节点自定位经典算法DV-Hop的研究改进说明 8次下载
- LM3S9B96+CC2520平台上无线通信节点的智能化设计的详细中文介绍 11次下载
- 基于电力通信网关键节点识别方法 0次下载
- 物联网移动节点匿名漫游认证 0次下载
- 一种光谱传感物联网节点的无线通信接口 0次下载
- 无线传感器网络中通信节点的信任模型 1次下载
- 基于ARM的WiFi无线通信终端的设计 15次下载
- 无线传感器网络节点实现模型 46次下载
- 无线传感器网络节点应用的硬件设计 34次下载
- SZ02系列Z-BEE无线通信设备使用手册 22次下载
- 工业短程无线网络通信节点的设计
- 无线通信的多址技术2
- 基于双口RAM的LonWorks智能通信节点设计
- CAN通信节点多时,如何减少寄生电容和保障节点数量? 796次阅读
- 基于微控制器和无线通信模块实现无线传感器网络节点的设计 3509次阅读
- 基于TinyOS操作系统实现无线传感器节点Mica的设计 1453次阅读
- 无线传感器网络节点定位是什么 7506次阅读
- 如何降低无线瓦斯传感器的节点能耗 1207次阅读
- 基于无线传感器网络节点模块化的SPI接口电路设计 1565次阅读
- 无线传感器节点功耗限制子系统的设计 958次阅读
- 无线传感器网络节点的总体设计 3494次阅读
- 无线传感器的节点组成及能耗分析 1.6w次阅读
- 基于无线传感器网络特点设计无线传感节点 3637次阅读
- 移动多Sink无线传感器网络监测系统 1834次阅读
- 无线自组网络节点硬件设计 ZigBee协议栈软件设计 9100次阅读
- 无线传感器网络微型节点的实现 1592次阅读
- 实现多ARM节点通过无线通信完成对批量节点的程序烧录 1271次阅读
- 基于Arduino的ZigBee无线传感节点的硬件设计 8921次阅读
下载排行
本周
- 1PC3103 低功耗电流模式PWM控制器技术手册
- 1.23 MB | 3次下载 | 免费
- 2L7805CV TO-220三端稳压IC规格书
- 0.71 MB | 1次下载 | 免费
- 3LoRa2021 全频段无线通讯模块规格书
- 814.22 KB | 1次下载 | 免费
- 4L7812CV TO-220三端稳压IC规格书
- 1.35 MB | 次下载 | 免费
- 5L7815CV TO-220三端稳压IC规格书
- 1.48 MB | 次下载 | 免费
- 6N-12电子倾斜仪指南
- 0.24 MB | 次下载 | 10 积分
- 7基于CP500S扫描测头的三坐标测量系统:复杂曲面零件解决方案
- 0.35 MB | 次下载 | 免费
- 8STM32H747xI/G 英文数据手册
- 5.09 MB | 次下载 | 免费
本月
- 1PFC电路与BOOST电路设计实例分享
- 1.83 MB | 18次下载 | 4 积分
- 2电源测试报告-基于 国民技术 N32L406 和杰华特 JW3376+3330 的 BMS 方案
- 6.47 MB | 17次下载 | 免费
- 3世平基于灵动微 SPIN560C 的低压无刷电机应用方案
- 10.93 MB | 11次下载 | 免费
- 4900MHz全双工无线发射器参考设计原理图资料
- 0.40 MB | 6次下载 | 免费
- 5PWM控制器的控制方法
- 0.39 MB | 3次下载 | 4 积分
- 6900MHz全双工无线发射器参考设计
- 0.15 MB | 3次下载 | 1 积分
- 7美的电磁炉TM-S1-20B PN8124F+CHK S009资料图
- 0.28 MB | 3次下载 | 10 积分
- 8FS313B USB 的 PD和QC 快充协议电压诱骗控制器规格书
- 2.61 MB | 3次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935134次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420064次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233089次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191424次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183352次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81602次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73819次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65991次下载 | 10 积分
电子发烧友App






创作
发文章
发帖
提问
发资料
发视频
上传资料赚积分
评论