EMIDE的介绍及翻译

上传人:工**** 文档编号:497966051 上传时间:2023-10-25 格式:DOCX 页数:11 大小:369.89KB
返回 下载 相关 举报
EMIDE的介绍及翻译_第1页
第1页 / 共11页
EMIDE的介绍及翻译_第2页
第2页 / 共11页
EMIDE的介绍及翻译_第3页
第3页 / 共11页
EMIDE的介绍及翻译_第4页
第4页 / 共11页
EMIDE的介绍及翻译_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《EMIDE的介绍及翻译》由会员分享,可在线阅读,更多相关《EMIDE的介绍及翻译(11页珍藏版)》请在金锄头文库上搜索。

1、简介无线传感器网络(WSNs)在广泛的适用领域的发挥了重要作用。然而编程和重组过程在 无线传感器网络中很复杂,这种结果源于在无线传感器网络中不同的硬件及软件平台,以及 在传输节点上有限的内存和能源资源,不稳定的无线传输过程等。因此,对于无线传感器网 络的用户,设计和实施有效的用户友好的集成开发环境是重要的。几个相关的机制已经实现, 如脚本语言的机器,动态链接机制、嵌入式Java虚拟机。但是这些方法不适合高度资源紧缺 传感器节点。在本文中,一个名叫EMIDE中间件实现提供一个用户友好的无线传感器网络的 IDE。这种中间件通过将应用程序的部分从一个底层系统中分离,简化了用户编程过程,提高 重编程效

2、率。此外,它对应用程序开发提供了足够的功能,而且对于内存和能源的要求也较 低。为了评估EMIDE的表现,本文比较了它与嵌入式Java虚拟机Contiki动态链接机制方 面资源消耗,应用程序代码大小和执行效率。事实表明, EMIDE 是一种有效地用户友好的 无线传感器网络IDE。即使在高度资源紧缺的传感器节点中也可以表现良好。无线传感器网络,在各种不同的领域,例如精准农业、工业监控和控制、智能医疗护理,智 能家居、军事战场监视等等发挥了重要作用。它的广泛适用的领域使无线传感器网络技术现 在成为一个关键和热点问题。在无线传感器网络节点开发时编程和重组是两个重要的阶段。编程过程中面临的挑战主 要集中

3、在两个方面,一是无线传感器网络的用户可能不是专家,另一个是硬件在无线传感器网 络和软件平台是多样的。重编程过程中,更新一个小代码的大小是另一个关键的挑战,因为代 码大小将会在能源消耗和新代码在无线传输中成功概率中有重要影响。因此,实现一个用户 友好的无线传感器网络集成开发环境(IDE)来应对这些挑战时重要的。此外,传感器节点大多 是配备有限内存和能源资源,因此任何信号针对这一目标应该有一个低资源要求。一个有效的方法来解决上面的挑战是开发一个中间件将整个软件的空间进入这两个应用 程序和系统的空间,并提供足够的从系统的服务的应用程序的一个空间。如图1 所描绘。通过这种方式,不仅应用程序编程过程将被

4、简化为无线传感器网络的用户只需要专注在应用 程序空间而不需要考虑底层系统的细节,并且通过只替换更改部分而不是所有代码也提高了 重编程的性能。在从系统中分离应用程序的部分已经有几个相关的机制发展出来,如脚本语言,可加载的 模块和嵌入Java虚拟机(EJVM)。然而,对于严格的资源有限的无线传感器节点这些方法内存 和能源资源消费太高。因此,实现高效的用户友好的无线传感器网络的IDE与低资源消耗是 本文的目标。构成本文的第一个是对于脚本语言,动态链接和 java 虚拟机在是否提供对于无线传感器 网络用户友好集中开发环境的性能评估。第二个是设计,实现并且评估一个新的高效中间件 EMIDE。此外,一个实

5、际的远程重编程工程也被提出及待解决。二 相关工作脚本语言,动态链接和EJVM都是将应用程序从低级系统中分离。因此,一个相比传统单 片机更友好的集中开发环境在此提供给用户A. 脚本语言脚本语言已经在几个不同的地方实现,例如TCL机,Python机等。它避免了程序编译过 程,鉴于在无线传感器网络节点的高有限资源要求。B. 动态链接 动态链接方法使用可加载的模块来执行编程和重编程,只有部分的系统在部署新程序时需要修改。它在一些操作系统中实现了,如Contiki, SOS等,这通常需要操纵系统支持。可加载模块不应该只包含代码和数据,也需要函数和变量的引用。在被装载到目标设备 , 这些引用应该决定物理地

6、址之前被执行。这个解决方法被一个在运行时的动态链接所操作, 并且一个有着所有全局变量和函数的符号名称表及相应的地址需要被创建和保留在系统核 心中虽然动态链接机制比单片机系统简化了编程和重编程过程,模块大小仍然比预链接更大, 这是由于在模块中包含额外的参考信息。此外,系统运行时的开销,无论能源消耗,执行时 间,或是内存需求也高于预链接模型。C. 嵌入式java虚拟机自从JAVA虚拟机通过应用高度抽象的java语言和在无线传感器网络中寻址使用字节码 来简化应用程序的编程,几种嵌入式java虚拟机被开发出来,例如TakaTuka VM,大吉岭 VM,KESOVM,LeJOS,NanoVM,simpl

7、eRTJ,Sentilla,Squawk 等等。simpleRTJ 是一个简单的实时的小内存占用及有着洁净空间的用于实现小型嵌入式的 java VM/OS 操纵系统,它被选择,研究和移植到了无线传感器网络的活动节点,用来评估 嵌入式java虚拟机的表现。它的基本描述如图2,这张图上它的所有关键特性都可以由任何 像样的 java 虚拟机实现,包括如下:1)小内存占用空间:SimpleRTJ不需要比18到24 kb ROM更多空间和约0.2 kb内存空间来运行。此外,它 使用优化的组标准库,在应用程序预编译过程中在类文件链接和替换所有的符号的引用与偏 移和索引。这些操作保持Java应用程序小内存占

8、用并且简化系统运行时体系结构,使EJVM 是能够被用在许多无线传感器网络平台,如配备活动节点的单片机AT91SAM7S256。2)作为一个独立的小型Java操作系统运行SimpleRTJ内置支持了管理Java堆内存应用程序执行,它可以动态分配内存空间的类实 例和方法帧,这使得它被用在没有实时操纵系统支持的独立目标设备。3)线程支持SimpleRTJ提供了线程支持与等待/通知同步和对象监视器锁。它使java线程可以执行 多个独立任务的,它使用周期中断(例如实时中断)实施先占式时间片线程切换。所有线程 都有相同的优先级的除了事件线程创建的javax.events.package。事件线程有优先于其

9、他的执 行顺序,因此,适当的时间句柄可以确保当事件被触发时的快速运行。有了线程支持,一个 灵活的编程环境将提供给无线传感器网络的用户。4)异步事件支持:处理异步事件对于嵌入式软件开发是非常重要的。在SimpleRTJ中,异步事件涉及很多 情况,如从数据接口中接收数据,对于输入数字信号和模拟信号的变换,还有一些需要软件 关注的变化。异步事件处理被封装在javax.events.package中。在事件类被实例化和适当的事 件和事件句柄注册后,线程进入休眠状态,只有当外部事件在系统的本地代码中调用才唤醒, 然后对于唤醒事件的句柄将会被调用。在simpleRTJ异步事件使得无线传感器网络的用户可 以

10、在应用程序中处理低级事件,这对于无线传感器网络应用开发是非常有意义的。5)垃圾收集支持simpleRTJ支持从java应用程序中收集未使用的对象。它在新类或新方法框架没有足够 空间被创建时自动调用。而且,如果空闲内存下降到一定水平,为了避免内存碎片和提高新 分配的效率堆压缩会被执行。6)异构性simpleRTJ完全实现了异常处理,并且对于java的编程接口也完全支持。此外,simpleRTJ 可以独立和配置许多启动配置选项,这使得它可以执行不同的 java 应用程序而没有每一次 都重新加载的必要。实验工作证明 simpleRTJ 可以帮助无线传感器网络用户通过使用流行并且熟悉的 java 语言

11、在传感器平台上设计程序,同时它的支持多任务编程,事件处理和从应用空间的异常处 理也改善了用户开发过程的性能。它已经证明它可以提供一个用户友好的无线传感器网络集 中开发环境,尤其是在异构的无线传感器的网络环境。但是,它同样具有一些缺点。首先, 即使做一个简单的led闪烁程序,它的java应用程序映像也会超过2kb,这相对于无线传感 器网络的重编程任务来说太大了。其次simpleRTJ的执行效率因为额外的解释操作会比本地 代码的执行效率低一些。这两点是嵌入式java虚拟机所固有的缺点。因此,对于高度资源 有限的无线传感器节点来说,嵌入式java虚拟机就显得有点过时了。三 高效的对用户友好的集中开发

12、环境动态链接和嵌入式java虚拟机的缺点激励我们设计和实现一个不仅对用户友好,同时也 适用于高度能源和内存有限节点的中间件。本文将介绍EMIDE, 个有效地中间件,足以 应付这些挑战。A. EMIDE的基本设计原则为了使EMIDE达到这些严格的要求,它的基本原则是设计如下:EMIDE将是一个将应用程序从系统部分剥离的中间件(中间层) 除了字节码使用本机代码,以避免额外的时间和精力消耗在解释过程。 使用预链接代码而不是动态链接模块以减少应用程序代码大小和降低内存和能源在引 用解析过程中的消耗使用与操作系统一致的应用程序编程语言。因为在嵌入式java虚拟机中,应用程序与系统空间中的语言不一样,是使

13、用java语言 的,因此在系统空间中会有一个新的运行时的环境被建立以便于代码的执行。使用相同的语 言的两个空间将避免这个问题和简化系统运行时体系结构。B. EMIDE的基本功能实现图 3 描述了 EMIDE 的基本功能实现。整个过程可以概括为四个步骤:1)用户和实现者函数声明:EMIDE 为每个系统空间到应用程序提供了函数接口。对于每个接口,应用程序的用户 函数和一个相应的系统实现函数应该分别在这两个空间中定义2)内存资源分配因为应用程序和系统代码将被执行在同一个目标设备,有必要在一个实时运行的系统环 境,并且这个系统储存在特定的ROM和RAM内存空间中实行预链接。3)链接操作预链接的优势在于

14、较小应用程序代码,高速执行速度,低资源消耗,因此预链接将会在 EMIDE 使用。然而,任何在系统项目的变化都可能使得应用程序用户函数变得毫无用处, 因为当应用程序被连接时,实现函数的地址将会变化。 EMIDE 通过提供一个应用程序和系 统空间之间的实现函数跳转表来解决这个问题。这个表将在一个固定的地址。这个表会将应 用程序用户函数链接到适当的地址而不是直接连接到系统实现函数。在这之后,系统重建函 数将不会影响到代码的执行,因为实现函数在跳转表内是不会改变的。4)输入参数的传递和返回 因为整个空间被中间件成两个空间,所以中间件将必须承担将应用程序函数参数输入到系统以及返回值的工作。在嵌入式jav

15、a虚拟机中,这项工作是由java方法中的帧堆栈进行 的。而在EMIDE中,不需要这一步,这是因为应用程序和系统是由相同的语言和编译器构 成,因此两个空间之间的代码执行没有任何障碍,可以简单的看做一个常见的系统功能图4显示了为实现扩展功能的EMIDE原理图。在应用程序空间,注册功能被提供到系统空间任务队列中。一旦一个应用程序任务被 注册,它将会成为一个等待由系统任务管理器调度的任务。分配各每个注册了的应用程序任务有两个参数。一个是任务优先级,它决定了将任务插 入到系统任务序列的哪个位置。一个具有高优先级的任务将会优先于其他具有低优先级的任 务执行。另一个参数是执行归因,这个参数可以指派任务是重复

16、执行还是一次执行。在一次 执行情况下,任务将会在执行完毕后从任务队列中删除,而对于重复执行模式,它将有系统 任务管理器按照一定的时间间隔调用,直到一个取消注册函数由应用程序调用。此外,任务队列管理系统内置于EMIDE中,以支持任务进入,返回和退出操纵。由于上述的设计和实现,应用程序和系统能都在函数调用和参数传递方面彼此交流。因 此在EMIDE必然可以支持在应用程序空间中支持处理低级中断事件。中断处理的注册和一 个通常任务的区别主要在于中断类型的参数的声明。该参数将用于将应用程序中断处理与一 个专用的系统中断处理所绑定。图 5 演示了一个支持多任务处理和在应用程序空间处理底层中断的实例程序Fi gure 5. Appictili on ex a nip le with muli-lsks tind low-le

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号