TinyOS在CC2430平台上的移植与实现(设计成果+说明书+任务书+开通报告)_第1页
TinyOS在CC2430平台上的移植与实现(设计成果+说明书+任务书+开通报告)_第2页
TinyOS在CC2430平台上的移植与实现(设计成果+说明书+任务书+开通报告)_第3页
TinyOS在CC2430平台上的移植与实现(设计成果+说明书+任务书+开通报告)_第4页
TinyOS在CC2430平台上的移植与实现(设计成果+说明书+任务书+开通报告)_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要由于无线传感器网络节点的硬件资源有限,使得节点上的嵌入式操作系统必须在有限的硬件资源下实现对节点的高效管理。TinyOS就是针对现代无线传感网络而设计的操作系统,能够突破传感器存储资源少的限制,可有效地运行在无线传感器网络上并去执行相应的管理工作。在对TinyOS中的组件化模型及nesC编译过程进行了深入分析的基础上,针对CC2430芯片设计了移植方案。本文设计的TinyOS移植方案采用了WindowsXP下的配置,利用Cygwin软件模拟Linux环境,8051编译器选用的是Keil软件。搭建完开发环境之后,对底层文件进行配置。最后通过一个程序测试系统移植成功。在此基础上,利用nesC语言编写程序,完成无线组网功能。关键词无线传感器网络,嵌入式操作系统,CC2430,TinyOS移植,nesC语言AbstractSincetheresourcesofwirelesssensornetworknodehardwarearelimited,whichmaketheoperatingsystemembeddedinthenodesmustmanagethenodesefficientlywithlimitedhardwareresources.TinyOSisanoperatingsystemdesignedforthemodernwirelesssensornetworks,whichcanbreakthelimitoffewstorageresourcesofrestrictionssensors,runeffectivelyonwirelesssensornetworksandperformtheappropriatemanagement.Basedonin-depthanalysisofthemodularmodelandtheprocessofnesCcompilationintheTinyOS,thetransplantprogramforCC2430chipisdesigned.TinyOStransplantationprogramisdesignedtotheconfigurationonWindowsXP,usingtheLinuxsimulationenvironmentsoftwarecalledCygwin.Thechoiceofthe8051compilerisKeil.Aftercompletingthedevelopmentofenvironment,configurationfilesarebuiltontheunderlying.Finally,aprogramisusedtotestthesystemtransplantation.Basedonthese,thenesCprogramminglanguageisusedtocompletewirelessnetworkingcapabilities.KeywordsWirelessSensorNetwork,EmbeddedOperatingSystem,CC2430,TinyOSTransplantation,NesCLanguage目录1引言.11.1研究背景及研究意义.11.2国内外研究现状.11.3本文主要研究内容.32无线传感器网络嵌入式操作系统.32.1无线传感器网络体系结构及对操作系统的要求.32.2常见的无线传感器网络操作系统.52.3TinyOS无线传感器网络操作系统.62.4小结.83TinyOS的移植方案.83.1TinyOS系统移植方案设计.83.2准备工作.93.3开发环境具体搭建过程.103.4移植配置.153.5测试移植是否成功.203.6小结.244TinyOS程序设计.244.1编程语言nesC.254.2温度采集实例.274.3实例验证.304.4小结.30结论.31致谢.33参考文献.34附录A测试程序.36附录B温度采集程序.371引言1.1研究背景及研究意义无线传感器网络(WirelessSensorNetwork,WSN)技术是当前在国际上备受关注的、涉及多学科高度交叉、知识高度集成的前沿热点研究领域1。无线传感器网络就是由部署在监测区域内大量的廉价微型传感器节点组成,通过无线通信方式形成的一个多跳的自组织的网络系统,其目的是协作的感知、采集和处理网络覆盖区域中感知对象的信息并发送给观察者2。从而实现物理世界、计算世界以及人类社会三元世界的连通。无线传感器网络是继因特网之后,将对21世纪人类生活方式产生重大影响的IT热点技术3。当前,对WSN的研究主要集中在通信协议上,约占研究点的35%;其次是能耗管理,约占16%;再次是定位算法、体系结构设计和可靠性研究,三者共占研究点的24%,而对于系统软件尤其是操作系统的研究相对较少。然而,WSN的操作系统(WSNOS)是WSN系统的基本软件环境,是众多WSN应用软件开发的基础,它的高效性、灵活性和实时性直接影响到系统的性能。所以针对无线传感器网络节点操作系统的研究与应用具有非常宽广的空间4。同其他操作系统一样,无线传感器网络操作系统运行在传感器网络节点上,负责管理节点的软硬资源,从而实现对物理资源的抽象和提供高通用函数的实现。如果没有传感器网络操作系统,程序员就必须考虑节点硬件底层的实现,这无异给传感器网络应用的开发带来了困难。若是能使程序员使用传感器网络操作系统提供的构件接口直接开发应用程序,这将大大加快无线传感器网络应用的开发速度。因而开发高效、易用的无线传感器网络操作系统不仅具有重要的科研理论价值,同时也具有现实的指导意义5。1.2国内外研究现状近年来各大学及科研机构不断开发出具有多种功能的WSN操作系统。大多数的操作系统都使用事件驱动的编程模型,典型的有TinyOS、Contiki、EYESOS、SOS等。其中,又可以按照内核调度策略分成两类:一类是非抢占式的操作系统,如TinyOS、EYESOS等;另一类是抢占式操作系统,如Contiki、MANTISOS等。另外,多个操作系统又作了很多不同程度的扩展,比如Contiki支持动态链接、动态下载、Java编译器等,MANTISOS提供动态内存分配等。由于WSN操作系统属于新兴研究,没有统一的标准,所以总存在一些不足,并且由于不断出现新的设计目标和应用需求,新的操作系统仍然不断地被提出6。目前,最著名的WSN操作系统是加州大学伯克利分校研究开发的TinyOS操作系统6,它也是WSN操作系统领域内事实上的标准。TinyOS提供了组件化的软件框架、事件驱动并提供并发处理,在处理能力和内存资源受限的情况下能够完成不同的应用,非常适合WSN的特点和应用需求。研究TinyOS,根据操作系统设计目标对TinyOS的某些方面作一定的改进对于进一步促进WSN的发展是非常必要的。近年来,我国的一些科研机构虽然没有开发出WSN操作系统,与国外相比略有落后,但已经有很多大学生,尤其是研究生,在导师的指导下深入研究了TinyOS。重庆大学杨红远,完成了基于气敏传感器的无线电子鼻传感器节点的实现7。针对传感器节点硬件平台进行了模块化设计,实现了节点的硬件平台。使用TinyOS完成了节点的软件程序设计。在使用过程中,体现了TinyOS操作系统在软件体系结构有助于提高无线传感器网络的性能,发挥硬件的特点,降低其功耗,简化应用程序的开发的优势。武汉理工大学黄向骥,设计的智能家居8软件方面选择了将TinyOS系统移植到了CC2430平台上,并编写了传感器节点的收发程序。南京理工大学吉安龙9,所设计的基于TinyOS的图像无线传输系统能够稳定运行,完成了图像采集、无线传输与显示,为进一步在大范围无线网络中传输大量数据的研究奠定了基础。依据现有典型平台Micaz的情况,成功地将TinyOS移植到实验室开发的节点平台上,为了上层应用的开发的需要与方便,在TinyOS中设计了射频协议栈,完成了对射频芯片CC2420的驱动。吉林大学李赞飞10,设计了基于WSN的燃气无线抄表系统,选用TinyOS作为节点的嵌入式操作系统,采用nesC编程语言进行软件开发。适应了无线传感器网络的节点性能限制,低功耗要求,对无线通信模块的支持要求。由于TinyOS很适合WSN,现在研究和使用TinyOS的人越来越多。目前TinyOS在WSN操作系统领域处于主导地位,已经可以运行在很多硬件平台之上,例如:Telos(RevA),Telos(RevB),Mica,Mica2,Mica2Dot,欧洲的EYES,Crossbow的Micaz等等11。现在也有人成功的将TinyOS移植到了CC2430平台上,如武汉理工大学的黄向骥。1.3本文主要研究内容本论文的工作是围绕着无线传感器网络嵌入式操作系统移植这一崭新的课题进行的。在对TinyOS中的组件化模型及nesC编译过程进行了深入分析的基础上,针对CC2430芯片设计了移植方案。本文设计的TinyOS移植方案采用了WindowsXP下的配置,利用Cygwin软件模拟Linux环境,8051编译器选用的是Keil软件。搭建完开发环境之后,对底层文件进行配置。最后通过一个程序测试系统移植成功。论文组织如下:第一章主要介绍研究背景和研究意义,简单介绍了国内外研究现状。第二章论述无线传感器网络网络体系结构,依据无线传感器网络的基本特征引出无线传感器网络节点对嵌入式操作系统的需求,并比较了现有的常用的几种操作系统,最后重点介绍了TinyOS。第三章在对TinyOS进行深入的研究的基础上,提出了TinyOS的移植方案。实现了TinyOS开发环境的搭建和移植的配置。第四章在深入学习TinyOS编程技巧和nesC语言的基础上,编写了采集片内温度的程序,并实现点对点通信。2无线传感器网络嵌入式操作系统2.1无线传感器网络体系结构及对操作系统的要求2.1.1无线传感器网络体系结构及特征无线传感器网络通常由传感器节点、汇聚节点以及用户监控系统组成。大量传感器节点随机部署在某一特定监测区域内或者附近,能够以自组织方式构成网络。节点把感知、采集到该区域中的数据通过其他节点逐跳地进行传输,数据到达汇聚节点后,汇聚节点利用其它通信方式(如互联网、通信卫星)传到监控系统。用户收到数据后,除了可以根据需要对数据进行相应的处理,还可以利用监控系统对一传感器网络进行系统管理以及发布网络监测任务等13,如图2-1所示。相对于传统无线网络,WSN具有一些明显的特征:(1)网络中的传感器节点数量众多、密度高,单位面积所拥有的网络节点数远大于传统的无线网络。(2)传感器节点由电池供电,节点能量有限。由于节点数量多,而且无线传感图2-1传感器网络的网络结构器网络往往应用于人烟荒芜的地方或人们难以直接操作的地方,因此更换传感器节点电池是不现实的。这决定了传感器节点生命和网络寿命的有限性。(3)网络节点间采用自组织的通信方式。传感器节点是自主的、自治的,节点之间以AdHoc方式通信,不同于传统无线网络的中心控制通信模式。(4)网络拓扑易变化。由于节点能量有限,节点易出故障,导致无线传感器网络拓扑信息变化快速。(5)网络应具备容错能力。传感器节点所处的环境通常是恶劣的(如噪音多、风吹雨淋等),导致节点易受干扰,易出错。这要求无线传感器网络应具有容错能力才会有应用前景。2.1.2无线传感器网络对操作系统的要求无线传感器网络是一种分布式的自组织网络计算机系统,由于它的特殊性,致其对操作系统的需求相对于传统计算机系统有较大的差异。因此,需要针对传感器网络应用的多样性、硬件功能有限、资源受限、节点微型化和分布式任务等特点,研究和设计新的基于传感器网络的操作系统和相关软件12。这就决定了网络节点的操作系统设计应满足如下要求:(1)小代码量。由于节点的内存有限,因此操作系统核心代码量必须比较小,使其可以在有限的空间中具备高效管理硬件的能力。(2)模块化。无线传感器网络设计的趋势是针对特定的应用而并不是普遍的应用,不同的应用所需要的硬件平台是不相同的。随着无线传感器网络的广泛应用,节点构成的变化是巨大的。在特定的硬件平台上,根据不同的应用快速便利地结合软件模块实现应用是非常重要的。(3)低功耗。WSN的大多数节点采用电池供电。由于节点数量众多以及节点被散布的环境使更换节点的电池是不可行的,甚至是不可能的,因此低功耗的操作将延长整个网络的生命周期,是操作系统设计必须满足的条件。(4)并发操作性。在传感器网络的节点上存在着大量的并发操作,如数据采样、数据处理、数据转发可能同时进行。操作系统需要具备支持严格并发操作的能力。(5)健壮性。WSN节点数量众多以及运行环境特殊,要求运行在单个节点上的操作系统不但健壮,而且应该便利地适应于可靠的分布式应用的发展。(6)容错性。传感器网络中的传感器经常会由于周围环境或电源耗尽等原因而失效。由于环境或其他原因,物理地维护或替换失效传感器常常是十分困难或不可能的14。2.1.3无线传感器网络操作系统的特点根据无线传感器网络对操作系统的特殊要求,我们在选用嵌入式操作系统时就得考虑到这些。经过总结,嵌入式操作系统应该具备以下几个特点:(1)基于可重用组件的体系结构。(2)使用事件驱动模型,通过事件触发来唤醒CPU工作。(3)单一任务栈。(4)内核非常简单,甚至在严格意义上说,称不上内核。(5)没有进程管理和虚拟存储15。2.2常见的无线传感器网络操作系统无线传感器网络的操作系统是无线传感器网络中的一项关键技术,是管理和操作设备的系统软件支持。它不仅具有传统操作系统的功能,负责管理系统中的软硬件,为用户提供应用开发和运行的平台13。目前针对无线传感器网络开发的专用操作系统有TinyOS、MagnetOS、SOS、MANTIS、SenOS、PEEROS等。表1内容是简单地对比常用的几个操作系统的特点。目前,在众多的无线传感器操作系统中,TinyOS是使用最广泛的,已经成为了很多系统的设计参考。TinyOS操作系统是典型的WSN操作系统,本文对它提出了移植方案,并在具体的硬件平台上对移植方案进行了实施14。表1几种操作系统的对比系统特征TinyOSSOSMANTISOS编程机制事件驱动事件驱动线程驱动任务调度FIFO优先级优先级内存管理静态静态静态功耗处理器能量管理外设能量管理处理器能量管理处理器能量管理外设能量管理系统执行模型组件模块线程实时性低较高高模拟服务提供提供提供2.3TinyOS无线传感器网络操作系统针对嵌入式操作系统的特点,美国加州大学伯克利分校开发了开放源代码的嵌入式操作系统TinyOS,该操作系统能较好的适应无线传感器网络的特点。TinyOS已被多方视为WSN的标准运行平台,它采用nesC语言,实现了通常操作系统的基本功能和通信部分协议栈及应用功能,其内核程序和内存的需求非常小,很适合无线传感器网络的应用。(1)主动消息通信模式TinyOS采用了主动消息通信模式,上层的应用程序会根据消息类型的不同,进而选择不同的处理函数,主动消息通信是基于事件驱动的,任何任务的触发都是事件引起的。所以TinyOS中的系统模块可以快速响应基于主动消息协议的通信层传来的通信事件,所以微处理器可以省下很多的系统资源,减少运算时间。(2)组件模型TinyOS组件模型是高效的,组件分为配件和模块,它们都是为了完成一个功能而组合在一起的,同时为了使它们具备通用性,还规定了一些标准接口。各种不同的组件根据需要通过接口插接起来,就能实现不同的应用,达到结构模块的灵活配置目的,方便移植。当系统运行时,会调用任务调度器(其实是一个任务队列),任务调度器再调用各种组件里标准接口里的程序。只要标准接口的被调用者不同,所需的功能也会不同,但对调用者来说,它是只关注最后返回的结果的,而不关注是哪个组件来完成的。组件模型的代码组织方式允许程序员方便快捷的将自己所需要的组件根据需要像堆积木一样组合到自己的实际应用程序中。这种组织方式提高了代码的通用性和可Main组件应用组件硬件组件传感器组件执行组件通信组件图2-2TinyOS程序框架示意图移植性。为了达到更好的效果,每一个组件的代码核心尽量小,既方便功能的组合,又适应节点存储资源少的特点。所有适合复用的代码结构都是分层设计的,nesC组件也不例外,在操作系统TinyOS中可简单地分为:硬件HAL组件、功能组件(包括传感组件、执行组件、通信组件)和应用层组件三种类型,结构如图2-2所示。下层组件接收到中断事件后或受到触发后向上层组件通知事件。上层组件在处理事件的同时,调用下层组件来完成任务。(3)进程调度为了适应传感器节点的资源有限的特点,TinyOS使用任务调度和事件驱动并发调度模型。任务适合用在对于时间要求不高的应用中,TinyOS的任务是程序的常态执行状态,在任务的执行中,是可以被中断打断而去响应事件的。任务是平等的,执行顺序是先进先出顺序执行,不能抢占。TinyOS的任务调度是FIFO队列结构,资源也是预先分配,队列长度为7。为了让任务有效的进行,要求程序员保证每一个任务的执行时间要短,将一个大任务进行细分,在前一个小任务的结束,根据需要将下一个小任务压入队列。在创建任务时,是可以设置任务优先级的,如果压入的任务优先级最高,则会插到队列的头部,其它的任务会向后移,如果是满队列,那么最后一个任务就会丢弃。事件的最初触发都是基于微处理器的中断服务程序,和时效性要求高的应用中,任何一个任务都可以被事件打断,比它优先级低的事件也会被打断。2.4小结本章主要介绍了WSN的特征和对操作系统的要求,重点介绍了TinyOS。无线传感器网络的特殊性决定了嵌入式操作系统的特殊性,针对无线传感器网络节点系统资源有限和高效运行的特点,加州大学伯克利分校科研人员设计的TinyOS不但满足了WSN的特殊要求,其自身又具有明显的优势。在设计TinyOS微型操作系统的过程中,引入了轻量线程、主动消息、事件驱动模式、基于组件编程、硬件抽象层和并行处理和研究成果,使之更好的满足无线传感器网络节点运行的特点。3TinyOS的移植方案3.1TinyOS系统移植方案设计NesC语言是C语言的一个扩展,设计这种语言的初衷是实现结构化概念和基于事件的执行模式。gcc是一个驱动程序,它通过调用一系列其他的程序来编译,汇编和连接。gcc负责解释命令行参数,并根据这些参数来决定它该调用什么程序,并传递什么样的命令行参数给被调用的程序3。TinyOS移植首先要考虑的问题是开发环境与工具链的选择。由于nesC预处理器生成的代码是配合gcc生成的,但是gcc编译器并不支持8051,因此需要寻找专门的8051编译器进行TinyOS的移植和开发。在Windows和Linux两大主要平台上有许多8051编译器,其中使用最广泛并且经常进行更新的有2种:Keil和SDCC(SmallDeviceCComplier)。由于SDCC是一个新兴的开源项目,因此在移植过程中经常会出现许多问题,使一些模块无法正常工作。而且在调试中,SDCC只是简单地驻留在0地址,当单步执行代码时也没有任何调试信息。相比于SDCC,Keil提供了一套良好的开发调试环境,因此,最终选择使用Keil开发工具进行移植工作。根据TinyOS移植的开发环境的要求,本文设计的编译工具链如图3-1所示。它基于TinyOS2.x、nesC1.3.1和KeiluVision2。移植过程在WindowsXP下的Cygwin中进行。NesC程序经过编译后生成app.c文件,它包含了运行TinyOS应用程序所需要的全部代码,但是该文件不能直接编译到8051平台上运行,因此需要对输出文件app.c进行修改。通过语法编辑脚本对app.c进行变换生成App.mangled.c作为Keil编译器的输入,生成app.hex后通过仿真器写入CC2430芯片运行。App.hexApp.ncApp.cAesCMangleAppcKeil仿真器CC2430图3-1编译工具链3.2准备工作3.2.1软件(1)Java开发环境:JDK1.5;(2)8051编译器:KeiluVision2;(3)下载工具:Setup_SmartRFProgr_1.7.1.exe;(4)Unix模拟环境:Cygwin;(5)NesC编译工具:nesc-1.3.1-1.cygwin.i386.rpm;(6)TinyOS相关工具:a)tinyos-deputy-1.1-1.cygwin.i386.rpm;b)tinyos-tools-1.4.0-3.cygwin.i386.rpm;c)tinyos-2.1.1-3.cygwin.noarch.rpm;(7)网络仿真工具:graphviz-1.10.exe。TinyOS-2.x可以在Linux和WindowsXP两种平台下安装配置。在WindowsXP平台下需要能提供Linux命令界面的Cygwin工具,本平台采用了WindowsXP下的配置。Cygwin是Windows平台上运行的Unix(Linux)模拟环境,是CygnusSolutions公司开发的自由软件,Cygwin包括GNU、Cygnus及Windows。Cygnus首先把gcc,gdb,gas等开发工具进行了改进,使它们能够生成并解释Win32的目标文件。通过编写一个共享库(就是Cygwindll),把Win32API中没有的Unix风格的调用(如fork,spawn,signals,select,sockets等)封装在里面,即基于Win32API写一个Unix系统库的模拟层。然后,把这些工具的源代码和共享库连接到一起,就可以使用Unix主机上的交叉编译器来生成可以在Windows平台上运行的工具集。以这些移植到Windows平台上的开发工具为基础,Cygnus逐步把其他的工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到Windows上来。这样,在Windows平台上运行bash和开发工具、用户工具,感觉好像在Unix上工作。对于学习Unix/Linux操作环境,或者从Unix到Windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用。3.2.2硬件(1)硬件平台CC2430TinyOS已经可以很好的应用于Mica系列硬件平台,现在有很多人致力于将TinyOS向使用8051系列MCU的传感器硬件平台移植的工作,例如CC2430。CC2430芯片在单个芯片上整合了低功耗8051微控制器内核、高性能2.4GHz直接序列扩频射频收发器、128KB可编程闪存、8KB的静态存储器、1个通用16位定时器、2个8位定时器、1个媒体访问控制定时器、具有8路输入814位的模拟数字转换器、2个支持多种通信协议的异步收发器和21个通用I/O引脚。工作电流损耗为27mA,在接收和发射模式下,电流损耗低于27mA和25mA,能在超短时间内完成休眠模式到主动模式的转换,特别适合要求电池寿命极长的应用。该芯片不需要专利授权使用费,在很多应用环境下可以很容易地进行部署并完成任务。(2)仿真器下载.hex文件的仿真器用IAR软件支持的仿真器就可以了。3.3开发环境具体搭建过程3.3.1JDK1.5的安装JDK是整个Java的核心,包括了Java运行环境,一堆Java工具和Java基础的类库(rt.jar)。SUN公司不断对它进行升级,发布不同的版本,JDK1.5是Sun公司后来发行的版本也就是JDK5.0(JDK1.5更名后)。TinyOS中有很多程序使用java语言编写的,例如读串口的程序MsgReader,所以需要安装JDK软件。由于JDK6.0是测试版本,通过最后的测试证明不和TinyOS2.x兼容,会有警告,所以选择安装JDK5.0。从官方网站/technetwork/java/javase/downloads/index-jdk5-jsp-142662.html上下载JDK1.5。双击软件开始安装,根据提示选择点击下一步。安装路径是任意的。安装完成之后,配置环境变量。3.3.2Keil的安装随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。双击Keil软件开始安装,根据提示点击下一步,不需要特殊设置。注意事项:路径必须是“C:KeilC51”。完成后在C:KeilC51BIN目录下应该有:C51.exe,BL51.EXE,OH51.EXE,LX51.exe,Ohx51.exe等文件,在后面进行TinyOS工程的编译时会用到这些文件。如果没有,后面应用的时候肯定会出错。3.3.3SmartRFFlashProgrammer的安装SmartRFFlashProgrammer工具软件可被用来通过使用仿真器/调试器来将.hex文件下载到TI公司的片上系统微控制器的Flash存储器。安装过程按照提示一步一步进行就可以了,不需要特殊设置。3.3.4Cygwin的安装将压缩包cygwin2.510.2.2.iso解压后,文件夹里有五个文件。分别是http%3a%2f%2%2fsourceware%2fcygwin、.html、setup.exe、setup.log、setup.log.full。(1)双击setup.exe开始安装。(2)安装方法有3种:InstallfromInternet(直接从互联网上安装);DownloadfromInternet(从互联网上下载软件包);InstallfromLocalDirectory(从本地目录安装)。因为已经将软件包下载到计算机中,所以选用本地目录安装。如图3-2所示,单击“下一步”继续安装。图3-2本地目录安装(3)选择软件要安装的位置以及安装参数,如图3-3所示,单击“下一步”。由于软件比较大,建议安装在D盘。图3-3设置安装参数(4)选择从网上下载的软件包解压缩后所在的位置,如图3-3所示,继续单击“下一步”。图3-3选择软件包所在目录(5)检查软件包的组成部分,选择要安装的组件,可以全部安装。如图3-4所示,全部选中,用鼠标点击“default”变成“install”,然后安装。图3-4选择需要安装的包(6)启动桌面上的Cygwin快捷图标,Cygwin第一次运行会设置一些东西,并创建一个home目录,里面创建了一个用户,名为Windows系统的用户的名称Administrator。注意事项:整个安装过程很慢,安装到99%时,几乎停止不前,所以不要认为安装中止或是有误而进行取消的操作。安装完成后,在Cygwin根目录下创建一个opt目录,后面会用到。3.3.5TinyOS的安装(1)将软件包:nesc-1.3.1-1.cygwin.i386.rpm;tinyos-deputy-1.1-1.cygwin.i386.rpm;tinyos-tools-1.4.0-3.cygwin.i386.rpm;tinyos-2.1.1-3.cygwin.noarch.rpm;拷贝到D:CygwinhomeAdministrator目录下。进入到该目录,输入命令:$cdD:cygwin/home/Administrator$ls可以显示出这四个文件。(2)在D:cygwin/home/Administrator目录下安装rpm包,输入命令:$rpm-ivhnesc-1.3.1-1.cygwin.i386.rpm$rpm-ivhtinyos-tools-1.4.0-3.cygwin.i386.rpm$rpm-ivhtinyos-deputy-1.1-1.cygwin.i386.rpm$rpm-ivhtinyos-2.1.1-3.cygwin.noarch.rpm每输入一个文件按一下回车键,便可进行安装,如图3-10所示。(3)安装完4个软件包,用命令“rpmqa”查看安装是否成功,如图3-5所示。这时文件“opt”中自动生成了一个文件“tinyos-2.x”。图3-5安装nesC编译工具和TinyOS相关工具(4)安装graphviz在TinyOS环境中包括nesdoc,它是一种能从源代码中自动生成HTML文件的工具。这个过程的一部分涉及到画图表以用来显示不同TinyOS组件之间的关系。软件graphviz是一个nesdoc用来绘制图表的开源工具。虽然本设计没有用到,但是搭建TinyOS开发环境必需的软件。这个软件安装过程和路径没有要求,只需根据提示点击下一步,安装完成后会自动生成环境变量,不需要自己设置。(5)配置环境变量在D:cygwinetcprofile.d路径下新建一个tinyos.sh文件(可复制一个sh文件过来修改),然后将下面一段内容保存在该文件中。#scriptforprofile.dforbash#scriptforprofile.dforbashshells,adjustedforeachusers#installationbysubstituting/optfortheactualtinyostree#installationpoint.TOSROOT=/opt/tinyos-2.xexportTOSROOTTOSDIR=$TOSROOT/tosexportTOSDIRCLASSPATH=$TOSROOT/support/sdk/java/tinyos.jar;.exportCLASSPATHMAKERULES=$TOSROOT/support/make/makerulesexportMAKERULES(6)检测TinyOS2.0开发环境是否搭建好运行tos-check-env命令:$tos-check-env系统会检测各个程序是否正常,如果最后出现类似图3-6的提示,则表明TinyOS2.0开发环境已经搭建成功了。图3-6TinyOS开发环境安装成功3.4移植配置在TinyOS中,所有的与平台无关的模块的源文件都存放在system目录中,而对应的使用到的头文件则全部存放在同级的include目录中。这两个里面存放的都是与特定的硬件平台无关的代码,或者是提供了与硬件的接口。所有与平台相关的代码都是存放在platform目录中。这样,如果自己设计了一套平台就可以根据system和include中提供的一些接口来实现自己的platform目录中的内容,从而可以使得上层的应用程序不需要做太多的改动,甚至根本不需要进行如何的修改就可以直接移植到新的平台上了。表2是目前整个移植工作已完成的模块,只列出了其中的一部分。表2已能移植模块SleepTimerTimerStdOutADCFlashledsSimpleMacPlatformStdOutPlatformledsHalCC2430SimpleTimerHalFlashHalCC2430RadioHplCC2430TimerSleepHplCC2430TimerHPLADCHplFlash.HplCC2430GeneralIOHplCC2430RadioSleepTimerTimer1SerialPortSensorsRAMIORF对其中一些组件的描述如下:(1)Radio。通过SimpleMac接口实现该组件。SimpleMac接口实现了基于802.15.4标准的数据包的收发,而且能对收发器的各种参数进行设置。HPL层HPLCC2430Radio组件主要对无线收发器的寄存器进行操作,其实质是对CC2430的各个寄存器进行读写。该模块为整个硬件平台提供了SPI同步串行通信机制。在HAL层的HALCC2430Radio组件中对HPL层进行进一步抽象,实现对数据包的发送和接收、对无线模块状态的控制以及载波监听的功能。(2)Flash。通过SimpleFlash接口实现该组件。SimpleFlash接口实现了读、写和删除3个操作。移植过程中使用的节点为CC2430-F128(即Flash大小为128KB),整个Flash被分成每页为2KB的64个页面。在HALFlash中提供read、write和erase,对连续的存储地址进行读写删除操作。(3)Timer。通过通用的TinyOS的Timer接口Alarm和Counter实现该组件。目前已完成的模块是Timer1和SleepTimer。HPL层HPLCC2430Timer1AlarmCounterC组件直接对计数器和比较通道相关的寄存器进行操作,为上层Alarm和Counter2个接口提供开始、停止和设置定时周期等接口,在HAL层对其进行进一步封装。(4)ADC。通过Read接口实现该组件。Read接口能够读取单个数值,当需要读取多个数值时,应用程序必须发起多值读取调用或者直接进行DMA传送。(5)Pin。通过GeneralIO接口实现该组件。CC2430总共有21个可编程的I/O引脚。通过设置一组SFR寄存器的位和字节,可使这些引脚作为通常的I/O口或者连接ADC、计时器或USART部件的外围设备I/O口使用。其中,HPLCC2430GeneralIO组件向上层提供各个引脚的接口。在LED组件中则是调用底层操作I/O的接口来实现LED灯的开关操作。为了将TinyOS应用移植到CC2430节点中,还需要配置以下几个文件:(1)D:cygwinopttinyos-2.x-contribdikumcs51tosplatforms文件夹中创建CC2430文件夹,其中有平台定义文件,头文件;(2)D:cygwinopttinyos-2.x-contribdikumcs51supportmake中创建CC2430em.target;(3)D:cygwinopttinyos-2.x-contribdikumcs51supportmakemcs51中创建mcs51.rules;(4)D:cygwinopttinyos-2.x-contribdikumcs51toschipsmcs51中创建mcs51hardware.h。以下简单说明这些必须文件的内容和作用:(1)platform:在该文件中说明环境变量信息和基本的编译参数,添加平台所用的硬件的代码目录,为nesC建立include路径;.platform文件是用perl脚本语言编写,由ncc解析;部分代码:$CR=$ENVCONTRIBROOTifdefined($ENVCONTRIBROOT);$PATH_LIST=$ENVCONTRIBROOT/diku/mcs51/tos/chips/cc2430$ENVCONTRIBROOT/diku/mcs51/tos/chips/mcs51;(2)mcs51hardware.h:该文件用于对平台进行说明,设置非通用的、只针对本平台的标识符,如常量、管脚的名称,以及引用其它的头文件:常包含说明MCU的头文件以及一些需要使用的宏;下面是详细代码:#ifndef_H_mcs51hardware_H#define_H_mcs51hardware_H#include#ifndef_BV#define_BV(bit)(1moduleMcuSleepCprovidesinterfaceMcuSleep;interfaceMcuPowerState;implementationasynccommandvoidMcuSleep.sleep()_nesc_enable_interrupt();/允许中断/*把模式改为低功耗模式*/SLEEP=(SLEEP&CC2430_SLEEP_MODE_MASK)|CC2430_SLEEP_POWERMODE_0;_nesc_disable_interrupt();asynccommandvoidMcuPowerState.update()3.5测试移植是否成功(1)设置编译环境输入命令:$cdtinyos-2.x-contrib$ls$sourcediku/env下面是env文件的内容,通过source命令加载下,这样后面编译的时候编译器就知道使用什么样的配置去编译了。exportTOSROOT=/opt/tinyos-2.xexportTOSDIR=$TOSROOT/tos/exportMAKERULES=$TOSDIR/./support/make/makerulesexportCONTRIBROOT=/opt/tinyos-2.x-contribexportTOSMA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论