一 总体设计和平台简介
项目旨在实现多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个比特。
由于大多数情况下,更新的大多数是程序的参数。也就是说copy命令的数目远远大于其他命令。我们定义这5条命令如下表所示:
【展会邀请】凯米斯科技与您相约第24届中国环博会!
华为与意法半导体合作补充国产EDA短板
医疗机器人市场规模及增速分析
ST MEMS制程协助Blast Motion开发高精准度动作感测器
互联网大数据如何更深层次的去理解
实现多ARM节点通过无线通信完成对批量节点的程序烧录
LR645G的工作原理,基于LR645G构建的固态电源电路
三大运营商在4G网络下载速率方面中国联通下载速率位居第一
大家对电动缸的了解和看法是什么 电动缸工作原理是什么
集成电路制造,如何理解电子标签与RFID射频识别系统
L-com诺通现货供应适用于恶劣环境的防水USB 3.0线缆组件
高亮度LED设计面临的挑战
如何检测差分信号总线上的有效数据传输
集成电路引脚的识别
霍尔传感器UGN3113U构成的测速电路
原来电流信号是这样采集的!
交换机星特性 | M-LAG加持园区交换机,实现十倍可靠高品质业务保障
苹果计划2021年推出Apple silicon处理器
Ansible是什么 ?ansible架构图
静电防护直接动手,设计与整改相辅相成!