欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    TinyOS-2.x-入门教程.docx

    • 资源ID:1475282       资源大小:622.98KB        全文页数:57页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    TinyOS-2.x-入门教程.docx

    TinyOS2.x编程入门教程Version1.02010/12/17书目前言第1章编程环境的建立1.1 安装JAVAl.6JM21.2 安装CKnN(11MXW(W1.T)21.3 安装-WB21.4 安装TIOToS工具31.5 Ut环缰三*31.6 安装GlAfflnZ41.7 MW软件安装状况41.8 USB串口驱动下安装5第2章TINYOS简介2.1 «SC语&简介ffl件(cnponents)7并发模组H2.2 常用Mn吩板介122.3 蜘B1.DKTDffOS*8的-HElXOf0U)Wf12Blink归件13BlinkC模块14事务evenst和吩附ConnHndS16编译BIink应用程序17安装BIink程序到TCloSb节点并运行172.4 下出幡故MW除182.5 小结20第3章TE1.OSB硬件平台常用可馆程器件和对应的TINYOS蛆件介绍21Telosb慢件平台上的1.ed零件展示22TinyoS中1.ed编程组件介绍223.2 23TCIoSb硬件平台上的传感器展示23TinyOS中传感寄漏秤姐件介招243.3 串口25Telo曲硬件平台上的串I展示25TinyOS中用Il编程殂件介绍263.4 Radio27Telosb硬件平台上的Radio相关网件展示27TinyOS中Radio编程组件介绍273.5 小结274用方式从获得数据274.1 ”实现284.2 ADC30第5章TlNYOS任务及JS用举例335.1 任务的创建和度335.2 IMItSa(SBTAa应用Wr335.3 小结34第6章TINYOS串口编程356.1 TtoTSaUA1.Sffi8t356.2 串口助手,PC上显示从串口读取的数据386.3 TttOSB从串口读取406.4 OSCl1.1.oeCOre应用射426.5 BassStatkm应用466.6 小站51附录1TlNYOS命名约定52附录2NESC语言储关健字54前言防行传感器技术、做机电系统、现代网络、无线通信、低功耗等技术的E速发展,推动了无线传感器网络(ISN:wirelesssensornetwork)的产生和发展.无线传感渊网络涉及IT领域的多种技术,成为目前IT轴域的探讨热点之一.无线传感器网络就是由部部在监测区域内大以的廉价微型传络器节点组成,通过无畿通信方式形成一个多淡的自组演网络,无线传礴器网络所具有的众多类皇的传感器,可探测包括地震、电描、温度、湿度、噪声、光强度、东力'土馔成分、移动物体的大小、速度和方向等各种各样的现象.具有广袤应用前景,潜在的应用领域可归幼为:军事、侦空、反恐、防暴、故灾、环境、医疗、保健、家居、城市管理等诸多领域,传感涔节点是一个做笈的嵌入式系统,具有特别有限的硬件资源,须要操作系统能修高效地运用其仅有的内存、处理渊和通信桢块.且能峡对各种特定应用供应最大的支持.传感器节点有两个突出的特点,一是并发性密集,即可能存在多个须要同时执行的逻辑限制,这须要操作系统能帔有效地满意这种发生频繁、并发程度高、执行过程比较短的限制逻辑流程:另一个特点是传感器节点模块化程度很高,要求操作系统能够很便利让应用程序便利地对硬件进行限制且保证在不影响整体开俏的状况下,应用程序中的各个部分能够比较便利地进行重新组合.美国加州高校伯克利分校针对无线传感器网络的特点研发了TinyOS操作系统,在科研机构的探讨中应用比较广泛,TinyOS是无戏传感涔网络中较为流行的操作系统,所用编程语言为nesC(networkembeddedsystemC),nesC语才由C谙吉扩展而来.意在把组件化、模块化思想和TinyOS基于事务驱动的执行模型结合起来.目前在国内,关于TinyOS的资料并不多,而且很做,给各个方面的人员在运用TinyOS时造成了诸多不便,我们在运用TinyOS时枳累了一线阅历,在此希里能对大家有泞定的帮助”本教程所用硬件平台为Telosb.操作系统版本为TinyOS2.x.nesC谱言版本为1.3.主要内容的几乎序装TeloSb硬件平台的全部常用可编程器件及TinyOS一些理要概念,内容不是很深化,适合没有接触过TinyOS的初学者,但就其对于Telosb现件平台而言,是运用Telosb硬件平台的工作人员或吸好者不行多得的参考文档,并且在熟识了此教程之后,读者挚友们可以很简洁地转到其它硬件平价上去.在爸例的选择方面,本教程尽量选择了TinyOS自带的例产,便利读者测试.只有少数例干在TinyOS中没有,己编写了尽用简短的程序并在教程中展示了这些例子的完整代码,在讲解某些内容方面,特殊是概念性的内容,我们借鉴了TinyOS官方公布的一些讲解方式、引用了部分内容及例子.以使尽可能精确传达TinyOS研发者的初亵.岐终,本教程要求读者均具有C语古编程的基础.因为nesC是C诺古的扩展,在此教程不会讲解任何C编程方面的内容,如有读者未有C语言祭础,请先学习C方面内容,以便可以进一步学习此教程涉及的内容。更加深化的内容及本教程运用到的工具会在“相关资源列I1.以便利大家进一步学习.第1章编程环境的建立目前TinyOS支持两种平台:CyKVin(windows)和1.inUX。下面介绍在这两种操作系统下TinyOS的安装步骤.1.1安装JaVaI.6JDK(1)下载JAVAJDKSE6或n-b32-windows-i586-p-12_sep_2008.exe(2)安装路径c:UCBJavajdk_10c:UCBJavajre6<3)设置环境变最(a) C1.ASSPATH我的电脑属性-高级环境变量系统变量新建变量名Hlasspath变量值;c:lCBJavajdk_10bin:c:UCBJavajdkl.6.0J0libtools.jar(b) Path我的电脑-属性-将级环境变址系统变fit娟辑变fit名:Path:c:MJCBuaVajdk_10bin;c:UCBJavajdkl.6.0.10jrebin(c) JAVRjoME我的电脑-属性-高级环境变址系统变量新建-fit名:JAVAIoME变量值:c:UCBJavajdk_101.2安装CWgWin(windowonly)<I)从Iinyos上下教Cygwin的超容包(2) 解任到CkygwHinstaHal沁MilZ(3) 运行c:kygwin*installationfilcssctup.cxcF-I11sallfrom1.ocalDirCClOryH下步HRmwDimClOry输入CAUCB'cygwin下步H1.oCaIPackageDiree(Ory输入ccygwininStalkHionfileSH下一步卜下,步H安装卜完成(4)运行C:cygwincygwin.bal)1.3 安装编译器(1) 安装AtmelAVRTodsWindowsCygwin1.inuxavr-binulilsavr-geeavr-libcavariceinsightavrdudeavrdude-tinyos-5.6cvs假如在安装时提示错误:存个更新版本的rpm包已经安装,尝试运用吩时pm-Uvh-force假加在安装时提示错误:找不到binZh.粪试运用吩咐rpm-Uh-force-nodcps(2)½TIMSP43OToolsTlWindows,ZCygwin1.inuxbasemsp430ts-base0.1-20050607.cygvin.i386.rpmpythontoolsms430tools-python-tools-l.0-1.cygwn.oarch.rpmbinutilsgIibcjtagNotyetavailablegdbNOtyetavailable1.4 安装TinyoS工具ToolWindowsZCvgwin1.inuxCommandNcsc(notavailableyet)rpm-UvhrpmUvhignoreos(ifCygwincomplains)ToolWindowsZCygwin1.inuxCommandDeputyrn-irpm-i-ignoreos(ifCygwincomplains)TlWindowsZCygwin1.inuxCommandTinyos-toolsrpm-ivh-force(2.xtree)rpmUvh(no2.xtree)1.5 设置环境变量须要在TinyOS的配诋文仲,对环境变址进行设附:EnvironmentVariableWindows1.inuxTOSROOTopttinyos-2.xsameasinCygwinTOSDIRSTOSRoOTTossa11wasinCygwinC1.ASSPATHC:cygwinoptTinyos-2.xsupporlsdkjavalinvos.jarSTOSROOMAKERU1.ESSTOSROOTsupportmakeMakerulessameasinCygwinPATIIotms430binopjasnin:$PATHsan>easinCygwin只有在运用MSP430或者是iMow2的埋件平台的时候,才须要对环境变量PATll进行设置,仕志向状况下,可以通过符这些环境变量写入Shdl脚本文件中,它会在每次Shell启动的时候自动运行.可以运用吩咐“Tbash_PrOfnC”打开配置文件进行添加.scriptforpoflie.dforboshshells,adjustedforeachusers2 9installationbyaubacutlng/optfortheactualCXnyoStree3 ffinstallationpoint.5 exportTOSROOT-topt/1nyos-2.x*6 exportTOSDIR-w$T0SRTTOSw7 exportC1.S3PATH三,cygpach-wSTOSPOOT/oupporc/adVjvtlnyo8.Jar,eexportC1.AS3PTH*tC1.A33PTH;.*9exportMAK三RU1.ES-",tTOSROOT3upportkeXaXeruleaw1011typejv>devnull2>devnullPATH*usrlocalbnlocate-jee-java':5PTHIZtypeJavac>devnull2>devnul1PATH-'/uar/localbllocate-jre-JaVBC':SPJ1.THUechoJPATHgrep-qusrlocal/tolnPXTH-Zuar/local/bin:5PATH1.6 安装Graphviz对于WindoWS操作系统,可以到下载所需的安装文件.否则到OWnIoad.php下载所需的rpm包进行安装.1.7 检测软件安装状况安装完TinyOS等软件包之后,打开CygWinshell.输入吩咐:Stos-check-env系统将会检测各个程序是否正常,查看安装时是否有错误发生.一般状况下,不会发生什么严竣错误。当全部程序正确安装时,最终一行是:toschockcompletedwithouterror.««.这一行依要,假如有任何储谡,请依据It示值息进行改正.若在检测后出现如下提示:toscheckcompletedwitherrors:->WARNING:C1.ASSPATHHaynotinclude'.(thatis,thesymbolforthecurrentworkingdirectory).Pleaseadd'JtoyourC1.ASSPATHoryoumayexperienceconfigurationproblems.此信息提示:某环境变量配置有点问题,但.是这是关于TinyoS自带的java工具的,这是因为在配置文件中exportC1.ASSPATH7C1.ASSPATH;.”格式的问遨.进行修改后即可.1.8USB串口驱动下载及安装Telosb硬件平分运用FTDI公司的“USB一串口芯片”:FT232B.该芯片的驱动程序请在FTDl公司的网站下放,具体链接为:.在此度接中选择适合您的计算机的驱动,例如:本人所用计算机操作系统为Irin(Jowsxp,故本人选择in<kwsXp版本的驱动.当您第一次运用Telosb时,须要安装骤动程序,将Tclosb节点插入PC的USB接口,假如找不到驱动程序,IIindoWS会弹出“发觉新硬件向导”的对话框,如图1.11所示.选择t,Instal1fromalistorspecificlocation(Advanced)”,然后点击"Next",IS1.11弹出的安装向导接着.选择Includethislocationinthesearch".然后点击“Browse"。如图I.12所示:图1.12选择您的.驱动程序然后选择驱动程序所在文件,例如:在笔者的电脑中,文件夹如图1.12所示.点击“OK”,然后点击-Next".紧接着WindgS安装该驱动程序,安装完成后就把Telob变成一个1.SB串口设备,此时您可以检查设备管理潜流1.1.在是否有ISBSerialPort这个设备,假如没有可以曳试几次第2章TinyOS简介TinyOS作为无线传感器网络中比较流行的操作系统,支持目前出现的多种节点。就2.x版木而言,支持mica系列、ICIOS系列等节点。TinyOS作为开源的操作系统,其价值不单为支持多个系列的节点,对单片机爱好者而言.更是学习多种单片机娟程的上佳资料:对操作系统爱好者而言也彳J肯定参考价值,其简洁性让读若更加简洁入门.本章简洁介绍TinyOS的班本概念和其编写语言;nesJ包括nes语言的一蛀概念和语法,让读者能照在这个环境下涮与自己的应用程序。最终结合TinyGS自带的一个例子:Blink,让大家在此例子中熟识涉及到的概念.在此再次明确指出,为便利读者挚友.本教程尽可能诟用TinyoS自带的例程及源代码.另外,本章在讲解TinyoS、nesC诏古相关微含时引用了Tiny0$宫方公布的讲解方式及内容,2.1 nesC语言他介TinyOS操作系统、库、及其应用程序都是用nesC谱才编写的.TmyOS是一种面对传感湍网络的新型操作系统,它最初毡用汇编和C南音编写的.但在应用过程中,发觉C语吉不能有效便利地支持面对传解器网络的应用和操作系统的开发,相关工作人势为此时C语言进行了肯定的扩展,开发出nesC语言nesC不但支持TinyoS的并发模鞭,还同时具有结构化机制,命名机制,能够跟其它软件组件连接成一个健壮的网络嵌入试系统.其主要目标是让应用程序开发人员能够便利地建立起完整的、并发式系统的组件,并可以在编译时作出全面的检查.TinyoS定义了很多的要的概含,这些概念都体现在nesC语言上了。第一,nesC应用程序都是由组件沮成的,这"现件之间的连接是通过定义良好的、具有双向性质的接口其次,ncsC定义了并发模型,此模型是基于任务(task);,*件事务句柄OmdWareeVenthandler),并且在编洋期间可以进行数据竞争2测(datarace),nesC建立在C语言的基础上,其显著与C语言不同的概念有如下内容。2.1.1 组件(CoaPOnentS)(1)基本概念任何一个运用nesC编写的应用程序都是由一个或多个祖件连接而成,从而成为一个可执行的、完整的程序.在nesC中,殂件的类型有两种:模块(KMiule)和配件(COnfiguratiOn)模块主要用来供应附用程序的代码以实现一个或多个接口而配件则是川来汇聚其它组件,连接接口的运用者和供应者,nesC设计者称这种关系为建核(wiring)每个nesC应用程序均是由个1层的配件(top-level8nfiguration)所描述,其内容就是把应用程序用到的全部级件都连接起来,从而形成一个整体。nesC的源文件:接口、模块、和配件的扩展名是,.nc,.关于命名约定的更多的信息清查看2.x/doc/tUtOria"naming,hlml,也可以参看本教程的附5二:MTinyoS命名约定3,殂件的定义格式如图2.1所示:图2.1组件的僚型解出供应(provides)和运用(USeS)接口。接口是访问组件的唯一途径,并且接口是具有双向性的.个接口声明白一系列称之为吩噌(<x三nd)的函数,及一系列称之为事务(event)的函数,接口的供应者必需实现该接口声明的全部的吩咐,而接I1的运用者则必需实现该接口声明的全部的W务,一个组件可以供应或运用多个接口,并且可以供应或运用同个接口的多个实例。<2)基于组件的模型一个简沽的获F组件的调用模型如图2.2所示。ApplicationsTinyOSRadioSendRadioReceiveInterfaces.ComponentsMsP4厂GPIOMSP4joTtA)MSP4>>*tHardwarePlatform图2.2舰于组件的模型上层的应用调用TinyOS所供应的不同用件,而每个蛆件都会相应的供应自身的应用接口.事实上各个斑件的实现还须要调用其下层的图中所示的模型类似于一个库Uibrar力,不同的组件(coponents)相当于库中的元素(objects).而接口(interfaces)相当于APISo(3)倚洁示例BlinkBlink示例的主要观能为通过时Timer的两用触发红、绿、黄三种颜色的灯的闪楸事务:MRIMM.A50IIAlITm* ToggleRed1.ED0.25Hz ToggleGrecn1.ED0.25Hz ToggleYellow1.ED0.25Hz如右图所示,在BHnk示例中只在要用到以下三个组件: 1.EDs TimCT Main1、接口不同的组件供应自Cj相应的接口,应用程序则通过调用这些接口来实现对于更低层的组件和硬件的调用。例如在本例中的如下代码:usesinterfaceTimer<TMilli>asTimerO:usesinterfaceTimer<TMilli>asTimurl;usesinterfaceTimer<TMi11i>asTimer2;usesinterface1.eds;usesinterfaceBoot;andyouiaplementwhatyouwanttodoinyourprogran当Tilner被触发的时候,所时应的灯闪罐;其中接口Ti三er是一个带参数的接口它运用类型作为参数.接11中的类型参数帙放在一对尖括号中,当中连供应者和运用者的接口带有类型参数时,它们的类型必需相互匹足,有时类型参数只是用来做类型匹配检测的,而并没有用到吩咐和裂务中去,本例中的Timer接口就是如此,虽然它带有一个类型参数,但它里面没有一个函数用到了这个类型参数,Blink示例是一个1.EDs的闪耀示例,其中1.EDO的开关颇率为4112.1.EDl的开关频率为2HZ,I.ED2的开关频率为IH1.的臾BIinkC运用了三个TillereTMilli接口示例,同时也运用了1.EDs和BOr接口,也就是说BIinkC在调用这些接口所定义的吩咐的同时必雷实现接口所定义的事务的处理函数,如图2.3所示:Blink图2.3Blink接口其中各个组件和接11的作用为:Main.Boot:初始化并启动程序1.EDs.1.eds:限制1.ED的动作亮、灭、闪耀)Timer.Timer:计时器之前提到过到er是一个带类型参数的接口,它的3个标注的类型是TMiIIi,T32khz,和TMicro,分别表示意杪级,32KhZ和微妙级的计时器,这些类型都各自的定义为C的结构体.2、蛆成和.译接11可以由组件供应或运用,被供应的接11表现它为运用者供应的功能,被运用者表现运用者完成它的作业所须要的功能.例如在Blink示例中,组件1.EDS和TiBer供应了运用的接口,事实上它们也须要再调用下层的姐件,如MSPI30GPI0和MSPl30TimrrB7等,考虑到较好的代码揖用性,nesC是基于用编译零生成完整程序代码的需求设计的.作为一个必要的组成部分,11esC的编许器会依据用户所指定的平台编译生成一个对应于特定平台的C源文件,对于其产生的(:源文件,nesC依据不同的做限制器运用一个时应的木地G刈:的。编译器将产生的C海文件端译成可执行文件并将其下载到对应硬件平台上.如图2.4所示,ncsC就依据不同的环境运用不同的娟译器:AtaeII28C源文件对应的是AYRgCC编译器.MPSq30C源文件对应的是mspgcc编译器.此他的C源文件对应的是另外的编译组件,它们对应的下我到的硬件平台分别为ViCaZ和MiCa2、TeloSb和TarOk。、其他硬件平台.图2.4组成和编译方式3、开发环境开发环境是一个吩咐行界面,下图是在IrindoWS操作系统上CygWin+TinyOS的一个开发环境界面。;tdABKdA>,.yCntrle"eTBn*yA7>1.j*f9rGtll*4ft*HRf*;hm*lt»lath4at(iI,tb,I.Y4Mir.uil4rlosb<3UpOlIoMsAUarnSeu*hkubBild/taUik/Mw.esB-C-lkI/l&h/Co«Mit<r«UallbU>wfiXP.TO;jm.OOFl>7dwtc«11-tr9ttlo<b-fa,tflle-bi14/teUk4fv<,YItT/lihlu>*VI.,Q«t«rl-.lr<Mf4*H4.4rr,1w.e、eQ-vevQ"_T4WDllrjMomrjmc-ctroUdk<if×-»1mxjisra.it-sayiAM'DlKMrJWDtijHSfMjmwTmgnMtf1.PlMNl.MIX.1111E-¼>44U)IM1.BIPlMIJlIthtnM9(1.liableKwl9ttinvv>I.xUlabXS<2UU4ioDt1USnaRre.mU:,PWCaKeIyl<(1.w,15*14Q90R*Uu,aZ<22lT.g=,16:t><nlf>s:'S*ft4.t4h><><(&1U4Mchro)msIytr<e<dPall4'QcTUrA4KfatubaildliMblMU.xCMU>0t1373HeUBAHNH)t-»Mcopy-«*<1<0*abUC<tbU.mckllduIoeWiwlA.1.h)uric1IM1.f9-HTxt81*/IWJM/Rrl-m>,14-<Jcqw*HAkk0万-J<kup-t-C1><h11<1o*1mmi*.u*muna¼cVMb*.u.4uc-1*C*111MSlUIfbutllr*tXf)MlH)-l-<lcfkF24-r-Ipln-l.A(UVIvlurT0t>9<*tl)dte(l>ain.i图2.5开发环境2.1.2并发模型TinyOS次只执行一个应用程序,而一个应用程序由一独必襄的组件和一些可选的Ia件1合而成。TinyaS程序有两个执行战程:任务和硬件事务句柄,任务是一种被延迟执行的函数,一旦任务被执行,它们就始终运行直至结束,中间不会被其它任务中断.硬件事务句柄是对硬件中断的处理,同样会始终运行到结束,但是可能会抢占个任务或其它硬件事务句柄的运行.吩咐和少务要作为硬件步务句柄来执行,则必需用关键字async来泮明。因为任芬和使件事务句柄足可以被其它异步代码抢占的.所以在肯定竞争状况下.nesC程序是很简洁受到影响,从而导致数据的不一样或错误.为避开竟争而带来的错误产生,可以在任务内排外地访问数据,或拧姆次访问部采纳朦子QtMic)语句nesC编译器在编译期间给程序员报告漕在的数据竞争“编谛器也可能会产生错误的报告(例如:该变量须要随时变更),这种状况下变盘可以用关谊字norace声明.留意:关键字norace必SS极其当心地运用.要了解用nesC编程的更多伯息,请参看:2. x/docnescref.pdf.2.2 常用make吩咐简介TinyOS编程中,有一些Inake吩咐是常常用到的,下面对其一进行介绍,1) sakeplatfora此吩咐是将nesC代码娘译成可在某YGki行的代码.仁执行前要切换到代码所在的书目.例如:BIink程序的代码在C:UCBcygrinopttinyos-2.XappsBlink样目下C打开Cygwinshell后用cd吩咐转到该书目下,然后输入maketelosb(make>ica)吩哨就可以让编译器将其编译成可以在Ielosb(mica)平台运行的代码了,当然首先得保证没有任何语法楮谈.2) sakeplatforareinstall运用makeIplatfOrm吩时后,就可以将在某平台的可执行代码下拨到对应的平台上了,例如:maketelosbreinstall(makemicareinstall)就可以将编译好的可在IeloSb(mica)平台上运行的代码下载到Ielosb(mica)硬件平台.3) sakeplatforainstall此吩咐的功能相当于先执行吩咐makeplatfora.PJ执行吩咐makeplatformreinstall,当然,假如执行makelplatform吩咐时,发觉程序有错误,则不会执行下载动作,即不会执行三akcplatformreinstall三*f1.4) sakeclean此吩咐删除上述编洋吩咐产生的文件及文件夹5) nakeplatforadocs此理三成程序运用的全部纲件、接口的关系的文件。生成的文件在Iinyos-2xdocnesdoc书目下.其中索引文件为“index.html”.2.3 应用举例:BlinkTinyOS编程的“Hell。Worldw程序上面的nesC语言简介中,简珞介绍了组件、接口、模块、连接、吩咐、事务等基本概念.对F初学者来说相当抽象,下面结合一个例子耒看看各个假念在nesC/TinyOS娘程中的用法.这个例子是TinyOS自带的程序,位于HnyoS-2.x/apps/Blink,其功能是让一个1.ED以IHz的频率闪*Blink应用程序由两个批件组成:一个模块定义文件“BlinkC.nc”和一个配置文件"BlinkAppC.11cw."BlinkAppC.nc"也就是顶层配S1.它连接“BlinkC.nc”和其他必要组件.请记住,任何一个应用程序都有一个用应用程序名命名的顶层配件,在此处,配件BlinkAppC.nc就是Blink应用程序的顶层配件,nesC编译器依据该文件的内容产生可执行文件。另一方面,模块BlinkcnC供应BIink应用程序的实现代码,正如你所想的,BlinkAPPC配件是用来连接组件,BlmkC模块和Blink应用程序用到的其它组件的“让配件和模块之间有所区分的理由是:配件允许系统设计人员快速建立程序。例如:设计者设计一个应用程序可以只供应一个配件,这个配件只是简洁地珞一个或多个模块连接起来.而此时设计者'A实上并没有实现任何东西.同样地,另一个开发人员会供应可以在广泛他国应用程序中运用的“库”模块.当然,有时您须要同时拥有要件和梗块(在此处是BlinkAppC和BlinkO.TinyOS中的其他命名A则请参看:.tinycs.ncuinyo2dcc"utcri;Wnaming.html,或本教程的附录:<TinyOS命名约定2.3.1 BIink配件nes的编译器为ncc,它可以将包含顶层配件的文件编译成可执行的应用程序。一般而言,TinyOS应用程序还拥有一个标准的YakCme文件,允许进行平台选择以及在调用ncc时运用某些适当的选项,Blink程序由两个组件构成.BlinkCnc为模块,BlinkAppCnc为配件.让我们先看看BIink程序的配件;BlinkAppC.nc./BlinkAppC.DCconfigurationBlinkAppCimplementation(co11t>ntnlsMainC,BlikC,1.edSC;CoirponentsnewTimprMilliCOasTinerO:CotrponentsnewTimerMi11iC()asTiiierl;CoirpnnentsnewTimerMiIliC()asTi三er2;BlinkC->MainC.Boot:BlinkC.TimerO->TiaerO;BlinkC.TimerI->Tiaerl;BlinkGTimerZ->Tier2;BlinkC.1.cds->1.vdsC:TinyOS应用程序中,configuration可以供应和运用接11,但并不是全部的配置都是应用程序顶层的配Pi1.lmPIeinenIaliOn是配词的内容,它将一系列的祖件建立起引用关系。首先.须要用意的是关键字configuration,此词声明这是一个配件文件,头两行:configurationBlinkAppd由于这个组件本身并不运用或者供应任何接口,所以在其声明部分为空.首先简沽地说明这个配件名为BlinkAppC,跟模块,样,在声明后的这个花括号内可以指定uses语句和provides语句。有一点特别重要,必需记住:配件可以供应和运用接口。配件实际的实现代码是在紧接着的impIeaentation后面的一对大括号里面.components那行列/此配件用到的一组组件,分别是MainC.BlinkC和1.edSC划下的语句是连接运用到的接11到该接口的供应者。因为BIinkC模块运用了Booi、1.edS和Timer接口,所以必需指明这些接口都是由其他哪些组件供应的.先运用ComPonCnt关键字标明,这个程序当中,总共要用到哪几个组件.其中包括我们自己编写的BlinkC模块.还有负责供应Boot接11的MainC组件,负击供应1.eds接口的1.edsC组件,还有供应TiBer接口的TimerYiIIia其属于泛型(generic)配置,支持被实例化,这里先不细说,因为我的须要用到三个计时器,所以须要运用nc关键字创建三个计时器的实例,然后分别用吧被审包名为Timer0、TiBerI和Timer2.CoepunvnlsnewTiecrMilliCOasTi三crO;COBponentsnewTiHerMilIiCOasTiaerl;COa>onentsnewTiaerMi11iC()asTiaer2;再往下就是组件之间的连接f.BlinkC运用了Boot接口,而MainC正好供应了BlinkC所需的Bcot接口,所以我们将他们进行连接.nesC运用箭头来指示接口之间的关系,你可以把向右箭头(÷)当作“绑定到”(bindsto)o漪头左边的接口绑定一个接口到右边的(接口的)实少上。换句话说,式竺运用FJ接口在左边,而右边组件供鸟的接口在右边。HlinkC->MainC.Boot/成打像F面这样也是可以的。YainCBooK-BlinkC因为BlinkC内部就运用了一个BOOt接口,所以BlinkC后面的BOOt被省略了。完整的书写格式为:|意为:BlinksI件内运用的Boot接口由MainC祖件供应。IBlinkC.Boot->¼ainc.Boot_按蓿是眼制发光:极管的1.eds接口,由1.edSC祖件供应。这里也进行了筒写,完整的书写格式为:IHlinkC.1.eds->l-gdsC.1.eds计数器的连接同理.2.3.2 BHnkC模块BlinkC模块的代码如下:Sinclude"Timer,h”noduleBIinkC(usesinterfaceTier<TMi11i>asTimerO;usesinterfaceTiner<TMi11i>asTimerl:usesinterfaceTitr<Mi11i>asTimer2:usesinterface1.eds;usesinterfaceBoot:)iIjpleBentation(eventvoidBoot,bootedO(callTimerO.SUrtPeriodic(250):cal1Timer1.StartPeriodic(500):callTi11>et2.StarlPcrio<fic(1000):eventvoidTinerO.fired()dbg("BlinkC*."TimerOfireds.n",simtistring():call1.cds.IedOToggleO:eventvoidTiner1.firedO(dbg("Blinkt,","Timer1fired«sn*,simtimestring();call1.cds.IedlToggleO;eventvoidTi11(er2.firedO<tlbg(BlinkC*,"Timer2fireds.n",simtit*string();call1.eds.led2Toggle();

    注意事项

    本文(TinyOS-2.x-入门教程.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开