TinyOS中文手册

TinyOS中文手册
TinyOS中文手册

目 录

第一章前言 (3)

1T INY OS的安装 (3)

2T INY OS支持多种不同设备 (6)

3系统及硬件验证 (7)

4定制开发环境 (10)

附录:M AKE 及M AKEFILE (11)

1Makefile文件 (11)

2Make命令 (13)

3隐含规则 (14)

第二章 TINYOS简介 (17)

1简介 (17)

2应用程序举例:B LINK (18)

2.1Blink.nc配置 (18)

2.2BlinkM.nc模块 (20)

2.3编译Blink应用程序 (24)

2.4加载并运行Blink (25)

第三章用事件驱动方式从传感器读取数据 (27)

1S ENSE M.NC模块 (27)

2S ENSE.NC配置 (30)

3定时器与参数化接口 (31)

4运行S ENSE应用程序 (31)

5练习 (32)

第四章用于处理应用数据的任务 (34)

1任务的创建和调度 (34)

2S ENSE T ASK应用程序 (34)

3练习 (35)

第五章组件组合与无线通信 (36)

1C NT T O R FM A ND L EDS应用程序 (36)

2I NT T O R FM:发送信息 (39)

3I NT T O R FM M:实现网络通信 (41)

4G ENERIC C OMM网络堆栈 (42)

5使用R FM T O L EDS接收消息 (42)

6一些细节问题 (42)

7练习 (43)

第六章使用TOSSIM模拟TINYOS应用程序 (44)

1TOSSIM简介 (44)

2建立和运行应用程序 (44)

3增加调试语句 (45)

4在TOSSIM中使用GDB (46)

5T INY V IZ:TOSSIM用户界面 (46)

6将来的用途 (51)

第七章在PC机上显示数据 (52)

1、O SCILLOSCOPE应用程序 (52)

2、“监听”工具:显示原始数据包中的数据 (52)

3、数据格式分析 (53)

4、S ERIAL F ORWARDER程序 (55)

5、启动O SCILLOSCOPE图形用户界面GUI (55)

6、使用MIG与微粒进行通信 (56)

7、通过MIG发送消息 (58)

8、练习 (58)

第八章:注入和广播数据包 (60)

1、注入数据包 (60)

2、练习 (60)

3、多跳广播 (61)

4、练习 (62)

第九章:数据收集应用程序 (63)

1、S ENSE L IGHT T O L OG应用程序 (63)

2、S ENSING接口 (63)

3、L OGGER组件、接口、用法和限制 (64)

4、收集性能 (65)

5、使用S ENSE L IGHT T O L OG收集数据 (65)

第十章 TINYDB:一种用于无线传感微粒的声明式查询系统 (66)

1简介 (66)

2T INY DB (66)

3安装T INY DB并运行简单的查询 (66)

4T INY DB高级特性 (70)

5使用T INY DB的一个简单的J AVA程序 (71)

6增加一个属性 (73)

第一章前言

1 TinyOS的安装

TinyOS有两种安装方式,一种是使用安装向导自动安装,另一种是全手动安装。不管使用哪种方式,都需要安装相同的RPM。(RPM即Reliability Performance Measure,是广泛使用的用于交付开源软件的工具,用户可以轻松有效地安装或升级RPM打包的产品。)一、在Windows平台下下载和安装TinyOS自动安装程序

TinyOS自动安装程序下载地址为:

https://www.360docs.net/doc/b717165597.html,/tos/dist-1.1.0/tinyos/windows/tinyos-1.1.0-lis.exe。TinyOS1.1.0安装向导提供的软件包有:

-TinyOS1.1.0

-TinyOS Tools 1.1.0

- NesC 1.1.0

- Cygwin

- Support Tools

- Java 1.4 JDK & Java COMM 2.0

- Graphviz

- A VR Tools

- avr-binutils 2.13.2.1

- avr-libc 20030512cvs

- avr-gcc 3.3-tinyos

- avarice 2.0.20030825cvs

- avr-insight cvs-pre6.0-tinyos

用户可以选择“完全”安装和“自定义”安装两种类型之一。完全安装包括以上所有内容,而自定义安装允许用户选择自己需要的部分。

安装的粒度是单个的包。例如,用户可以选择安装avr-binutils,而不选择avarice。模块的选择可以通过模块树对话框进行。

用户需要选择一个安装目录。所有选择的模块都会安装在这个目录下。以下称这个安装目录为INSTALLDIR。

1、JDK

如果用户选择安装JDK模块,则会弹出一个对话框问是否阅读了Sun的版权声明等内容,若用户选择“No”安装将结束;否则安装进出继续。

如果用户没有选择安装JDK,则安装程序将执行两项检查:

(1)查找1.4版的JDK:安装程序在注册表中查找

HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Development Kit\1.4\JavaHome表项,如果存在检查通过;否则,建议安装一个正确的JDK1.4。

(2)查找java COMM:如果找到JA V A_HOME\lib\https://www.360docs.net/doc/b717165597.html,m.properties文件则检查通过(上一不检查通过后JA V A_HOME就会被设置好);否则建议安装java的COMM包。

2、Cygwin

如果用户选择安装cygwin,那么cygwin1.1.0包中的所有内容将会被复制到INSTALLDIR/cygwin-installationfiles目录中。同时setup.exe将被调用,将那些文件执行自动安装

到INSTALLDIR/cygwin。

如果用户选择不安装cygwin,安装程序将在注册表中查找表项

HKEY_LOCAL_MACHINE\Software\Cygnus Solutions\cygwin\mounts v2\/(’/’安装点-’/’ mount point)以定位cygwin,若找不到,安装程序将放弃安装,因为包含RPM的所有部分都需要cygwin。因此cygwin是必不可少的。

为了将模块RPM放置在正确的地方,必须弄清楚先前安装好的cygwin的具体位置,因此,关键名“native”将被找回并将其值(通常如c:\cygwin之类的)赋值给代表已知的cygwin位置的变量。

3、安装向导继续安装

用户选择好安装路径以及安装类型以后,安装向导复制所有必需的文件并进行必要的注册以及环境变量的修改等。这一步做完之后就只剩下RPM或cygwin的安装程序了。

下面列出的文件都复制完后,将启动cygwin安装程序;cygwin安装完后,将从cygwin 的shell上安装具有RPM的模块。所有日志文件都保存在

/home/Administrator/.log

中。

TinyOS

-文件:

- TinyOS RPM

- 一个定制的.bashrc 文件放置在[INSTALLDIR]\cygwin\home\Administrator中。

- 注册:无

-环境变量:

- TOSROOT 设置成INSTALLDIR\tinyos-1.x

TinyOS Tools

-文件:

- TinyOS Tools RPM

-注册:无

-环境变量:无

NesC

- 文件:

- NesC RPM

- 注册:无

- 环境变量:无

Cygwin

- 文件:

- tinyos-1.1.0 cygwin 包放在[INSTALLDIR]\cygwin-installfiles中

- 注册:无

-环境变量:无

Java

- Files:

- JDK1.4.1_02安装文件目录树复制到[INSTALLDIR]\jdk_1.4\j2sdk1.4.1_02.中

- 注册:

-HKEY_LOCAL_MACHINE/Software/JavaSoft树被复制到注册表中,其值以[INSTALLDIR] 为前缀。

- 环境变量:无

Graphviz

-文件:

- Graphviz安装目录树复制到[INSTALLDIR]\ATT\Graphviz中。

- 环境变量:

- PATH:加上Graphviz bin目录。

A VR Tools

- 文件:

- 每个工具都有一个 RPM

- 注册:无

- 环境变量:无

最后,设置一个环境变量:MOTECOM=serial@COM1:mica

注意:TinyOS自动安装向导虽然允许用户可以自己决定选择安装某些部分,也可选择不安装某些部分,但是除非使用者对TinyOS各个不同模块、工具之间的交互及其联合工作的版本完全清楚,强烈建议选择完全安装。

在开始安装之前,要将所有与TinyOS相关的安装内容及工具全部删除。

必须以具有管理员权限的用户安装TinyOS,否则的话,安装不可能成功而且还会留下残损的文件。

二、手动安装

首先,将与前面已经安装过的TinyOS相关的所有内容全部删除,否则只可能引起问题。

第一步:从https://www.360docs.net/doc/b717165597.html,上下载JDK1.4,安装在适当的地方。

第二步:从https://www.360docs.net/doc/b717165597.html,/tos/dist-1.1.0/tools/windows/tinyos-cygwin-1.1.zip上下载cygwin安装包,解压后运行install.bat脚本。

第三步:从https://www.360docs.net/doc/b717165597.html,/products/javacomm/上下载Sun的https://www.360docs.net/doc/b717165597.html,m包,在cygwin shell命令行提示下按如下步骤安装(假定JDK安装在c:\Program Files\jdk下):1)解压 javacomm20-win32.zip;

2)cd commapi;

3)cp win32com.dll "c:\Program Files\jdk\jre\bin";

4)chmod 755 "c:\Program Files\jdk\jre\bin\win32com.dll";

5)cp comm.jar "c:\Program Files\jdk\jre\lib\ext";

6)cp https://www.360docs.net/doc/b717165597.html,m.properties "c:\Program Files\jdk\jre\lib";

(此时按https://www.360docs.net/doc/b717165597.html,m包中的说明,运行BlackBox程序试试,如果正常就好;否则,尝试将上述几个文件复制到c:\Program Files\java路径下对应的目录中,并设置好环境变量,再运行BlackBox。)

第四步:从https://www.360docs.net/doc/b717165597.html,/tos/dist-1.1.0/tools/windows/graphviz-1.10.exe上下载graphviz,将其安装在适当的路径下;

第五步:从https://www.360docs.net/doc/b717165597.html,/tos/dist-1.1.0/tools/windows上下载如下几个rpm:avr-binutils-2.13.2.1-1w.cygwin.i386.rpm

avr-gcc-3.3tinyos-1w.cygwin.i386.rpm

avr-insight-pre6.0cvs.tinyos-1w.cygwin.i386.rpm

avr-libc-20030512cvs-1w.cygwin.i386.rpm

再从https://www.360docs.net/doc/b717165597.html,/tos/dist-1.1.0/tinyos/windows上下载

nesc-1.1-1w.cygwin.i386.rpm

tinyos-tools-1.1.0-1.cygwin.i386.rpm

tinyos-1.1.0-1.cygwin.noarch.rpm

一共8个rpm,在cygwin shell命令行下转到这些rpm文件存放的目录执行如下命令进行安装:"rpm --ignoreos -ivh *.rpm"。这些TinyOS的安装包在安装过程中需要编译并执行java 代码,因此需要占用一定时间。命令执行完毕后,TinyOS即被安装到cygwin的/opt/tinyos-1.x 目录下。

第六步:至此,安装工作已成功完成。要想知道更多信息和细节,请查看/opt/tinyos-1.x/doc/index.html;若想要安装更多的包,请参看Installing and Updating Packages。

安装和更新包

https://www.360docs.net/doc/b717165597.html,/tos/dist-1.1.0/tinyos/linux和https://www.360docs.net/doc/b717165597.html,/tos/dist-1.1.0/tinyos/windows目录下包含许多可选择安装的包,还包含TinyOS的核心安装包的更新包。可随时下载适当的rpm,使用如下命令安装:

rpm -ivh (第一次安装)

rpm -Uvh (更新)。

2 TinyOS支持多种不同设备

TinyOS开发环境包括许多特点,这些特点使得对各种不同设备进行程序设计变得十分简单易行。这些特点包括:

1.直接支持大量不同的编程器(编程接口)和方式,包括:

z MIB500(crossbow)或其他标准并行端口编程主板;

z MIB510(crossbow)基于串行端口的编程设备;

z Atmel A VRISP(A VR In-System Programmer)标准;

z EPRB以太网编程主板。

2.允许使用唯一的地址属性对每个设备进行编程,而不必每次编译应用程序。

下面描述如何在TinyOS1.1中使用上述这些特点:

1.使用编程器

在TinyOS中使用的标准编程软件是μ内置系统编程器,即UISP。作为TinyOS的一部分,UISP根据编程器硬件以及期望的程序装载行为(如擦除、验证、程序加载等)获取不同的参数。TinyOS可随时根据用户发出的“install”(加载)或“reinstall”(重新加载)命令使用正确的参数调用UISP。用户只需指定正在使用的设备类型以及如何与之通信即可。要做到这一点,需要使用环境变量。

(1) M IB500并口编程器

这是缺省的编程器设备,使用它时不需要指定额外的命令行参数。

(2) M IB510

定义:MIB510=,其中是设备连接的串口名(即/dev/ttyS0)。

例子:bash% MIB510=/dev/ttyS1 make install mica。

(3) A VRISP

定义:A VRISP=,其中是设备连接的串口名(即/dev/ttyS0)。

例子:bash% A VRISP =/dev/ttyS1 make install mica。

(4) E PRB

定义:EPRB=,其中是EPRB设备的域名或IP地址。

例子:bash% EPRB=123.45.67.89 make install mica。

2.设备寻址

UISP提供一种不必直接编辑TinyOS源代码而为节点设置唯一地址的方法。在程序装载期间设置节点地址使用如下语法:

make [re]install

其中,是期望的设备地址;是目标平台。命令install和reinstall的区别在于:前者为目标平台编译应用程序,并对设备设置地址和装载程序;后者仅为设备设置地址和装载程序。在使用地址时要注意,如下两个地址是保留值,不可使用:

TOS_BCAST_ADDR(0xFFFF)和TOS_UART_ADDR(0x007E)。

3 系统及硬件验证

使用嵌入式设备,调试应用程序十分困难,因此,工作前一定要确保所使用的工具工作正常以及各硬件系统功能完好。一旦某个部件或工具中真的存在某些问题而未及时发现,将耗费大量的时间去调试。下面介绍如何检查各硬件设备和软件系统。

一、PC工具验证

如果在Windwos平台下使用TinyOS开发环境,需要使用avr gcc编译器、perl、flex、cygwin及JDK及以上版本。“toscheck”是一个专门用来检验这些软件是否正确安装以及相应的环境变量是否设置完好的工具。

在cygwin shell命令行提示下,转到tinyos-1.x/tools/scripts目录,运行toscheck,输出结果应该类似于:

toscheck

Path:

/usr/local/bin

/usr/bin

/bin

/cygdrive/c/jdk1.3.1_01/bin

/cygdrive/c/WINDOWS/system32

/cygdrive/c/WINDOWS

/cygdrive/c/avrgcc/bin

Classpath:

/c/alpha/tools/java:.:/c/jdk1.3.1_01/lib/comm.jar

avrgcc:

/cygdrive/c/avrgcc/bin/avr-gcc

Version: 3.0.2

perl:

/usr/bin/perl

Version: v5.6.1 built for cygwin-multi

flex:

/usr/bin/flex

bison:

/usr/bin/bison

java:

/cygdrive/c/jdk1.3.1_01/bin/java

java version "1.3.1_01"

Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_01)

Java HotSpot(TM) Client VM (build 1.3.1_01, mixed mode)

Cygwin:

cygwin1.dll major: 1003

cygwin1.dll minor: 3

cygwin1.dll malloc env: 28

uisp:

/usr/local/bin/uisp

uisp version 20010909

toscheck completed without error.

最后一行十分重要,只有显式了这一行才表示安装无误;否则如果报告存在什么错误或问题,一定要将其修补好。

二、硬件验证

TinyOS的apps目录下有个应用程序“MicaHWVerify”,它是一个专门用来测试mica/mica2/mica2dot硬件设备是否功能完好的工具。

转到目录/apps/MicaHWVerify下,输入:

(mica platform) make mica

(mica2/mica2dot)PFLAGS=-DCC1K_MANUAL_FREQ= make [mica2|mica2dot]

若编译没问题,将输出一个内存描述,类似于:

compiled MicaHWVerify to build/mica2/main.exe

10386 bytes in ROM

390 bytes in RAM

avr-objcopy --output-target=srec build/mica2/main.exe build/mica2/main.srec。

如果输出结果与上述描述类似则说明应用程序已经编译好,下一步就将它加载到微粒中。将一个带电池的节点放到编程主板上,将微粒上的电源开关打开,这时,主板上的红色的LED 灯将发亮。再把编程主板连接到PC机的并口(使用大的连接头-25针)上,接下来就可以将程序加载到mica微粒中了。输入:

make reinstall [mica|mica2|mica2dot]。

如果输出类似于:

installing mica2 binary

uisp -dprog= -dhost=c62b270 -dpart=ATmega128 --wr_fuse_e=ff --erase --upload if=build/mica2/main.srec

Atmel A VR ATmega128 is found.

Uploading: flash

Fuse Extended Byte set to 0xff,

说明编译工具及计算机的并口都已经在正常工作了。下面验证微粒硬件是否完好。首先确定加载了程序的微粒的LED像二进制计数器一样闪烁。然后利用串口线缆(小连接头-9针)将编程主板连接到计算机串口(COM1)上。将要用来进行微粒硬件验证的工具是一个java 应用程序,叫作“hardware_check.java”,就位于/apps/MicaHWVerify目录下。编译并运行这个工具(若使用波特率为57.6k波特的COM1口),命令如下:

make -f jmakefile

MOTECOM=serial@COM1:57600 java hardware_check。

(要想了解更多关于使用hardware_check如何指定串口或其他通信方法的信息,可参看"Serial-line communication in TinyOS"。)输出类似于:

hardware_check started

Hardware verification successful.

Node Serial ID: 1 60 48 fb 6 0 0 1d。

这个程序将检查微粒的序列号(除mica2dot),flash连接性,UART功能以及外部时钟。若所有状态都正常,PC机将输出硬件验证成功的信息;若有任何错误报告,则需要更换微粒。

三、无线传输验证

再取一个节点并安装TOSBASE应用程序(在/apps/tosbase目录下),将这个节点作为无线网关。安装完毕后,将它放置在编程主板上,并将上面那个已经通过硬件验证的节点放到它附近。重新运行java应用程序“hardware_check”,输出应类似于:

hardware_check started

Hardware verification successful.

Node Serial ID: 1 60 48 fb 6 0 0 1d。

若将远处的微粒电源关掉或其坏掉,将显式“Node transmission failure(节点传输失败)”信息。

至此,若系统与硬件都通过上述所有测试,则说明二者都无问题,可以进行TinyOS的

开发工作了!

4 定制开发环境

在开发各种不同的应用程序时,需要根据特定的情况设定一些开发参数,这些参数包括:操作频率(mica2/mica2dot)、组标识、不同的组件库等。本部分介绍如何定制TinyOS开发环境。

一、makeloca文件

apps目录下的Makerules文件管理TinyOS应用程序建立(编译)过程的许多方面。原则上可以修改这个文件,但并不建议这么做,因为:

1)Makerules文件并不直观;

2)修改这个文件可能打断某个建立过程;

3)修改这个文件可能对其他用户带来不便。

为了支持建立环境的定制,Makerules文件会在apps目录下寻找Makelocal文件,并将之加入到建立进程中。而且对Makelocal文件作任何修改都很容易恢复(只需删除或重命名即可)。

因此,可以在apps目录下创建一个Makelocal文件,使用标准的makefile语法包含特定的定义,如:

# Makelocal File

PFLAGS += -I%T/../beta/MyBetaCode

DEFAULT_LOCAL_GROUP = 0x33

PFLAGS += -DCC1K_DEF_FREQ=916700000

EPRB=https://www.360docs.net/doc/b717165597.html,。

上述Makelocal文件添加了一个搜索代码的路径../../beta/MyCode;定义了缺省的组标识(0x33);为mica2系列微粒手动设置频率(91.67mHz);并将主机名为“https://www.360docs.net/doc/b717165597.html,”上的EPRB作为缺省的编程器。

附录:Make 及Makefile

无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员来说简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。因此,有效的利用make和makefile工具可以大大提高项目开发的效率。

1Makefile文件

Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关

系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。makefile 文件是许多编译器――包括 Windows NT 下的编译器――维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。

在 UNIX 系统中,习惯使用 Makefile 作为 makfile 文件。如果要使用其他文件作为makefile,则可利用类似下面的 make 命令选项指定 makefile 文件:

$ make -f Makefile.debug

例如,一个名为prog的程序由三个C源文件filea.c、fileb.c和filec.c以及库文件LS编译生成,这三个文件还分别包含自己的头文件a.h 、b.h和c.h。通常情况下,C编译器将会输出三个目标文件filea.o、fileb.o和filec.o。假设filea.c和fileb.c都要声明用到一个名为defs 的文件,但filec.c不用。即在filea.c和fileb.c里都有这样的声明:

#include "defs"

那么下面的文档就描述了这些文件之间的相互联系:

---------------------------------------------------------

#It is a example for describing makefile

prog : filea.o fileb.o filec.o

cc filea.o fileb.o filec.o -LS -o prog

filea.o : filea.c a.h defs

cc -c filea.c

fileb.o : fileb.c b.h defs

cc -c fileb.c

filec.o : filec.c c.h

cc -c filec.c

----------------------------------------------------------

这个描述文档就是一个简单的makefile文件。

从上面的例子注意到,第一个字符为 # 的行为注释行。第一个非注释行指定prog由三个目标文件filea.o、fileb.o和filec.o链接生成。第三行描述了如何从prog所依赖的文件建立可执行文件。接下来的4、6、8行分别指定三个目标文件,以及它们所依赖的.c和.h文件以及defs文件。而5、7、9行则指定了如何从目标所依赖的文件建立目标。

当filea.c或a.h文件在编译之后又被修改,则 make 工具可自动重新编译filea.o,如果在前后两次编译之间,filea.C 和a.h 均没有被修改,而且 test.o 还存在的话,就没有必要重新编译。这种依赖关系在多源文件的程序编译中尤其重要。通过这种依赖关系的定义,make 工具可避免许多不必要的编译工作。当然,利用 Shell 脚本也可以达到自动编译的效果,但是,Shell 脚本将全部编译任何源文件,包括哪些不必要重新编译的源文件,而 make 工具则可根据目标上一次编译的时间和目标所依赖的源文件的更新时间而自动判断应当编译哪个源文件。

Makefile文件作为一种描述文档一般需要包含以下内容:

◆宏定义

◆ 源文件之间的相互依赖关系

◆ 可执行的命令

Makefile中允许使用简单的宏指代源文件及其相关编译信息,在Linux中也称宏为变量。在用宏时只需在变量前加$符号,但值得注意的是,如果变量名的长度超过一个字符,在引用就必须加圆括号()。

下面都是有效的宏引用:

$(CFLAGS)

$2

$Z

$(Z)

其中最后两个引用是完全一致的。

需要注意的是一些宏的预定义变量,在Unix系统中,$*、$@、$?和$<四个特殊宏的值在执行命令的过程中会发生相应的变化,而在GNU make中则定义了更多的预定义变量。

宏定义的使用可以使我们脱离那些冗长乏味的编译选项,为编写makefile文件带来很大的方便。

---------------------------------------------------------

# Define a macro for the object files

OBJECTS= filea.o fileb.o filec.o

# Define a macro for the library file

LIBES= -LS

# use macros rewrite makefile

prog: $(OBJECTS)

cc $(OBJECTS) $(LIBES) -o prog

……

---------------------------------------------------------

此时如果执行不带参数的make命令,将连接三个目标文件和库文件LS;但是如果在make命令后带有新的宏定义:

make "LIBES= -LL -LS"

则命令行后面的宏定义将覆盖makefile文件中的宏定义。若LL也是库文件,此时make命令将连接三个目标文件以及两个库文件LS和LL。

在Unix系统中没有对常量NULL作出明确的定义,因此我们要定义NULL字符串时要使用下述宏定义:

STRINGNAME=NULL

2Make命令

在make命令后不仅可以出现宏定义,还可以跟其他命令行参数,这些参数指定了需要编译的目标文件。其标准形式为:

target1 [target2 …]:[:][dependent1 …][;commands][#…]

[(tab) commands][#…]

方括号中间的部分表示可选项。Targets和dependents当中可以包含字符、数字、句点和"/"符号。除了引用,commands中不能含有"#",也不允许换行。

在通常的情况下命令行参数中只含有一个":",此时command序列通常和makefile文件中某些定义文件间依赖关系的描述行有关。如果与目标相关连的那些描述行指定了相关的command序列,那么就执行这些相关的command命令,即使在分号和(tab)后面的aommand 字段甚至有可能是NULL。如果那些与目标相关连的行没有指定command,那么将调用系统默认的目标文件生成规则。

如果命令行参数中含有两个冒号"::",则此时的command序列也许会和makefile中所有描述文件依赖关系的行有关。此时将执行那些与目标相关连的描述行所指向的相关命令。同

时还将执行build-in规则。

如果在执行command命令时返回了一个非"0"的出错信号,例如makefile文件中出现了错误的目标文件名或者出现了以连字符打头的命令字符串,make操作一般会就此终止,但如果make后带有"-i"参数,则make将忽略此类出错信号。

Make命本身可带有四种参数:标志、宏定义、描述文件名和目标文件名。其标准形式为:

Make [flags] [macro definitions] [targets]

Unix系统下标志位flags选项及其含义为:

-f file指定file文件为描述文件,如果file参数为"-"符,那么描述文件指向标准输入。如果没有"-f"参数,则系统将默认当前目录下名为makefile或者名为Makefile的文件为描述文件。在Linux中, GNU make 工具在当前工作目录中按照GNUmakefile、makefile、Makefile 的顺序搜索 makefile文件。

-i 忽略命令执行返回的出错信息。

-s 沉默模式,在执行之前不输出相应的命令行信息。

-r 禁止使用build-in规则。

-n 非执行模式,输出所有执行命令,但并不执行。

-t 更新目标文件。

-q make操作将根据目标文件是否已经更新返回"0"或非"0"的状态信息。

-p输出所有宏定义和目标文件描述。

-d Debug模式,输出有关文件和检测时间的详细信息。

Linux下make标志位的常用选项与Unix系统中稍有不同,下面我们只列出了不同部分:-c dir在读取 makefile 之前改变到指定的目录dir。

-I dir 当包含其他 makefile文件时,利用该选项指定搜索目录。

-h help文挡,显示所有的make选项。

-w 在处理 makefile 之前和之后,都显示工作目录。

通过命令行参数中的target ,可指定make要编译的目标,并且允许同时定义编译多个目标,操作时按照从左向右的顺序依次编译target选项中指定的目标文件。如果命令行中没有指定目标,则系统默认target指向描述文件中第一个目标文件。

通常,makefile 中还定义有 clean 目标,可用来清除编译过程中的中间文件,例如:clean:

rm -f *.o

运行 make clean 时,将执行 rm -f *.o 命令,最终删除所有编译过程中产生的所有中间文件。

3隐含规则

在make 工具中包含有一些内置的或隐含的规则,这些规则定义了如何从不同的依赖文件建立特定类型的目标。Unix系统通常支持一种基于文件扩展名即文件名后缀的隐含规则。这种后缀规则定义了如何将一个具有特定文件名后缀的文件(例如.c文件),转换成为具有另一种文件名后缀的文件(例如.o文件):

.c:.o

$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<

系统中默认的常用文件扩展名及其含义为:

.o 目标文件

.c C源文件

.f FORTRAN源文件

.s 汇编源文件

.y Yacc-C源语法

.l Lex源语法

在早期的Unix系统系统中还支持Yacc-C源语法和Lex源语法。在编译过程中,系统会首先在makefile文件中寻找与目标文件相关的.C文件,如果还有与之相依赖的.y和.l文件,则首先将其转换为.c文件后再编译生成相应的.o文件;如果没有与目标相关的.c文件而只有相关的.y文件,则系统将直接编译.y文件。

而GNU make 除了支持后缀规则外还支持另一种类型的隐含规则--模式规则。这种规则更加通用,因为可以利用模式规则定义更加复杂的依赖性规则。模式规则看起来非常类似于正则规则,但在目标名称的前面多了一个 % 号,同时可用来定义目标和依赖文件之间的关系,例如下面的模式规则定义了如何将任意一个 file.c 文件转换为 file.o 文件:%.c:%.o

$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<

#EXAMPLE#

下面将给出一个较为全面的示例来对makefile文件和make命令的执行进行进一步的说明,其中make命令不仅涉及到了C源文件还包括了Yacc语法。本例选自"Unix Programmer's Manual 7th Edition, V olume 2A" Page 283-284

下面是描述文件的具体内容:

---------------------------------------------------------

#Description file for the Make command

#Send to print

P=und -3 | opr -r2

#The source files that are needed by object files

FILES= Makefile version.c defs main.c donamc.c misc.c file.c \

dosys.c gram.y lex.c gcos.c

#The definitions of object files

OBJECTS= vesion.o main.o donamc.o misc.o file.o dosys.o gram.o

LIBES= -LS

LINT= lnit -p

CFLAGS= -O

make: $(OBJECTS)

cc $(CFLAGS) $(OBJECTS) $(LIBES) -o make

size make

$(OBJECTS): defs

gram.o: lex.c

cleanup:

-rm *.o gram.c

install:

@size make /usr/bin/make

cp make /usr/bin/make ; rm make

#print recently changed files

print: $(FILES)

pr $? | $P

touch print

test:

make -dp | grep -v TIME>1zap

/usr/bin/make -dp | grep -v TIME>2zap

diff 1zap 2zap

rm 1zap 2zap

lint: dosys.c donamc.c file.c main.c misc.c version.c gram.c

$(LINT) dosys.c donamc.c file.c main.c misc.c version.c \

gram.c

rm gram.c

arch:

ar uv /sys/source/s2/make.a $(FILES)

----------------------------------------------------------

通常在描述文件中应象上面一样定义要求输出将要执行的命令。在执行了make命令之后,输出结果为:

$ make

cc -c version.c

cc -c main.c

cc -c donamc.c

cc -c misc.c

cc -c file.c

cc -c dosys.c

yacc gram.y

mv y.tab.c gram.c

cc -c gram.c

cc version.o main.o donamc.o misc.o file.o dosys.o gram.o \

-LS -o make

13188+3348+3044=19580b=046174b

最后的数字信息是执行"@size make"命令的输出结果。之所以只有输出结果而没有相应的命令行,是因为"@size make"命令以"@"起始,这个符号禁止打印输出它所在的命令行。

描述文件中的最后几条命令行在维护编译信息方面非常有用。其中"print"命令行的作用是打印输出在执行过上次"make print"命令后所有改动过的文件名称。系统使用一个名为print的0字节文件来确定执行print命令的具体时间,而宏$?则指向那些在print文件改动过之后进行修改的文件的文件名。如果想要指定执行print命令后,将输出结果送入某个指定的文件,那么就可修改P的宏定义:

make print "P= cat>zap"

大多数自由软件提供的是源代码,而不是现成的可执行文件,这就要求用户根据自己系统的实际情况和自身的需要来配置、编译源程序后,软件才能使用。

第二章 TinyOS简介

本课介绍与TinyOS相关的一些主要概念,包括对组件component、接口interface、命令command及事件event等概念的描述,解释了TinyOS的编程模型,并详细描述了不同文件类型的角色。

本课还介绍了nesC语言,TinyOS系统就是用该语言写的。对该语言的概念和语法有了基本的了解以后就可以在这个环境中编写自己的应用程序了。

1 简介

TinyOS系统、库及应用程序都是用nesC语言写的语言写的,这时一种新的用于编写结构化的基于组件的应用程序的语言。nesC语言主要用于诸如传感器网络等嵌入式系统。nesC 具有类似于C语言的语法,但支持TinyOS的并发模型,同时具有机构化机制、命名机制,能够与其他软组件链接在一起从而形成一个鲁棒的网络嵌入式系统。其主要目标是帮助应用程序设计者建立可易于组合成完整、并发式系统的组件,并能够在编译时执行广泛的检查。 TinyOS定义了许多在nesC中所表达的重要概念。首先,nesC应用程序要建立在定义良好、具有双向接口的组件之上。其次,nesC定义了并发模型,该模型是基于任务(tast)及硬件事件句柄(hardware event handler)的,在编译时会检测数据争用(data race)。

1、组件

1)说明

任何一个nesC 应用程序都是有一个或多个组件链接起来,从而形成一个完整的可执行程序的。组件提供(provide)并使用(use)接口。这些接口是组件的唯一访问点并且它们是双向的。接口声明了一组函数,称为命令(command),接口的提供者必须实现它们;还声明了另外一组函数,称为事件(event),接口的使用者必须实现它们。对于一个组件而言,如果它要使用某个接口中的命令,它必须实现这个接口的事件。一个组件可以使用或提供多个接口以及同一个接口的多个实例。

2)实现

在nesC中有两种类型的组件,分别称为模块(module)和配置(configuration)。模块提供应用程序代码,实现一个或多个接口;配置则是用来将其它组件装配起来的组件,将各个组件所使用的接口与其它组件提供的接口连接在一起。这种行为称为导通(wiring)。每个nesC应用程序都由一个顶级配置所描述,其内容就是将该应用程序所用到的所有组件导通起来,形成一个有机整体。

nesC的所有源文件,包括interface、module和配置,其文件后缀(扩展名)都是“.nc”。要了解有关命名规则方面的详细信息,请参看TinyOS Coding and Naming Conventions。2、并发模型(Concurrency Model)

TinyOS一次仅执行一个程序。组成程序的组件来自于两个方面,一部分是系统提供的组件,另一部分是为特定应用用户自定义的组件。程序运行时,有两个执行线程:一个称为任务(task),另一个称为硬件事件句柄(hardware event handler)。任务是被延期执行的函数,它们一旦被调度,就会运行直至结束,并且在运行过程中不准相互抢占。硬件事件句柄是用来相应和处理硬件中断的,虽然也要运行完毕,但它们可能会抢占任务或其他硬件事件句柄的执行。命令和事件要作为硬件事件句柄的一部分而执行必须使用关键字async来声明。

因为任务和硬件事件句柄可能被其他异步代码所抢占,所以nesC程序易于受到特定竞争条件的影响,导致产生不一致或不正确的数据。避免竞争的办法通常是在任务内排他地访问共享数据,或访问所有数据都使用原子语句。nesC编译器会在编译时向程序员报告潜在的数据争用,这里面可能包含事实上并不可能发生的冲突。如果程序员确实可以担保对某个数据的访问不会导致麻烦,可以将该变量使用关键字norace来声明。但使用这个关键字一定要格外小心。

要了解用nesC编程的更多信息,请参看nesC Language Reference Manual。

2 应用程序举例:Blink

下面来看一个完整的应用程序的例子,通过这个例子来具体了解在TinyOS环境中使用nesC应用程序的结构和使用细节。应用程序Blink位于apps/Blink目录下,这时一个简单的测试程序,其作用是使微粒上的红色的LED灯以1Hz的频率闪烁。

Blink应用程序由两个组件组成:一个名为“BlinkM.nc”的模块和一个名为“Blink.nc”的配置。前面讲过,所有应用程序都需要一个顶级配置文件,习惯上其名称与应用程序本身同名。本例中,“Blink.nc”就是Blink应用程序的配置,也是nesC编译器用来生成可执行程序文件的源文件。另一方面,“BlinkM.nc”是提供Blink应用程序实际实现的文件。“Blink.nc”是用来将“BlinkM.nc”模块与Blink应用程序所需的其他组件导通起来的。

将模块和配置予以严格地区分,可以使系统设计者快速地重新装配(snap together)应用程序,从而使得应用程序的设计和更新更加方便易行。例如:某个应用设计者可能提供一

实际上并不设计其中任何一个模块;同时,由另一个开发者来提供一套全新的适用于该应用范围的“库”模块。这样,将不同粒度的设计工作有效的分开,符合软件设计的一般规则。

当然,配置和模块有时也同时出现在一起,如本例中的Blink和BlinkM。在TinyOS源文件树中,通常用类似Foo.nc的文件表示配置,而用类似FooM.nc的文件表示相应模块。当然,程序员完全可以使用其他方式的命名规则,但采取上述方式会使问题简单明了。TinyOS中的其他命名规则请参看summary。

2.1Blink.nc配置

,它可以将包含顶级配置的文件编译成可执行的应用程序。一般而

Makefile文件,允许进行平台选择以及在调用ncc 时使用某些适当的选项。

先来看看这个应用程序的配置源文件Blink.nc:

Blink.nc

configuration Blink {

}

implementation {

components Main, BlinkM, SingleTimer, LedsC;

Main.StdControl -> SingleTimer.StdControl;

Main.StdControl -> BlinkM.StdControl;

BlinkM.Timer -> SingleTimer.Timer;

BlinkM.Leds -> LedsC;

}

首先看关键字configuration,它表明这时一个配置文件。开头的两行

configuration Blink {

}

只是简单地声明了该配置名为Blink。跟模块一样,在声明后的这个花括号内可以指定uses 子句和provides子句。这一点非常重要:配置可以提供和使用接口。

配置的实际内容是由跟在关键字implementation后面的花括号部分来实现的。Components这一行指定了该配置要引用的组件集合,此例中是Main,BlinkM,SingleTimer 和LedsC。实现的剩余部分将这些组件使用的接口与提供这些接口的其他组件连接起来,即是前面所说的“导通”操作。

Mian是在TinyOS应用程序中首先被执行的一个组件。确切的说,在TinyOS中执行的第一个命令是Main.StdControl.init(),接下来是Main.StdControl.start()。因此,TinyOS

程序在其配置中必须要有Main组件。接口StdControl是用来初始化和启动TinyOS组件的一个公共(通用)接口,它的源文件位于tos/interfaces/StdControl.nc,代码如下所示:StdControl.nc

interface StdControl

{

/**

* Initialize the component and its subcomponents.

*

* @return Whether initialization was successful.

*/

command result_t init();

/**

* Start the component and its subcomponents.

*

* @return Whether starting was successful.

*/

command result_t start();

/**

* Stop the component and pertinent subcomponents (not all

* subcomponents may be turned off due to wakeup timers, etc.).

*

* @return Whether stopping was successful.

*/

command result_t stop();

}

可以看出StdControl接口定义了三个命令(command),分别是init(),start(),及stop()。当组件第一次初始化时调用init() 命令,启动时调用start()命令。stop()命令是在组件停止时

调用,例如,将其控制的设备的电源断开。init() 命令可以被调用多次,但如果调用了start()命令或stop()命令以后就再也不能被调用。特别地,StdControl的有效调用模式为init*(start | stop)*。这三条命令都具有“深”层次的语义;调用某个组件上的init()命令必须使它调用其子组件上的所有init()命令。

Blink配置中有如下两行:

Main.StdControl -> SingleTimer.StdControl;

Main.StdControl -> BlinkM.StdControl;。

其作用时将Main组件的接口StdControl与BlinkM 和SingleTimer中的StdControl接口导通起来。SingleTimer.StdControl.init()及BlinkM.StdControl.init()将被Main.StdControl.init()调用。同样的规则也适用于start()命令及stop()命令。

至于“被使用(used)”的接口,其子组件的初始化函数必须被使用组件显式地调用。如:BlinkM模块使用接口Leds,于是Leds.init()命令要再BlinkM.init()中被显式地调用。

nesC使用箭头(->)来指示和标识接口间的关系,其意义为“绑定”,即左边的接口绑定到右边的实现上。换言之,使用接口的组件在左边,提供接口的组件在右边。

“BlinkM.Timer -> SingleTimer.Timer;”这一句话的意思是将组件BlinkM所使用的接口Timer与组件SingleTimer所提供的接口Timer导通起来。箭头左边的BlinkM.Timer引用名为Time的接口(tos/interfaces/Timer.nc),而箭头右边的SingleTimer.Timer则指向Timer

的实现(tos/lib/SingleTimer.nc)。箭头的作用就是将其左边的接口与其右边的实现绑定起来。

nesC支持同一个接口的多个实现。Timer接口即是如此。SingleTimer组件实现了一个单一的Timer接口;而另一个组件TimerC(tos/system/TimeC.nc)使用timer id作为参数实现了多个Timer。下一课将进一步讨论定时器的相关问题。

导通也可以使用隐式的写法,如:

BlinkM.Leds -> LedsC;

就是

BlinkM.Leds -> LedsC.Leds;

简写形式。若箭头右边没有指定接口名,nesC编译器缺省情况下尝试与箭头左边同名的接口进行绑定。

2.2BlinkM.nc模块

再来看看BlinkM.nc模块:

BlinkM.nc

/**

* Implementation for Blink application. Toggle the red LED when a

* Timer fires.

**/

module BlinkM {

provides {

interface StdControl;

}

uses {

interface Timer;

英汉翻译基础教程练习问题详解总主编冯庆华

汉英翻译基础教程 第一章汉英词汇比较与翻译 (2) 第二章词法翻译的一般技巧 (4) 第三章名词的抽象和具体译法 (9) 第四章动词的翻译 (11) 第五章数词和冠词的翻译 (12) 第六章成语的英译 (13) 第七章修辞格的翻译 (17) 笫八章文化词语的翻译 (19) 第九章汉英句子比较与翻译 (20) 第十章换序和转态译法 (23) 笫十一章断句合句译法 (25) 笫十二章长句的翻译 (27) 第十四章汉英语篇比较与翻译 (29) 第十五章风格与翻译 (30) 第十六章语用与翻译 (32)

第一章汉英词汇比较与翻译 第一节翻译中的选义 一、结合语境选择较贴切的译文 1. b 2. a 3. b 4. a 二、译出下列词语,注意词语的不同搭配 1. a swarm of bees a brood of chickens a litter of pups 2. a bevy of beautiful ladies a pack of hounds a team of ducks a herd of antelopes 3. unfailing support proactive fiscal policy make effective use of overseas resources 4. make a phone call take a taxi knit a woolen sweater fetch water play basketball spray insecticide 5. basic wage capital construction essential commodity primary industry fundamental interest 三、翻译下列句子,注意画线词语的理解 1. The two leaders exchanged views on bilateral relations and issues of common concern 2. Party members should listen carefully to the opinions of the general public. 3. They offered some suggestions for the revision of the plan. 4. Everyone complained against such a practice. 5. They had a dispute at the meeting. 6. You should follow the doctor's advice. 7. They reached a consensus on this issue. 8. There is still some unfinished business to settle. 9. We have consulted him about the matter. 10. Please go back. There is nothing of your concern now 第二节翻译中的选词 一、翻译下列各句,注意词的选择和搭配。 1. That depends upon circumstances.

Tinyos操作系统简介

Tinyos操作系统简介 Tinyos简介 最近看了篇关于TinyOS简介的文章,摘录出来保存下,介绍tinyos编程入门的资料不少,但从操作系统 的角度分析tinyos是有必要的,毕竟TinyOS做为无线传感网络操作系统中最重要的一种,也是最常用的 一种,分析它的实现机制有助于以后改进针对无线传感网络的操作系统,也是嵌入式操作系统的一类。 An open-source operating system designed for wireless embedded sensor network. More specifically, it is designed to support the concurrency intensive operations required by networked sensors with minimal hardware requirements. TinyOS Features ? No Kernel: Direct hardware manipulation. ? No Process Management: Only one process on the fly. ? No Virtual Memory: Single linear physical address space. ? No S/w Signal or Exception: Function call instead. ? No User Interface, power constrained. ? Unusually application specific H/w and S/w. ? Multiple flows, concurrency intensive bursts. ? Extremely passive vigilance (power saving). ? Tightly coupled with the application. ? Simulator: TOSSIM, PowerTOSSIM

自考英汉翻译教程重点-推荐下载

英汉翻译教程 一、课程介绍 《英汉翻译教程》是全国高等教育自学考试英语专业本科阶段的一门必考课程。英汉翻译包括英译汉和汉译英,是一门实践性很强的课程。本课程除简单介绍中外翻 译理论知识外,主要是通过对照阅读,引导应考者研究英汉两种语言的差异,找出英汉互 译的规律,用以指导实践。 本课程与英语专业其他课程相辅相成。它作为一门实践课,有赖于英语专业其他课程 为应考者打下良好的英语基础,使应考者掌握一定的词汇量和语法知识,初步达到阅读英 文原著的水平,并有有定的写作能力,因而具备从事英汉翻译的条件。另一方面,通过大 量的翻译实践和语言对比研究,应考者可以进一步认识英汉两种语言各自的特点。例如, 汉语多重复实词,主谓搭配较松多用并列结构;英语英多用代称,主谓搭配较紧,多用主 从结构,等等。这是本课程的重点。但在翻译时,往往因受原文的影响,从容易忽略在译 中体现上述特点。这也就是本课程难学之处。但通常学习本课程,了解了英汉两种语言各 自的特点,并能在翻译实践中恰当地加以运用,定会提高使用两种语言的能力和翻译水平。 这对于应考者打好英语基础,学好英语专业其他课程,也是有益的。 本课程采取单元教学,共分十个单元。单元中每课有对照阅读和练习,并附有提示和解说。每单元有一小结,重点说明通过语言对比可以看出的英汉两种语言各自的特点。 二、学习要求 1. 熟悉英汉两种语言各自的特点; 2. 能将中等难度的英语文章译成汉语,内容准确、内容流畅; 3. 能将比较简易的汉语文章译英语,用词得当,语法平稳。三、试题类型: 第一题:选择题(30分)。 80%来自于课本中每单元后的小结,非常重要, 一定要看。 考点:看似简单的句子的翻译、俚语的翻译、翻译常识等。 第二题:短语翻译:英译汉、汉译英。后面我们给的补充材料中,会包括 80%的题。 第三题:改错题:英译汉、汉译英改错。 第四题: 段落翻译 四、课程内容概要: 第一单元 故事 1.故事选篇。其特点是:以第一人称或第三人称讲述自己或别人的经历。情节具体, 文笔细腻生动。2.语言对比: (1)代词。英语代词用得多,汉语实词用得多。英语可先出代词,后出实词。汉语则先出实词,后出代词。 、管路敷设技术通过管线不仅可以解决吊顶层配置不规范高中资料试卷问题,而且可保障各类管路习题到位。在管路敷设过程中,要加强看护关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置保护层防腐跨接地线弯曲半径标高等,要求技术交底。管线敷设技术包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内,强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。、电气课件中调试对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行 高中资料试卷调整试验;通电检查所有设备高中资料试卷相互作用与相互关系,根据生产工艺高中资料试卷要求,对电气设备进行空载与带负荷下高中资料试卷调控试验;对设备进行调整使其在正常工况下与过度工作下都可以正常工作;对于继电保护进行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启动方案;对整套启动过程中高中资料试卷电气设备进行调试工作并且进行过关运行高中资料试卷技术指导。对于调试过程中高中资料试卷技术问题,作为调试人员,需要在事前掌握图纸资料、设备制造厂家出具高中资料试卷试验报告与相关技术资料,并且了解现场设备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。 、电气设备调试高中资料试卷技术电力保护装置调试技术,电力保护高中资料试卷配置技术是指机组在进行继电保护高中资料试卷总体配置时,需要在最大限度内来确保机组高中资料试卷安全,并且尽可能地缩小故障高中资料试卷破坏范围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必要高中资料试卷突然停机。因此,电力高中资料试卷保护装置调试技术,要求电力保护装置做到准确灵活。对于差动保护装置高中资料试卷调试技术是指发电机一变压器组在发生内部故障时,需要进行外部电源高中资料试卷切除从而采用高中资料试卷主要保护装置。

《机械工程专业英语教程》课文翻译

Lesson 1 力学的基本概念 1、词汇: statics [st?tiks] 静力学;dynamics动力学;constraint约束;magnetic [m?ɡ'netik]有磁性的;external [eks't?:nl] 外面的, 外部的;meshing啮合;follower从动件;magnitude ['m?ɡnitju:d] 大小;intensity强度,应力;non-coincident [k?u'insid?nt]不重合;parallel ['p?r?lel]平行;intuitive 直观的;substance物质;proportional [pr?'p?:??n?l]比例的;resist抵抗,对抗;celestial [si'lestj?l]天空的;product乘积;particle质点;elastic [i'l?stik]弹性;deformed变形的;strain拉力;uniform全都相同的;velocity[vi'l?siti]速度;scalar['skeil?]标量;vector['vekt?]矢量;displacement代替;momentum [m?u'ment?m]动量; 2、词组 make up of由……组成;if not要不,不然;even through即使,纵然; Lesson 2 力和力的作用效果 1、词汇: machine 机器;mechanism机构;movable活动的;given 规定的,给定的,已知的;perform执行;application 施用;produce引起,导致;stress压力;applied施加的;individual单独的;muscular ['m?skjul?]]力臂;gravity[ɡr?vti]重力;stretch伸展,拉紧,延伸;tensile[tensail]拉力;tension张力,拉力;squeeze挤;compressive 有压力的,压缩的;torsional扭转的;torque转矩;twist扭,转动;molecule [m likju:l]分子的;slide滑动; 滑行;slip滑,溜;one another 互相;shear剪切;independently独立地,自立地;beam梁;compress压;revolve (使)旋转;exert [iɡ'z?:t]用力,尽力,运用,发挥,施加;principle原则, 原理,准则,规范;spin使…旋转;screw螺丝钉;thread螺纹; 2、词组 a number of 许多;deal with 涉及,处理;result from由什么引起;prevent from阻止,防止;tends to 朝某个方向;in combination结合;fly apart飞散; 3、译文: 任何机器或机构的研究表明每一种机构都是由许多可动的零件组成。这些零件从规定的运动转变到期望的运动。另一方面,这些机器完成工作。当由施力引起的运动时,机器就开始工作了。所以,力和机器的研究涉及在一个物体上的力和力的作用效果。 力是推力或者拉力。力的作用效果要么是改变物体的形状或者运动,要么阻止其他的力发生改变。每一种

TinyOS在windows中安装步骤

1.TinyOS 1.1概要 TinyOS应用程序都是有一个或多个组件链接起来,从而形成一个完整的可执行程序。组件中实现了功能接口,同时也能使用其它组件提供的接口。 在接口定义中可以申明命令函数和事件函数,命令函数由接口提供者实现,事件函数由接口使用者实现。对于一个组件而言,如果它要使用某个组件接口中的命令,它必须实现这个接口的事件。一个组件可以使用或提供多个接口以及同一个接口的多个实例。 组件有两种类型:模块(module)和配置(configuration)。模块提供应用程序代码,实现一个或多个接口;配置则是用来将其它组件装配起来,将各个组件所使用的接口与其它组件提供的接口连接在一起,进行导通。每个应用程序都由一个顶级配置所描述,其内容就是将该应用程序所用到的所有组件导通起来,形成一个有机整体。 TinyOS应用程序必须包含Main 组件,Main组件是首先被执行的一个组件。确切的说,在TinyOS 中执行的第一个命令是Main.StdControl.init(),接下来是Main.StdControl.start()。 Main组件完成以下功能:芯片初始化,外围电路初始化,操作系统调度数据结构初始化,子组件初始化,启动子组件件,进入调度死循环从而将控制权交给操作系统,一旦没有任务可以调度就进入休眠状态以降低系统功耗。 TinyOS的调度系统是TinyOS系统的核心部分。它采用先进先出的排队策略,任务之间不可以抢占,但是中断可以抢占任务,中断是否可以抢占中断则是应用程序自己控制的。即如果中断处理程序进入中断以后执行了关中断的操作,那么这个中断将是不可抢占的,否则在服务的过程中就有可能被抢占掉。另外还要注意,在中断服务程序里面是可以创建任务的。 1.2在Cygwin下的安装 在/etc/bash.bashrc文件中增加以下内容: export TOSROOT=/opt/tinyos-2.x export TOSDIR=$TOSROOT/tos export CLASSPATH=C:\cygwin\opt\tinyos-2.x\support\sdk\java\tinyos.jar export CLASSPATH="$CLASSPATH;." export MAKERULES=$TOSROOT/support/make/Makerules export PATH=/opt/msp430/bin:/opt/jflashmm:$PATH 安装以下软件包: rpm -ivh --ignoreos c:/downloads/avr-binutils-2.17tinyos-3.cygwin.i386.rpm rpm -ivh --ignoreos c:/downloads/avr-gcc-4.1.2-1.cygwin.i386.rpm rpm -ivh --ignoreos c:/downloads/avr-libc-1.4.7-1.cygwin.i386.rpm rpm -ivh --ignoreos c:/downloads/avarice-2.4-1.cygwin.i386.rpm rpm -ivh --ignoreos c:/downloads/avr-insight-6.3-1.cygwin.i386.rpm

专业英语翻译

Veterinary Immunology and Immunopathology 141 (2011) 133–138 Contents lists available at ScienceDirect Veterinary Immunology and Immunopathology j o u r n a l h o m e p a g e :w w w.e l s e v i e r.c o m /l o c a t e /v e t i m m Short communication Saccharomyces cerevisiae decreases in?ammatory responses induced by F4+enterotoxigenic Escherichia coli in porcine intestinal epithelial cells Galliano Zanello a ,b ,1,Franc ?ois Meurens a ,1,Mustapha Berri a ,Claire Chevaleyre a ,Sandrine Melo a ,Eric Auclair b ,Henri Salmon a ,? a Institut National de la Recherche Agronomique (INRA),UR1282,Infectiologie Animale et SantéPublique,F-37380Nouzilly (Tours),Indre et Loire,France b SociétéIndustrielle Lesaffre,Lesaffre Feed Additives,Marcq-en-Baroeul,France a r t i c l e i n f o Article history: Received 19October 2010Received in revised form 13December 2010 Accepted 31January 2011Keywords: Saccharomyces cerevisiae Enterotoxigenic Escherichia coli Pig Intestinal epithelial cells Cytokines Chemokines a b s t r a c t Probiotic yeasts may provide protection against intestinal in?ammation induced by enteric pathogens.In piglets,infection with F4+enterotoxigenic Escherichia coli (ETEC)leads to in?ammation,diarrhea and intestinal damage.In this study,we investigated whether the yeast strains Saccharomyces cerevisiae (Sc ,strain CNCM I-3856)and S.cerevisiae variety boulardii (Sb ,strain CNCM I-3799)decreased the expression of pro-in?ammatory cytokines and chemokines in intestinal epithelial IPI-2I cells cultured with F4+ETEC.Results showed that viable Sc inhibited the ETEC-induced TNF-?gene expression whereas Sb did not.In contrast,killed Sc failed to inhibit the expression of pro-in?ammatory genes.This inhibition was dependent on secreted soluble factors.Sc culture supernatant decreased the TNF-?,IL-1?,IL-6,IL-8,CXCL2and CCL20ETEC-induced mRNA.Furthermore,Sc culture supernatant ?ltrated fraction <10kDa displayed the same effects excepted for TNF-?.Thus,our results extended to Sc (strain CNCM I-3856)the inhibitory effects of some probiotic yeast strains onto in?ammation. ? 2011 Elsevier B.V. All rights reserved. 1.Introduction Enterotoxigenic Escherichia coli (ETEC)are pathogenic gram negative bacteria which infect humans and sev-eral species of farm animals such as calves and pigs.ETEC interacts with intestinal epithelial cells,colonizes the small intestine and secretes enterotoxins such as the heat-labile enterotoxins (LT),the heat-stable enterotox-ins (STa and/or STb),and the enteroaggregative E .coli heat-stable enterotoxin 1(EAST1)(Nagy and Fekete,2005).In pigs,ETEC infection and enterotoxin secretions can induce intestinal in?ammation and diarrhea resulting in reduced growth rate,increased mortality and economic ?Corresponding author.Tel.:+33247427331;fax:+33247427779.E-mail addresses:salmon@tours.inra.fr ,henri.salmon@tours.inra.fr (H.Salmon).1 These authors contributed equally to this work.loss (Fairbrother et al.,2005).Moreover,F4+ETEC strain induce pro-in?ammatory response in intestinal epithe-lial cells (Devriendt et al.,2010).Administration of the yeast Saccharomyces cerevisiae variety boulardii (Sb )has been shown to protect pigs in reducing ETEC transloca-tion (Lessard et al.,2009).In vitro studies showed that Sb secretes soluble factors that decrease the expression of pro-in?ammatory cytokines induced by enteric pathogens (Zanello et al.,2009).However,to our knowledge,there is no in vitro data regarding the anti-in?ammatory effects of S.cerevisiae (Sc )secreted soluble factors.Sc and Sb are members of the same species but they differ geneti-cally,metabolically and physiologically (Edwards-Ingram et al.,2007;Hennequin et al.,2001).Thus,in this study,we assessed if the non-commensal and non-pathogenic yeasts Sc (strain CNCM I-3856)and Sb (strain CNCM I-3799)secreted factors allowing the down-regulation of pro-in?ammatory gene expression in intestinal epithe-lial cells cultured with F4+ETEC.Sc (strain CNCM I-3856) 0165-2427/$–see front matter ? 2011 Elsevier B.V. All rights reserved.doi:10.1016/j.vetimm.2011.01.018

郭著章《英汉互译实用教程》(第4版)教材配套题库-第5章 翻译常用的八种技巧【圣才出品】

第5章翻译常用的八种技巧 5.1 重译法 一、英译汉 1. It may seem strange to put into the same packet an industrial revolution and two political revolutions. But the fact is that they were all social revolutions. 【译文】把一场工业革命同两次政治革命归作一类似乎有点奇怪,但事实上这三次革命都是社会革命。 2. Two things are outstanding in the creation of the English system of canals, and they characterise all the Industrial Revolution. 【译文】在修建英国的运河网的过程中,有两点是非常突出的,而这两点也正是整个工业革命的特点。 3. The canals were arteries of communication: they were not made to carry pleasure boats, but barges. 【译文】运河是交通的动脉,开运河不是为了走游艇,而是为了通行驳船。 4. James Brindley was a pioneer in the art of building canals or, as it was then called, ‘navigation’. 【译文】布林德雷是开凿运河的先驱者,当时人们把开凿运河叫做navigation。

5. Several factors accounted for this extraordinary achievement. One was the expansion into the west. Another was the application of machinery to farming. 【译文】取得这一特殊成就有几方面的原因:第一个原因是向西部的扩展,第二个原因是机器在农业上的应用。 6. …for the establishment of agricultural and industrial colleges. These were to serve both as educational institutions and as centers for research in scientific farming. 【译文】……以便建立农业和工业学院。这些学校一方面是教育机关,另一方面,也是农业科学的研究中心。 7. …This is nothing li ke back home in Colorado. We have rains there, too. Thunderstorms in spring and summer... 【译文】……这跟家乡科罗拉多的情况迥然不同。科罗拉多也下雨。春夏两季雷雨交加……【解析】原文第二句用there代替in Colorado,而译文重复“科罗拉多”。 8. The world watches. The world listens. The world waits to see what we will do. 【译文】全世界在注视着。全世界在倾听着。全世界在等待着看我们将做些什么。 9. As you said in your toast, the Chinese people are a great people, the American people are a great people.

《英汉翻译课程教学大纲》

英汉翻译课程教学大纲 一、课程的目的和任务 《英汉翻译教程》和《汉英翻译教程》的教学目的和任务是,从英译汉和汉译英的一般规律和原则出发,围绕翻译的基本理论、英汉异同的对比以及翻译实践中成功或失败的实例,介绍汉英两种语言的对比与分析、各类文体的语言特点以及不同翻译方法,向学生传授基本的翻译理论和常用方法、技巧,通过反复实践培养学生汉英翻译基本技能。通过学习,学生能够熟练地运用已掌握的英语基本语法和词汇等知识,忠实、准确、通顺、完整地将汉语句子、段落和短文译成英语,并对文化差异有着较强的敏感性,能够较好地处理英汉互译中具有民族特色的形象、比喻等,胜任一般性的政治、经济、文化、科技、应用文等的翻译工作。同时,还要注重培养学生严谨的学风,避免不求甚解、逐词死译和望文生义。 适当补充口译实践,训练学生在政治、经济、文化等方面的能力,并提高学生的政策水平和涉外工作能力。 二、课程的基本要求 《英汉翻译教程》和《汉英翻译教程》课程的教学分为翻译方法和技巧训练阶段和短文翻译两个阶段,其分别要求是: 1、翻译方法和技巧训练阶段的基本要求: (1)、词汇: 掌握10000-12000 个词汇以及这些单词构成的常用词组;正确而熟练地使用其中5000-6000 个词 汇及最常用的搭配,能够运用到汉英互译中。 (2)语法: 熟练地使用各种衔接手段,连贯地表达思想,侧重语法结构在翻译过程中的理解和应用。 (3)阅读能力: 能读懂一般英美报刊杂志上的社论和书评,理解文章大意,分辨事实与细节;能读懂有一定难度的 历史传记及文学作品,理解其真实含义;能分析上述题材文章的思想观点,语篇结构,语言特点和修辞手法。 (4)翻译能力: 能借词典将文字资料译成理解正确、表达准确、译文连贯通顺具一定修辞手段的规范语句,写译的速度达到每小时250-300 词。 2. 短文翻译阶段的基本要求: (1)词汇 1

《英汉翻译基础教程》 笔记及习题(篇章翻译)【圣才出品】

第7单元篇章翻译 7.1 复习笔记 语篇通常指一系列连续的语段或句子构成的语言整体。语篇包括“话语”(discourse)和“篇章”(text)。语篇特征为:连贯、衔接,且具有明确的论题结构。 一、衔接 根据Halliday和Hasan的著作《英语中的衔接》,衔接手段大致可分为两种:语法衔接手段(grammatical cohesion)和词汇衔接手段(lexical cohesion)。前者又可以包括指称(reference)、省略(ellipsis)、替代(substitution)和连词(conjunction)。 1. 指代 指代主要分为三类:人称指代、指示指代和比较指代。 英语中,为了实现衔接,一般尽量采用代词指代前面出现的名词。汉语倾向于重复前文出现的名词,或者采用“零式指称”,省略主语。例: My friend looked somewhat ill at ease when he told me this: At the time when he bought this big house, his children had all been at school. Now they had their own homes and jobs. 【译文】朋友有点不好意思地说,买这座房子时,孩子们还在上学,如今都成家立业了。 2. 省略

省略可以分为名词省略、动词省略和小句省略。例: I had many wonderful ideas, but I only put a few into practice. 【译文】我有很多美妙的想法,但是只把少数付诸实践了。 3. 替代 “替代”指用较简短的语言形式替代上文中的某些词语,使行文简练流畅。 (1)名词替代比较常见的是使用one代替前文出现的某个名词。例: Carrie picked out the new abode because of its newness and bright wood—work. It was one of the very new ones supplied with steam heat, which was a great advantage.(Sister Carrie, Dreiser, T) 【译文】嘉莉选中这套新居所,是因为它是新建的,而且房间的木质部分色泽鲜亮,屋里有暖气,这是当时最新的房子才有的。 【分析】原文中,ones替代了abode;译文中,“房子”与其前面的“居所”构成同义词。 (2)动词替代经常是用助动词do的几种形式来代替前文出现的某个动词或动作意义。例: And yet this John Openshaw seems to me to be walking amid even greater perils than did the Sholtos. 【译文】可是在我看来,这个约翰·奥彭肖似乎是正在面临着比舒尔托更大的危险。 【分析】原文中,did替代了walked amid peril;译文中,该处同样进行了省略处理。 (3)小句替代使用指示代词指代前文出现的某一小句或者某一概念。例: “Well, I’ve got twenty-two dollars, but there’s everything to be paid for this

安装TinyOS需要六个步骤

安装TinyOS需要六个步骤。 1.Installing a Java 1.5 JDK. 安装java jdk 1.5需要配置环境变量 2.Install Cygwin. 安装Windows下的Linux模拟器,cygwin 3.Installing native compilers. 安装单片机工具,AVR或MSP430,根据自己需要。 4.Installing the nesC compiler. 安装nesC和TinyOS_tool 5.Installing the TinyOS source tree. 安装TinyOS2.0.2主文件。 6.Installing the Graphviz visualization tool 安装Graphviz并配置环境变量 一.安装JDK 1.5 下载JDK 2.5 在SUN的官方网站https://www.360docs.net/doc/b717165597.html,/. 安装并配置JDK的环境变量。 二.安装Cygwin 下装Cygwin-1.2a于https://www.360docs.net/doc/b717165597.html,/dist-1.2.0/tools/windows/cygwin-1.2a.tgz 这个版本TinyOS官方测试过,和TinyOS兼容度高。 三.安装单片机工具 下载以下五个rpm包 1.avr-binutils- 2.15tinyos- 3.cygwin.i386.rpm(https://www.360docs.net/doc/b717165597.html,/di st-2.0.0/tools/windows/avr-binutils-2.15tinyos- 3.cygwin.i386.rpm) 2.avr-gcc- 3. 4.3-1.cygwin.i386.rpm(https://www.360docs.net/doc/b717165597.html,/dist-2.0.0/t ools/windows/avr-gcc-3.4.3-1.cygwin.i386.rpm) 3.avr-libc avr-libc-1.2.3-1.cygwin.i386.rpm(https://www.360docs.net/doc/b717165597.html,/dist-2.0.0/too ls/windows/avr-libc-1.2.3- 1.cygwin.i386.rpm) 4.avarice avarice-2.4-1.cygwin.i386.rpm(https://www.360docs.net/doc/b717165597.html,/dist-2.0.0/tools/ windows/avarice-2.4-1.cygwin.i386.rpm) 5.insight (avr-gdb) avr-insight- 6.3-1.cygwin.i386.rpm(https://www.360docs.net/doc/b717165597.html,/dist-1.2.0/to ols/windows/avr-insight-6.3 -1.cygwin.i386.rpm) 下载完成之后把五个包都拷贝到Cygwin的tmp文件夹(在Windows操作即可) 依次安装(要按照顺序安装,它们之间有依赖关系),安装命令如下。 cd /tmp

自考《英汉翻译教程》第一章习题答案以及考试重点

《英汉翻译教程》第一章习题答案 一、Bill Morrow's Birthday Party 比尔?莫罗的寿宴 比尔作为中国政府的客人访问中国,好几次者赶上在北京过生日。每次,主人总要为他举行宴会,周恩来总理也出席。他还记得第一次生日宴会的情景: 我在饭店吃饭,最后总是吃冰激凌。我吃得津津有味,惹得那些女服务员发笑。这次生日宴会,周恩来在场。快到结束的时候,他站起来,走到柜台前,要了一杯冰激凌,放在我面前——别忘了,他可是总理呀!他对我说:“这是为您准备的。”我说:“没想到您会说英语呀。”他笑了起来,接着说:“一点点。”一面说着,一面用食指和拇指比划着。后来有时候我们单独在一起,他就跟我说英语。 “这是为您准备的。”这句话,比尔?莫罗在许多难忘的场合听到过——比如在他乘般沿大运河南下的时候,从旁边驶过的每一条般都拉响汽笛,表示敬意。再比如参观南京长江大桥;在修这座桥以前,要靠渡般在这里运送火车过江。参观大桥的时候,天快黑了,人家给了他一把椅子,请他坐下等一会儿。忽然电灯全亮了,照出了整个大桥的轮廓。“这是为您准备的。”他不满地说道:“你们不应该费这么多电,就为了让我高兴。”人家对他说:“全南京也都可以欣赏嘛。” 比尔?莫罗想了解一些新的情况,周恩来就安排北京大学的专家向他作介绍。比尔说:“我在国内不过是个流浪汉,而你们在这里却把我当成一位要人。”周恩来却说:“您做过些什么,我们是知道的。” 二、The Story of My Life (Excerpt 2) 我的生活(摘录2) 海伦?凯勒 我感到有人走近,于是伸出了手,以为是把手伸向母亲。不知是谁抓住了我的手,把我拉过去,紧紧地搂在她的怀里。就是她教我认识了世上的各种事物,而且不仅如此,她还疼爱我。

各专业课程英文翻译

各专业课程英文翻译(精心整理) 生物及医学专业课程汉英对照表 应用生物学 Applied Biology 医学技术 Medical Technology 细胞生物学 Cell Biology 医学 Medicine 生物学 Biology 护理麻醉学 Nurse Anesthesia 进化生物学 Evolutionary Biology 口腔外科学 Oral Surgery 海洋生物学 Marine Biology 口腔/牙科科学 Oral/Dental Sciences 微生物学 Microbiology 骨科医学 Osteopathic Medicine 分子生物学 Molecular Biology 耳科学 Otology 医学微生物学 Medical Microbiology 理疗学 Physical Therapy 口腔生物学 Oral Biology 足病医学 Podiatric Medicine 寄生物学 Parasutology 眼科学 Ophthalmology 植物生物学 Plant Physiology 预防医学 Preventive Medicine 心理生物学 Psychobiology 放射学 Radiology 放射生物学 Radiation Biology 康复咨询学 Rehabilitation Counseling 理论生物学 Theoretical Biology 康复护理学 Rehabilitation Nursing 野生生物学 Wildlife Biology 外科护理学 Surgical Nursing 环境生物学 Environmental Biology 治疗学 Therapeutics 运动生物学 Exercise Physiology 畸形学 Teratology 有机体生物学 Organismal Biology 兽医学 Veterinary Sciences 生物统计学 Biometrics 牙科卫生学 Dental Sciences 生物物理学 Biophysics 牙科科学 Dentistry 生物心理学 Biopsychology 皮肤学 Dermatology 生物统计学 Biostatistics 内分泌学 Endocrinology 生物工艺学 Biotechnology 遗传学 Genetics 生物化学 Biological Chemistry 解剖学 Anatomy 生物工程学 Biological Engineering 麻醉学 Anesthesia 生物数学 Biomathematics 临床科学 Clinical Science 生物医学科学 Biomedical Science 临床心理学 Clinical Psychology 细胞生物学和分子生物学 Celluar and Molecular Biology 精神病护理学 Psychiatric Nursing 力学专业 数学分析 Mathematical Analysis 高等代数与几何 Advanced Algebra and Geometry 常微分方程 Ordinary Differential Equation 数学物理方法 Methods in Mathematical Physics 计算方法 Numerical Methods 理论力学 Theoretical Mechanics 材料力学 Mechanics of Materials 弹性力学 Elasticity 流体力学 Fluid Mechanics 力学实验 Experiments in Solid Mechanics 机械制图 Machining Drawing 力学概论 Introduction to Mechanics 气体力学 Gas Dynamics 计算流体力学 Computational Fluid Mechanics 弹性板理论 Theory of Elastic Plates 粘性流体力学 Viscous Fluid Flow 弹性力学变分原理 Variational Principles inElasticity 有限元法 Finite Element Method 塑性力学 Introduction of Plasticity

相关文档
最新文档