MTM-CM5000-MSP_Manual_ver1.0.hwp

Similar documents
MTM-CM2000-MSP_Manual_ver1.3.hwp

MTM-CM433MSP Manual.hwp

TIP7xx Series Manual_ver1.3원본.hwp

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

ISP and CodeVisionAVR C Compiler.hwp

Install stm32cubemx and st-link utility

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

Windows 8에서 BioStar 1 설치하기

Studuino소프트웨어 설치

CAN-fly Quick Manual

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

JDK이클립스

<4D F736F F F696E74202D205BBDC7BDC0345DC1B6B5B5BCBEBCADC1A6BEEE2E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

APOGEE Insight_KR_Base_3P11

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.


Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

Mango-E-Toi Board Developer Manual

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

놀이동산미아찾기시스템

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - Armjtag_문서1.doc

NTD36HD Manual

1217 WebTrafMon II

Chapter 1

Microsoft Word - src.doc

BY-FDP-4-70.hwp

10X56_NWG_KOR.indd

DE1-SoC Board

Microsoft Word - AVRISP mkII 장비 운용.doc

슬라이드 1

Microsoft Word ARM_ver2_0a.docx

untitled

슬라이드 제목 없음

Admin Guide for dummy

PowerPoint 프레젠테이션

USER Manual

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1

T100MD+

(SW3704) Gingerbread Source Build & Working Guide

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

CODESYS 런타임 설치과정

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase


untitled

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

슬라이드 1

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

목 차 1. 드라이버 설치 설치환경 드라이버 설치 시 주의사항 USB 드라이버 파일 Windows XP에서 설치 Windows Vista / Windows 7에서 설치 Windows

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

Microsoft PowerPoint - AME_InstallRoutine_ver8.ppt

LXR 설치 및 사용법.doc

1

Mango220 Android How to compile and Transfer image to Target

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

Endpoint Protector - Active Directory Deployment Guide

슬라이드 1

RealDSP UT 프로그램 메뉴얼

Remote UI Guide

인켈(국문)pdf.pdf

온라인등록용 메뉴얼

Microsoft PowerPoint - AD-USBISP_V03_사용법.pptx

TTA Verified : HomeGateway :, : (NEtwork Testing Team)

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

CPX-E-SYS_BES_C_ _ k1

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

untitled

<333820B1E8C8AFBFEB2D5A B8A620C0CCBFEBC7D120BDC7BFDC20C0A7C4A1C3DFC1A42E687770>

DSP_MON 프로그램 메뉴얼

SRC PLUS 제어기 MANUAL

PowerPoint 프레젠테이션

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

Multi Channel Analysis. Multi Channel Analytics :!! - (Ad network ) Report! -! -!. Valuepotion Multi Channel Analytics! (1) Install! (2) 3 (4 ~ 6 Page

ICAS CADWorx SPLM License 평가판설치가이드

Microsoft PowerPoint - USB다운로더PC연결.pptx

슬라이드 1

_USB JTAG Ver1.0 User's Manual.hwp

Interstage5 SOAP서비스 설정 가이드

기존에 Windchill Program 이 설치된 Home Directory 를 선택해준다. 프로그램설치후설치내역을확인해보면 Adobe Acrobat 6.0 Support 내역을확인할수 있다.

Cubase AI installation guide

Microsoft Word - JAVS_UDT-1_상세_메뉴얼.doc

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

슬라이드 제목 없음

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

Windows 네트워크 사용 설명서


안전을 위한 주의사항 제품을 올바르게 사용하여 위험이나 재산상의 피해를 미리 막기 위한 내용이므로 반드시 지켜 주시기 바랍니다. 2 경고 설치 관련 지시사항을 위반했을 때 심각한 상해가 발생하거나 사망에 이를 가능성이 있는 경우 설치하기 전에 반드시 본 기기의 전원을

Microsoft Word - Ahram_ISP_V15_Manual_V20.doc

Microsoft PowerPoint - ch07.ppt

歯AG-MX70P한글매뉴얼.PDF

Transcription:

User Manual This document is copyright c Maxfor technology Inc. 2008 All rights reserved. You may distribute it freely for non-commercial purposes as long as you do not modify it in any way.

- 순서 - Page 4 1. Specfication 4 1.1 의 Block Diagram 4 1.2 Specification 5 1.3 Description 6 1.4 Mechanical Characteristics 7 1.5 Power Characteristic 7 1.6 TI MSP430F1611 Key Feature 8 1.7 Chipcon CC2420 Key Feature 9 2. TinyOS란?? 12 3. TinyOS 설치하기 19 4. Driver 설치하기 25 5. TinyOS 프로그램예제 26 1 Blink 27 2 CntToLedsAndRfm & RfmToLeds 30 3 Oscilloscope 35 4 SurgeTelos 39 5 ReverseUART 41 6 TestUserButton 42 7 Listen / ListenRaw 45 TIP-1> TinyOS를최신버전으로업데이트하기 46 TIP-2> TinyOS를사용할때자주쓰이는명령어들 47 TIP-3> GroupID 또는 RF Channel 바꾸기 49 TIP-4> Sourceforge.net에서 CVS 받기 51 TIP-5> TinyOS installation on Linux(redhat 9) 56 Reference

- PC의운영체제는 Windows XP를사용하였고, TinyOS는 1.1.11-3is버전을사용하였습니다. 설치후에는 TinyOS 1.1.15 버전으로업데이트바랍니다. 문서이력서 변경 날짜 변경내용 초안 2008.06.18 본문서의권리는 Maxfor Technology Inc. 에있습니다. 비상업적인목적으로자유로이배포할수있습니다. 단, 내용수정은허락하지않습니다. This document is copyright c Maxfor technology Inc. 2008 All rights reserved. You may distribute it freely for non-commercial purposes as long as you do not modify it in any way.

1. Specfication 은 Sensor Network용 Module로 MSP430계열의 MCU와 CC2420이라는 RF Chip을사용하는 telos 계열의하드웨어플랫폼으로플랫폼명은 telosb이다. 기존 TIP710CM에서확장포트가충분하지않았던점을고려하여 51pin 확장커넥터를사용하였으며, 센서보드탈부착이이전보드에비해간편해졌으며, Power Amp를이용하여 RF의 Power 높였다. 또한센서보드쪽에있던 Reset/User 버튼을통신모듈로옮겨센서보드와상관없이이용할수있도록편의를두었다. 의특징은다음과같다. 다양한 PC 인터페이스 ( 예 : Serial, USB, Ethernet) 를연결할수있는커넥터 Power Amp 를이용하여이용거리향상 다양한센서의연결이가능한 51-pin 확장커넥터 Dipole Antenna User Button & Reset Button Support that TinyOS Support that IEEE802.15.4 1.1 의 Block Diagram 1.2 Specification MCU Model Type Program memory RAM External Flash Radio Model Data Rate(kbps) PC Interface Characteristic TI MSP430F1611 16Bit RISC 48KBytes 10KBytes 1Mbytes(8Mbit) CC2420(2.4Ghz) 250Kbps USB, RS232 Dipole antenna Reset Button User Button - 4 -

1.3 Description < Description - 전면 > < Description - 후면 > - 5 -

1.4 Mechanical Characteristics - 6 -

1.5 Power Characteristic 1 는 AA size 배터리를 2개사용 2 USB로도모듈에전원을인가할수있다. 3 DC 2.1V~3.6V범위에서동작 - USB로프로그래밍할때에는최소 2.7V의전원인가필요 - USB로연결되어있을때는배터리전원불필요 4 센서의인터페이스, MCU의 mode, RF의 Rx/Tx, RF의 On/Off에따라전류소비가다름. < PC 의 USB 인터페이스에서받은 5V 전원을 Regulator 를이용하여 3V 전원으로전환 > 1.6 TI MSP430F1611 Key Feature Voltage Range: 1.8V~3.6V 저전력모드 - Active mode: 300uA at 1MHz, 2.2V - Standby mode: 1.1uA - Off mode (RAM retention): 0.2uA 16-bit RISC 구조, 125-ns Instruction Cycle Time 내부에 3Channel 의 DMA 보유. 10-/12-/16-bit A/D converter ( 내부적으로 Reference를조절가능 ) Dual 12-bit D/A converter 16-bit, 8-bit Timer, Watchdog Timer Comparator Serial 통신인터페이스 (UART0, UART1) I2C, SPI통신인터페이스 SVS (Supply voltage Supervisor) / Monitor with Programmable Level Detection Bootstrap Loader Serial Onboard Programming < Block Diagram > - 7 -

1.7 Chipcon CC2420 Key Feature IEEE 802.15.4 지원, 주파수대역은 2.4GHz. MAC protocol 지원 DSSS (Direct Sequence Spread Spectrum) 방식 250 Kbps의데이터전송속도 전류를적게소비 (RX: 19.7mA, TX: 17.4mA) Low supply voltage (2.1~3.6V) Integrate voltage regulator 외부의 RF 스위치나필터가필요없음 Digital LQI / RSSI 지원 - 수신 CC2420은 MSP430 MicroController의 SPI port와 digital I/O line, interrupt에의해컨트롤됨 < Block Diagram > < Operating Condition > < Output Setting & typical current consumption @2.45GHz > - 8 -

2. TinyOS 란?? TinyOS는 wireless embedded Sensor Networks를위해고안된 open-source Operating System이다. Sensor Networks에서요구되는제한된메모리에맞게 code 크기를최소화하여구현되었고, 빠르게신기술을도입할수있는컴포넌트 (component) 기반구조로되어있다는것과 event-driven execution model이라는것이특징이다. 또한 nesc라는프로그래밍언어로재구현되었다. 1 TinyOS directory 구조 TinyOS는 Cygwin의 opt directory내에 tinyos-1.x라는이름을가지고위치하고있다. - apps' : 기본적인 TinyOS 프로그램포함. - 'contrib' : user( 관련회사나단체 ) 들이제공한프로그램포함. - doc' : tutorial 및여러가지문서들. - tools' : utilities & 자바어플리케이션 - 'tos : 하드웨어관련 module 및 interface tos' directory 내부 - 'interfaces' : TinyOS component를위한 interface 모음 - 'lib' : library 모음 - platform' : platform(hardware) 의존적인 component - 'sensorboards' : sensorboard(hardware) 의존적인 component - 'system' : 기본적하드웨어및 kernel 관련 component - 'types' : type 정의 ( 예, AM.h) 2 TinyOS Architecture 노드에다운로드되는하나의프로그램에는 TinyOS kernel이그프로그램의 scheduler역할과 hardware 초기화역할을수행하게된다. 기존 embedded system과의차이점이라면, OS가탑재되고 OS상에서여러가지프로그램이실행되는반면, TinyOS는하나의프로그램만을동작시킬수있다는것이다. - 9 -

3 TinyOS Kernel Scheduler 그림에서보다시피 TinyOS Kernel Scheduler는 Task Queue와 Interrupt Vectors를갖고있다. Task Queue에처리할 task가있다면 task를 FIFO방식으로처리하며, task 실행이끝나면, 즉 Task Queue가비어있다면 Sleep상태로들어가고, Interrupt를기다린다. < TinyOS Task Scheduler > 4 NesC 프로그램컴파일과정 NesC 프로그램컴파일과정은 nesc로구성된프로그램을 nesc 컴파일러로컴파일하면 app.c가생성되고이를타겟플랫폼의 C 컴파일러 (avr, msp,...) 로컴파일하면최종으로원하는 object file(exe, hex,...) 이생성되게된다. 이와같은일련의과정이 make를통해이루어진다. < 컴파일과정 > - 10 -

5 What is nesc? nesc는 TinyOS의 structuring concepts과 execution model을구체화하기위해고안된 C programming language의확장판으로 NES-see' 라발음된다. nesc의 concept은다음과같다. a Seperation of construction and composition b Specificaion of component behaviour in terms of set interfaces. c Interface are bidirectional d Components are statically linked to each other via interfaces e NesC is designed under the expectation that code will be generated by whole-program compilers. f The concurrency model of nesc is based on run-to-completion tasks, and interrupt handler which may interrupt tasks and each other. - 11 -

3. TinyOS 설치하기 설치에앞서 TinyOS를설치프로그램을다운받는다. 본문서에서다운받는 TinyOS는 Windows용으로하나의설치파일로되어있으며, 설치하면 Cygwin, TinyOS, JDK 1.4 & JavaCOMM package, GraphViz 등이설치된다. - TinyOS 다운받기 http://www.tinyos.net/dist-1.1.0/tinyos/windows/ 주소로들어가면아래와같은화면이나온다. 여기에서 tinyos-1.1.11-3is.exe( 노란색부분 ) 를다운받는다. < TinyOS 다운로드 Site > 다운로드가끝나면, 다운받은폴더에 tinyos-1.1.11-3is.exe 이생성된다. 이파일을실행한다. - 12 -

설치과정을보면 1 파일을실행할것인지묻는창이뜨고, [ 실행 ] 을클릭하면, 2 설치준비과정이시작된다. 3 준비과정이끝나면원하는 setup의 type 선택과설치할폴더를지정해준다. 기본적으로 complete type과 C: Program Files UCB 로정해져있다. 선택하였다면 [Next] 를클릭 ( 본문서에서는 complete type을선택하고폴더는 C: tinyos를선택하였다.) - 13 -

4 Java License 에대한동의를묻는다. [Yes] 클릭 5 현재설정을보여준다. 설정이올바르다면, [Next] 클릭 - 14 -

6 설치가시작된다. 7 설치에필요한파일들의 copy가끝나면아래와같은화면이나온다. Cygwin설치를위해 [Continue] 를클릭 - 15 -

8 Cygwin 이설치된다. Windows상에설치가끝나면 Cygwin 아이콘이생기고, Cygwin 내부설치가계속된다. ( 여기에서 TinyOS, JDK 1.4 & JavaCOMM package, GraphViz 등이설치된다.) 9 다음과같은창이뜨면서설치가끝났다. [ 확인 ] 을클릭. - 16 -

** 이후의과정은설치가된후 test 과정이다. 필요하면참조하면된다. 10 바탕화면에생긴 Cygwin 아이콘을더블클릭해서실행하면다음과같은창이뜬다. 이것이 Cygwin이실행된창이다. 현재의디렉터리에서 ls 명령을사용하면설치된 rpm 에대한 log 파일들이나온다. - 17 -

TinyOS 의 apps 디렉터리로들어가보자. 위치는 opt/tinyos-1.x/apps 이다. Blink 디렉터리로들어가서 Blink 프로그램을컴파일해본다. 위와같이나옴으로서제대로설치가된것을간단히점검해보았다. 참고1> Cygwin은 Windows상에서 Linux 환경을구현한것이다. 자세한것은 http://www.cygwin.com/ 를참조하기바란다. 참고2> 자바가설치되는것은 TinyOS가구동되는것을확인하기위한 PC쪽의어플리케이션이자바로구현되어있기때문이다. 참고3> GraphViz는 TinyOS상에서 document를만들어줄때사용된다. ** TIP-1 을참조하여 1.1.15 버전으로업데이트하도록한다. - 18 -

4. Driver 설치하기 을 USB에처음연결할때 2가지의드라이버를설치해야한다. 하나는 USB드라이버, 다른하나는 USBtoSerial드라이버이다. 설치과정은아래와같다. ( 운영체제에맞는드라이버는 http://www.ftdichip.com/drivers/vcp.htm에서찾아설치하면된다.) 1 를처음 PC의 USB에연결하면새하드웨어를찾았다고나오며, 아래와같은창이뜬다. 아니오. 지금연결안함 을선택하고 다음 을클릭한다.(USB드라이버설치 ) 2 목록또는특정위치에서설치 를선택하고 다음 을클릭. - 19 -

3 찾아보기로드라이버가있는폴더를선택하고 ' 다음 을클릭. 4 아래와같이드라이버를설치한다. ** 보안관련해서실행하겠냐는메시지가뜨면 ' 실행 을클릭한다. - 20 -

5 USB드라이버설치가완료되었다. 마침 클릭. ( 이어서 USBtoSerial드라이버를설치가시작된다.) 6USBtoSerial 드라이버를설치한다. 과정은 1~5 와같다. - 21 -

7 목록또는특정위치에서설치 를선택하고 다음 을클릭. 8 찾아보기로드라이버가있는폴더를선택하고 ' 다음 을클릭.( 앞의 3 과동일폴더를선택 ) - 22 -

9 아래와같이드라이버를설치한다. 10 USBtoSerial 드라이버설치가완료되었다. 마침 클릭 * NOTE 드라이버를 FTDI Chip에서다운받을시 setup executable 메뉴를클릭하여 CDM 2.02.04.exe 파일을받았다면, 위의순서를따르지않고자동으로드라이버가생성되므로 USB에접속하는즉시 을사용할수있다. - 23 -

11 Cygwin을열고 motelist 명령으로확인하면아래화면에서처럼, 인식된 COM 포트번호및제품명이나온다. - 24 -

5. TinyOS 프로그램예제 TinyOS에는기본적으로여러가지샘플예제들이있다. 지금부터유용하게응용될수있는예제들을컴파일하고 에다운로드하여실습을할것이다. 예제의첫번째는 Blink로 Led제어와 Timer에대한개념을이해하도록한다. 두번째는 CntToLedsAndRfm & RfmToLeds로간단한 rf통신을이해한다. 세번째는 Oscilloscope로센서로부터값을받고 rf로전달하는과정을이해한다. 네번째는 SurgeTelos로능동적으로네트워크를구성하는 multi-hop, ad-hoc network의개념을이해한다. 다섯번째는 ReverseUART로 UART통신에대한개념을이해한다. 여섯번째는 TestUserButton으로 UserButton에의한 interrupt처리를이해한다. 일곱번째는 Listen/ListenRaw로 UART에서받는데이터값을그대로볼수있게해주는자바어플리케이션이다. 본예제들을통해센서네트워크에대한관심과호기심을높일수있으리라생각한다. 단순히프로그램을다운로드하고동작되는과정을봄으로써동작원리를이해하고재구성하기엔어려움이있다. 따라서사용자분들께서는스스로소스코드를분석해보고, 수정해가며이해의수준을높이기바란다. 참고로 TinyOS는여러종류의플랫폼을지원한다. 따라서 TinyOS에있는모든예제들이 에서동작하는것은아니다. 그렇지만앞서소개한예제프로그램외에도여러가지가있으므로, 찾아서테스트해보는것이좋겠다. - 25 -

1 Blink Blink는일정시간주기마다 led 하나가 On/Off를반복하는간단한프로그램이다. 우선 MTI-UNS1000을이용하여, 를 PC와연결한다. a Blink 디렉터리로이동 $>cd /opt/tinyos-1.x/apps/blink b Blink 프로그램을컴파일하고 에다운로드 $>make install telosb 아래와유사한진행과정을볼수있다. c 프로그램다운로드가끝나면 의 red led가일정주기마다깜박이는것을볼수있다. < Red LED ON > < Red LED OFF > - 26 -

2 CntToLedsAndRfm & RfmToLeds CntToLedsAndRfm는숫자를 0~7까지카운트하고이를 3개의 led로표시하며동시에 RF로전송해주는프로그램이다. RfmToLeds는 RF로받은메시지를분석하여 3개의 led를통해이를표시하는프로그램이다. 따라서 를 2개준비하고각각 CntToLedsAndRfm와 RfmToLeds를다운로드한다. A) CntToLedsAndRfm 다운로드 MTI-UNS1000을이용하여, 첫번째 를 PC와연결한다. a CntToLedsAndRfm 디렉터리로이동 $>cd /opt/tinyos-1.x/apps/cnttoledsandrfm b CntToLedsAndRfm 프로그램을컴파일하고 에다운로드 $>make install telosb 아래와유사한진행과정을볼수있다. - 27 -

B) RfmToLeds 다운로드 MTI-UNS1000을이용하여, 두번째 를 PC와연결한다. a RfmToLeds 디렉터리로이동 $>cd /opt/tinyos-1.x/apps/rfmtoleds b RfmToLeds 프로그램을컴파일하고 에다운로드 $>make install telosb 아래와유사한진행과정을볼수있다. - 28 -

C) 결과프로그램다운로드가모두끝나면 CntLedsAndRfm가다운로드된 를동작시키면, RfmToLed가다운로드된 도동일하게동작하고 CntLedsAndRfm가동작을중지하면 RfmToLeds도중지한다. ( 상단에는 CntLedsAndRfm를, 하단에는 RfmToLeds 프로그램이다운로드된상태다.) <CntLedsAndRfm 동작 > <CntLedsAndRfm 동작중지 > - 29 -

3 Oscilloscope Oscilloscope는총 2개의프로그램으로이루어진다. 하나는 TOSBase로 RF를통해패킷을받아 PC로넘겨주는역할을하게되며, 다른하나인 Oscilloscope는센서를사용하여센싱을하고, 이값을메시지로 RF로보내주는역할을하게된다. 동작의결과는자바어플리케이션을통해볼수있다. 따라서 2개를준비하고각각 Oscilloscope와 TOSBase를다운로드한다. A) Oscilloscope 다운로드 MTI-UNS1000을이용하여, 첫번째 를 PC와연결한다. a Oscilloscope 디렉터리로이동 $>cd /opt/tinyos-1.x/contrib/moteiv/apps/oscilloscope b Oscilloscope 프로그램을컴파일하고 에다운로드 $>make install telosb 아래와유사한진행과정을볼수있다. 이하생략 B) TOSBase 다운로드 MTI-UNS1000을이용하여, 두번째 를 PC와연결한다. a TOSBase 디렉터리로이동 $>cd /opt/tinyos-1.x/apps/tosbase b TOSBase 프로그램을컴파일하고 에다운로드 $>make install telosb 아래와유사한진행과정을볼수있다. - 30 -

c 프로그램다운로드가끝나면 TOSBase 를 PC 와연결하고, Oscilloscope 를동작시킨다. 오른쪽에는 Oscilloscope가다운로드되어있고, 센싱을하고, 메시지를 RF로보낼때마다, 3개의 LED가순차적으로켜진다. 왼쪽에는 TOSBase가다운로드되어있고, RF에서메시지를받을때마다, 녹색 LED가토글되고, UART로데이터를전송한다. < 동작결과 > 즉, Oscilloscope가센싱을하고패킷을보내면 PC와연결된 TOSBase가이패킷을받아 PC로전송한다. C) 자바어플리케이션으로확인 - 31 -

먼저 SerialForwarder라는프로그램을실행시킨다. SerialForwarder는 COM 포트로받은데이터를 IP로전달해주는역할과서버역할을한다. a SerialForwarder을실행 $>java net.tinyos.sf.serialforwarder -comm serial@com#:telos& 여기서 COM# 에서 # 은 COM 포트번호이며, : 뒤의 telos는 57600이란 bps값과 telos 타입의메시지 (telosb가아니라 telos이다.) 라는것을알려주는내부적으로설정되어있는변수이고, & 은실행을 background로실행하라는뜻이다. 참고로 는 telos계열의플랫폼중 telosb라는플랫폼명을가지고있다. 절차는아래와같이진행된다. 실행되면아래와같은창이뜬다. 좌측에로그가보이는데, 간단히설명하면 'serial@com7:telos' 에서읽어오며, platform이 telos이고 client들은포트 9001번으로접속하라고나와있다. 우측에는서버포트번호와그아래연결된 COM 포트번호가있으며, 바로아래서버를시작 / 중지할수있는버튼이있다. 그아래에 'Pckts Read' 카운트숫자가보이며 ( 이것이올라가지않을때는데이터가올라오지않는다는뜻이다.), Pckts Wrttn 은노드로데이터를보내는횟수를표시하고, 그밑두번째에 'Num Clients' 는이서버에접속하는 client 개수이다. 그밑에도움말버튼과 log화면을클리어해주는버튼과프로그램종료버튼이위치하고있다. 이제 oscilloscope 자바어플리케이션을실행시킨다. oscilloscope 자바어플리케이션은 - 32 -

SerialForwarder에서제공해주는포트로접속해서 data를읽어오고, 이것을 graph로표시해주는어플리케이션이다. b java 디렉터리 (/opt/tinyos-1.x/tools/java) 에서 oscilloscope 실행 $>java net/tinyos/oscope/oscilloscope 절차는아래와같이진행된다. D) 결과실행되면아래와같은창이보일것이다. 위그림과같이 6개의채널이있으며각각 <Chan 0: Humidity>, <Chan 1: Temperature>, <Chan 2: Total Solar Radiation>, <Chan 3: Photosynthetically Active Radiation>, <Chan 4: Internal Temperature>, <Chan 5: Internal Voltage> 를나타낸다. 위에서는그래프후반에습도 ( 연두색 ) 와온도 ( 빨간색 ) 가올라간것을확인할수있다. 그래프들이보이지않을경우 zoom버튼을이용해간격을조절한다. E) Oscilloscope의메시지포맷 - 33 -

Header Description Length (1 byte) : message length in bytes not including header Fcf (2 byte) : IEEE 802.15.4 frame control field [reserved] Dsn (1 byte) : IEEE 802.15.4 data sequence number [reserved] Destpan (2 byte) : IEEE 802.15.4 Destination personal area network identifier [reserved] Addr (2 byte) : TinyOS destination address Type(1 byte) : TinyOS active message number Group (1 byte) : TinyOS group id Oscope Message Description SourceMoteID (2 bytes) : address of the origin of the message LastSampleNumber (2 bytes) : sample counter Channel (2 bytes) : adc channel Data (20 bytes) : adc data readings (10 readings of 2 bytes each) Sample Data ( 총 36 bytes) 1A 01 08 08 FF FF FF FF 0A 7D 01 00 14 00 01 00 1E 19 1E 19 20 19 1F 19 20 19 1E 19 1E 19 1E 19 1F 19 1E 19 byte order field length field name sample data 0 1 byte length 1A 1,2 2 bytes fcf 01 08 3 1 byte dsn 08 4,5 2 bytes destpan FF FF 6,7 2 byte addr FF FF 8 1 byte type 0A 9 1 byte group 7D 10,11 2 bytes sourcemoteid 01 00 12,13 2 bytes lastsamplenumber 14 00 14,15 2 bytes channel 01 00 16,17 18,19 20,21 22,23 1E 19 1E 19 20 19 1F 19 24,25 20 19 2bytes 10 data 26,27 1E 19 28,29 30,31 32,33 34,35 1E 19 1E 19 1F 19 1E 19 모트로부터전송되는데이터는 little-endian 포맷이다. 채널이 1번이므로온도센싱을의미하 며, reading의제일앞데이터 1E 19 의센서값은 19 1E이며십진수로 6430이다. 단, 이것 은 ADC로부터발생한값그대로임을알려둔다. 4 SurgeTelos - 34 -

SurgeTelos라는프로그램은노드들간에능동적 (ad-hoc, multi-hop) 으로네트워크를구성하여수집한데이터를 PC로전달하는역할을한다. 즉여기저기뿌려진노드들각각에서데이터를수집하고, 서로네트워크를이루며, 수집한데이터를 PC( 혹은 server) 와연결된노드로무선전송하는프로그램이다. 또한 TinyOS에서는형성된 network topology를보여주는자바어플리케이션을제공하고있다. 를최소 1개이상준비하자. SurgeTelos를하기에앞서 tinyos-1.1.15로업데이트하자.(tip-1참조)^^ A) SurgeTelos 다운로드 하나를 PC와연결한다. a SurgeTelos 디렉터리로이동 $>cd /opt/tinyos-1.x/contrib/ucb/apps/surgetelos b SurgeTelos 프로그램을컴파일하고 에다운로드 $>make install.0 telosb 여기서 install뒤의숫자는이노드를식별할수있는 ID가된다. 0~65565까지지정해줄수있으며, ID가 0인노드가데이터를수집하여 PC로전달해주는역할을하게되므로, 반드시 ID가 0인노드가있어야한다. 아래와유사한진행과정을볼수있다. c 여분의노드가있다면서로 ID를달리하여 b와같은방식으로 에프로그램을다운로드한다. 이미프로그램이미지가만들어져있으므로 install이란 - 35 -

명령대신 reinstall 명령을사용하여프로그램을다운로드할수있다. 예 ) $>make reinstall.1 telosb ** TinyOS에서자주쓰이는명령어에대해서는 TIP-2를참조한다. B) 자바어플리케이션으로확인 a Surge 자바어플리케이션으로 SurgeTelos의동작을확인하기전에, 메시지분석이나약간의 GUI변화로 Surge 자바어플리케이션을한번재컴파일해야한다. 이것에대한설명은 SurgeTelos의 README 파일에설명되어져있다. 그 README(/opt/tinyos-1.x/contrib/ucb/apps/SurgeTelos/README) 파일을보면아래와같은부분이있다. 아래의노란색부분을복사한다. 이제 /opt/tinyos-1.x/tools/java/net/tinyos/surge/makefile을편집기로연다. Makefile내용중에주황색부분을 README파일에서복사한노란색부분으로대체한다. 이때주의할것은 $( 즉, 명령어가시작되는부분 ) 앞에는 TAB key로띄어져있다. 이것이제대로되지않았을때는컴파일에러가발생할것이다. 위와같이변경후 ( 연두색부분이바뀐부분이다 ) 에저장한다. 다시 Cygwin상에서 /opt/tinyos/tools/java/net/tinyos/surge/ 로이동한후, 기존컴파일된것을지우고 (make clean), 재컴파일 (make) 한다. 과정은아래그림과같다. - 36 -

b 0번노드를 PC와연결하고, SerialForwarder 자바어플리케이션실행. SerialForwarder을실행 $>java net.tinyos.sf.serialforwarder -comm serial@com#:telos& 여기서 COM# 에서 # 은연결된 COM 포트번호이다, 0번노드에서도데이터를보내므로제대로동작이된다면패킷카운트가증가할것이다. c Surge 자바어플리케이션실행. $>java net.tinyos.surge.mainclass 0x7d 0x7d는 groupid로, 사용자가변경하지않았다면, 기본값인 0x7d로설정된다. 실행되면다음과같은화면이나타난다. 각각의녹색원위의숫자가 nodeid가되고, 몇개의메시지를받았는지가표시되며, 통신이정상적으로잘이뤄지는정도에대한막대그래프가아래표시된다. C) SurgeTelos 의메시지포맷 - 37 -

Header Description Length (1 byte) : message length in bytes not including header Fcf (2 byte) : IEEE 802.15.4 frame control field [reserved] Dsn (1 byte) : IEEE 802.15.4 data sequence number [reserved] Destpan (2 byte) : IEEE 802.15.4 Destination personal area network identifier [reserved] Addr (2 byte) : TinyOS destination address Type(1 byte) : TinyOS active message number Group (1 byte) : TinyOS group id Multihop Message Description Sourceaddr (2 bytes) : address of the previous hop Originaddr (2 bytes) : address of the origin of the message Seqno (2 bytes) : sequence number of the previous hop of multihop messages Originseqno (2 bytes) : sequence number from the origin of multihop messages Hopcount (2 bytes) : hopcount Surge Message Description Type (2 bytes) : type, type 0 is 'sensor reading' Reading (2 bytes) : ADC reading from the sensor Parentaddr (2 bytes) : address of the parent in the multihop tree Seq_no (4 bytes) : sequence number of Surge messages Sample Data ( 총 30 bytes) 14 21 08 20 FF FF 7E 00 11 7D 00 00 01 00 0C 00 0C 00 01 00 00 00 DB 0A 00 00 0B 00 00 00 byte order field length field name sample data 0 1 byte length 14 1,2 2 bytes fcf 21 08 3 1 byte dsn 20 4,5 2 bytes destpan FF FF 6,7 2 byte addr 7E 00 8 1 byte type 11 9 1 byte group 7D 10,11 2 bytes sourceaddr 00 00 12,13 2 bytes orignaladdr 01 00 14,15 2 bytes seqno 0C 00 16,17 2 bytes orignalseqno 0C 00 18,19 2 bytes hopcount 01 00 20,21 2 bytes type 00 00 22,23 2 bytes reading DB 0A 24,25 2 bytes parentaddr 00 00 26,27,28,29 4 bytes seq_no 0B 00 00 00 모트로부터전송되는데이터는 little-endian 포맷이다. originaladdr 가 01 이므로모트자신의 ID 가 1 이고, Surge_type 이 00 이므로, sensor reading 이라는의미이고, reading 의데이터 DB 0A 은 0A DB 라는값을갖고 10 진수로 2779 이다. 이는 ADC 로부터발생한값그대로임을알려둔다. 또한 surge 에서연결하고있는센서는내부전압센서임을밝혀둔다. parentaddr 이 00 이므로 0 번을가진 id 모트가이모트의부모노드이다. seq_no 는 0B 로이 surge 메시지가 11 번째메시지라는것을표시한다. - 38 -

5 ReverseUART ReverseUART라는프로그램은노드와 PC간에 UART통신구현예제이다. ReverseUART 프로그램이다운로드된노드를 PC와연결하고자바어플리케이션을통해 UART로문자열을보내면노드에서는문자열을받아서, 그문자열을거꾸로한뒤다시 UART로전송하고, PC상에서그결과를볼수있다. A) ReverseUART 다운로드 하나를 PC와연결한다. a ReverseUART 디렉터리로이동 $>cd /opt/tinyos-1.x/apps/reverseuart b ReverseUART 프로그램을컴파일하고 에다운로드 $>make install telosb - 39 -

B) ReverseUART 자바어플리케이션컴파일. 같은폴더에서 javac 명령을사용하여자바어플리케이션을컴파일한다. $> javac *.java ($> ls 명령으로확장자가 class인파일이 2개생성되었는지확인한다.) a ReverseUART가다운로드된노드를 PC와연결하고, SerialForwarder를실행한다. SerialForwarder을실행 $>java net.tinyos.serialforwarder -comm serial@com#:telos& 여기서 COM# 에서 # 은연결된 COM 포트번호이다, b testreverseuart 자바어플리케이션실행 /opt/tinyos-1.x/contrib/ucb/apps/reverseuart 디렉터리에서 $> java testreverseuart "strings" 라고실행한다. 여기서 " " 안에원하는문자열을넣어주면된다. 문자열에 maxfor 를넣었고 (send), 결과로 rofxam 이나왔다 (recv). 이렇게 PC에서문자열을주면 이그문자열을거꾸로정렬하여 PC로반환하는과정을통해, UART 통신이구현되었음을확인할수있다. - 40 -

6 TestUserButton TestUserButton라는프로그램은 에있는 User Button을이용한예제이다. User Button을눌렀을때마다 LED가 0~7까지카운트되는것을볼수있다. ( 매뉴얼에첨부되어있는 TestUserButton 폴더를 /opt/tinyos-1.x/apps/ 안에카피한다.) 하나를 PC 와연결한다. a TestUserButton 디렉터리로이동 $>cd /opt/tinyos-1.x/apps/testuserbutton b TestUserButton 프로그램을컴파일하고 에다운로드 $>make install telosb c 다운로드가완료된 에있는 User Button을누룰때마다 LED로표시되는카운트가 0부터 7까지반복되는결과를얻는다. ( 실행이미지는생략한다.) - 41 -

7 Listen / ListenRaw TinyOS 툴중에는 Serial을통해들어오는데이터를직접볼수있는어플리케이션이있는데바로 Listen과 ListenRaw이다. ListenRaw는 raw data 그대로보여주고, Listen은 TinyOS 메시지포맷으로변환하여보여준다. (RFC 1662 문서참조요함 ) a Listen 기존에했던예제 SurgeTelos를진행했던과정에이어진행한다. ( 여기서는모든화면을보기위해 node 2개만을사용하였다.) SurgeTelos를실행시킨후 Cygwin 창을하나더생성한다. Listen 실행 (opt/tinyos-1.x/tools/java 디렉터리에서 ) $>java net/tinyos/tools/listen ( 실행전에 /opt/tinyos-1.x/tools/java/net/tinyos/tools/ 에 Listen.class가있다고가정한다. 없을경우엔 Listen.java 컴파일하기바란다.) 모두다정상적으로되었다면아래그림과같이될것이다. 좌측상단 : Serial Forwarder 창좌측하단 : Sensor Network Topology 창우측상단 : 좌측두창을실행시킨 Cygwin창우측하단 : Listen을실행시킨 Cygwin창. 데이터가올때마다표시된다. ** SerialForwarder만실행시키고 Listen을실행시킬수도있다. 또한 SerialForwarder없이도실행할수있다.( 아래의 Listen 단독실행의경우참조 ) - 42 -

** Listen 단독실행의경우 Node가 PC에연결되어데이터를보내고있다는가정하에환경변수를지정한후에 Listen 자바어플리케이션실행 환경변수지정 (export를이용하여지정한다.) $> export MOTECOM=serial@COM#:telos (# 에는 PC로연결된 Node의 COM 포트번호를적는다.) Listen 실행 (opt/tinyos-1.x/tools/java 디렉터리에서 ) $>java net/tinyos/tools/listen 제대로실행된다면아래그림처럼데이터가출력될것이다. (SurgeTelos를다운로드한 Node를 PC와연결한경우이다.) Listen과 MOTECOM의통합명령 (opt/tinyos-1.x/tools/java 디렉터리에서 ) $> MOTECOM=serial@COM#:telos java net/tinyos/tools/listen - 43 -

b ListenRaw Node가 PC에연결되어데이터를보내고있다는가정하에 ListenRaw 실행 (opt/tinyos-1.x/tools/java 디렉터리에서 ) $>java net/tinyos/tools/listenraw COM# (# 에는 PC로연결된 Node의 COM 포트번호를적는다.) 제대로실행된다면아래그림처럼나올것이다. (SurgeTelos를다운로드한 Node를 PC와연결한경우이다.) - 44 -

TIP-1> TinyOS 를최신버전으로업데이트하기 2007.7.31일현재 TinyOS-1.x의최신버전인 1.1.15를받아설치하겠다. 우선 update할버전의 rpm파일을받아야하는데, 처음에 TinyOS를설치하기위해파일을다운받았던 http://www.tinyos.net/dist-1.1.0/tinyos/windows/ 에들어가서다음과같은이름의파일을다운받으면된다. <tinyos-1.1.15dec2005cvs-1.cygwin.noarch.rpm> 다운받은파일을 Cygwin 폴더에위치시키고 ( 예제그림에선 opt/tinyos-1.x에위치하고실행하였다.) 아래와같은명령어를실행시키면업데이트가진행된다. $>rpm --force --ignoreos -Uvh tinyos-1.1.15dec2005cvs-1.cygwin.noarch.rpm 그러면위그림과같이업데이트가진행된다. 컴퓨터의사양에따라다르겠지만, 업데이트를하는동안에 8~10분정도의시간이소요된다. - 45 -

TIP-2> TinyOS 를사용할때자주쓰이는명령어들 1 $> motelist 노드의간단한정보및몇번 COM 포트로 PC와연결되었는지알수있다. (** TIP710GM-B(Serial) 은 motelist로확인되지않는다.) 각각의프로그램폴더에서실행되는명령어 2 $> make <platform> 프로그램을해당 platform으로컴파일한다. 3 $> make install <platform> 프로그램을해당 platform으로컴파일한후노드에컴파일한프로그램이미지를다운로드한다. 4 $> make reinstall <platform> build/<platform>/ 디렉터리에이미컴파일되어있는프로그램이미지를노드로다운로드한다. install, reinstall에서의부가적명령 a $> make install.<#> <platform> <#> 에다가숫자를넣음으로써. 그노드에 ID부여해준다. reinstall도마찬가지다. 예 ) $> make install.1 <platform> ---> 1번 ID를가진노드가된다. b $> make install <platform> bsl,<#-1> <#> 에다가 COM 포트번호를넣음으로써. 인스톨할 COM 포트를지정해줄수있다. 이는여러개의노드가 PC에연결되어있을때, 그중하나를선택해서다운로드하거나, Serial to USB 컨버터와연결된 EEPROM의정보가지워져서 motelist로검색되지않고, 장치관리자에서는 COM 포트확인이가능할때쓰인다. reinstall도마찬가지다. 예 ) $> make install <platform> bsl,4 --->5번 COM 포트에 install된다. ** COM 포트가 5번이나, bsl,4라고한것에주의하자. 이는 Cygwin환경에서의 COM 포트는 0번부터, Windows 환경에서의 COM 포트는 1번부터시작하므로 Windows의장치관리자에서보이는 COM 포트번호에서 1을뺀포트번호로지정해야한다. 5 $> make docs <platform> 해당하는 platform의프로그램 document를만든다. html형태이며, 생성되는위치는 make할때첫줄에표시되어있다. 주로 tinyos-1.x/doc/nesdoc/<platform> 에저장된다. 6 $> make clean 컴파일된결과 (build/) 들을삭제한다. - 46 -

TIP-3> GroupID 또는 RF Channel 바꾸기 1 GroupID GroupID란 Node를한그룹으로묶음으로서하나의 PAN영역으로구분시켜주는역할을한다. 기본적으로는 0x7d라는값으로설정되어있다. 0x00에서 0xff의범위를갖는다. -GroupID 바꾸기- /opt/tinyos-1.x/tools/make 디렉터리에 Makedefaults라는파일을편집기로연다. 열어서보면첫번째줄에다음과같은내용이있다. DEFAULT_LOCAL_GROUP?= 0x7d 이부분의값을다른값으로변경해주고저장하면된다. 예 ) DEFAULT_LOCAL_GROUP?= 0x5c 변경후에컴파일하면 GroupID가바뀐것을확인할수있다. 또다른방법은 3번을참조한다. 2 RF Channel 에서사용하는 RF chip인 Chipcon사의 CC2420은총 16개의채널을지원한다. 이는 IEEE 802.15.4에근거하여채널 11번부터 26까지지원하며 11번 2405MHz, 12번 2410MHz,..., 26번 2480MHz까지 Channel당 5MHz 단위로나누어져있다. 기본적으로는 Channel 11번으로되어있다. -RF channel 바꾸기- 컴파일시에 CC2420_CHANNEL=?? 를추가한다. 예 ) $> CC2420_CHANNEL=15 make telosb 이렇게 CC2420_CHANNEL=# 옵션을주면컴파일시에해당 # 채널로설정된다. 또다른방법은 3번을참조한다. - 47 -

3 Makelocal을이용하여, GroupID, RF Channel 동시에바꾸기 /opt/tinyos-1.x/tools/make 디렉터리에서 Makelocal이라는이름으로빈파일을만든다. ( 확장자는없다.) Makelocal안에아래의내용을넣어주면된다. (Makedefault는변경할필요가없다.) DEFAULT_LOCAL_GROUP=0x4c PFLAGS += -DCC2420_DEF_CHANNEL=14 ( 판란색부분에원하는값을넣는다. 그룹 ID 는 16 진수형태로, 채널은 10 진수로넣는다.) 위처럼 GroupID값을 0x4c, RF Channel값을 14라했을때, 컴파일하면아래와같은메시지가보인다. (Blink 프로그램을컴파일해보았다. 녹색글씨부분이바뀐부분이다.) - 48 -

TIP-4> Sourceforge.net 에서 CVS 받기 CVS란? Concurrent Versions System으로소스의버전관리를도와주는 tool이다. Sourceforge.net? TinyOS는현재 open source형태로여러개발자들이기존코드를최적화하거나, 새로운코드를만들어 sourceforge.net에서 CVS형태로관리되고있다. 이는 Linux가여러개발자들이자발적참여로꾸준히업그레이드되는것처럼, TinyOS도똑같은형태로진보하고있다고보면된다.( 사견이다.) 따라서 tinyos.net을통해받을수있는기본적인것외에다른개발자들이진행하고있는 code를사용해보고싶다면 sourceforge.net의 CVS를통해서다운받아볼수있다. 여기서는 Windows용 CVS client Tool인 tortoisecvs(http://www.tortoisecvs.org/) 를사용할것이다. 또한기본적 Korea 언어팩이있으므로한글메뉴도볼수있다. TortoiseCVS-1.8.25.exe를다운받아설치한다. 설치가끝난후탐색기에서마우스오른쪽버튼을클릭하면팝업메뉴가뜨는데아래그림과같은부분이추가되어져있을것이다. 이제 TinyOS 를위한 CVS 를설정하여보자. CVS 체크아웃 (K)( 위그림 ) 를누르면아래와같은창이뜬다. CVSROOT: 부분에 :pserver:anonymous@cvs.sf.net:/cvsroot/tinyos라고쓴다. 맨밑의 모듈 부분에 tinyos-1.x라고쓴다. ( 목록가져오기명령실행이잘안되므로, CVS repository는 http://cvs.sourceforge.net/viewcvs.py/tinyos/ 를참조하기바란다.) - 49 -

확인을누르면아래와같은창이뜨면서체크아웃 ( 소스를가져오는것 ) 하게된다. 실행이끝나면폴더에표시가생긴다. 이그림은체크아웃후폴더의일부를표시한것이다. ** 주의 CVS 체크아웃을실행하는위치에따라체크아웃된파일들이생성된다. - 50 -

TIP-5> TinyOS installation on Linux(redhat 9) Linux에 TinyOS를설치하는법을알아보기로한다. Linux중에 redhat9을대상으로하여설치하였으며, 기타다른 linux나버전이상이할경우설치방법이다를수있음을미리알려둔다. redhat 9이이미설치되어있고, 인터넷이연결된상태로가정하며, root의권한를갖고진행한다. 1 IBMs 1.4 JDK & javax.comm rpms을다운로드하고, 설치한다. https://www6.software.ibm.com/dl/lxdk/lxdk-p에서 IBM SDK for 32-bit xseries (Intel compatible) 용 IBMJava2-SDK과 IBMJava2-JAVACOMM rpms을다운로드받는다. ( 다운로드받기위해서는등록을해야한다. 참고로 Sun에서나온 Java package는설치가어렵다고한다.) IBMjava2-JRE-1.4.2.0.51.i586.rpm IBMjava2-SDK-1.4.2-0.51.i586.rpm IBMjava2-JAVACOMM-1.4.2-0.21.i586.rpm 위와같은파일을다운로드받았다면설치를시작한다. $> rpm -ivh --prefix /opt *.rpm ( 만약 dependancy 에러가발생하면 --nodeps 옵션을추가한다.) /opt/ibmjava2-142 에설치된다. ( 버전에따라조금다른이름을가질수도있다.) ~/.bashrc 파일을열어아래와같은내용의 Java path 및환경변수를추가한다. export JAVA_HOME=/opt/IBMJava2-142 export JDKROOT=$JAVA_HOME export PATH="$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH" 2 TinyOS linux tools를다운로드하고, 설치한다. http://www.tinyos.net/dist-1.1.0/tools/linux/ 에서아래와같은파일을다운로드받는다. avarice-2.0.20030825cvs-1.i386.rpm avr-binutils-2.13.2.1-1.i386.rpm avr-gcc-3.3tinyos-1.i386.rpm avr-insight-pre6.0cvs.tinyos-1.3.i386.rpm avr-libc-20030512cvs-1.i386.rpm make-3.80tinyos-1.i386.rpm (graphviz tool의경우컴파일시에러를발생시킬수있으므로생략하였다.) $> rpm -ivh *.rpm ( 만약 make3.8설치시이미설치되어있다는에러가발생하면 make3.8 tool만 -ivh를 -Uvh로대체한다.) - 51 -

3 CVS repository로부터 TinyOS 소스를다운로드한다. $> cd $HOME; $> cvs -d:pserver:anonymous@cvs.sf.net:/cvsroot/tinyos login; $> cvs -z3 -d:pserver:anonymous@cvs.sf.net:/cvsroot/tinyos co -r tos-1-1-14-candidate tinyos-1.x; ( 패스워드를물어보면 enter key를친다. 또한설치하는데 20~40분정도의시간이소요된다.) 설치가끝나면 ~/.bashrc 파일을열어아래와같은내용의환경변수를추가한다. export TOSROOT=$HOME/tinyos-1.x 4 mspgcc를 install한다. $> cd $TOSROOT/tools/src/mspgcc; $> INSTALL_DIR=/opt/msp430./build-mspgcc install; ( 패스워드를물어보면 enter key를친다. ) 설치가끝나면 ~/.bashrc 파일을열어아래와같은내용의환경변수를추가한다. export MSPGCCROOT=/opt/msp430 export PATH="$MSPGCCROOT/bin:$PATH" 5 boot strap loader를심볼릭링크한다. $> cd $MSPGCCROOT/bin; $> ln -s $TOSROOT/tools/src/mspgcc-pybsl/bsl.py./msp430-bsl; 6 perl 을설치합니다. (5.8 버전이상설치되어있다면이과정은생략한다.) http://www.activestate.com/products/activeperl/ 에서최신버전을다운로드받고설치한다. $> rpm -ivh --prefix /opt *.rpm; ~/.bashrc 파일을열어아래와같은내용의환경변수를추가한다. export PATH="/opt/ActivePerl-5.8/bin:$PATH" motelist-linux script의첫줄을다음과같이바꾼다. #!/opt/activeperl-5.8/bin/perl -w 다음을실행한다. $> sudo cat /proc/tty/driver/usb-serial - 52 -

7 motelist-linux 유틸리티를심볼릭링크한다. $> cd /usr/local/bin; $> ln -s $TOSROOT/tools/src/motelist/motelist-linux motelist; 8 TinyOS에서사용되는스크립트를컴파일한다. $> cd $TOSROOT/tools/scripts/; $> make install prefix=/usr/local; ~/.bashrc 파일을열어아래와같은내용의환경변수를추가한다. export PATH="/usr/local/bin:$PATH" 9 아래내용중에 ~/.bashrc 파일에서빠진것이없는지확인한다. export PATH="/usr/local/bin:$PATH" export PATH="/opt/ActivePerl-5.8/bin:$PATH" # Java export JAVA_HOME=/opt/IBMJava2-142 export JDKROOT=$JAVA_HOME export PATH="$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH" export CLASSPATH=.:$JAVA_HOME # MSPGCC export MSPGCCROOT=/opt/msp430 export PATH="$MSPGCCROOT/bin:$PATH" # TinyOS export TOSROOT=$HOME/tinyos-1.x export TOSDIR=$TOSROOT/tos export CLASSPATH="`$TOSROOT/tools/java/javapath`" export MAKERULES=$TOSROOT/tools/make/Makerules ( CLASSPATH안에 double quote 안에는 single quote가아니라 tilde임을주의하라.) - 53 -

10 http://sourceforge.net/projects/nescc로부터 nesc 1.1.3을다운로드한다. 압축을풀고다운받은디렉터리로간다. $>./configure; $> make; $> make install; $> cd $TOSROOT/tools/src/ncc $>./Bootstrap $>./configure $> make $> make install 11 Java와 JNI를 complie한다. $> cd $TOSROOT/tools/java; $> make; $> make; $> cd $TOSROOT/tools/java/jni; $> make install; 12 mica2일경우에만수행합니다. $> cd $TOSROOT/tools/src/uisp; $> dos2unix set-dates; $> chmod 755 set-dates; $> cd $TOSROOT/tools/src/uisp; $>./COMPILE; $> make install; - 54 -

13 설치완료후테스트설치가끝났으므로잘설치되었는지테스트해본다. 아래는 Blink 프로그램을컴파일하고 에다운로드한화면이다. reference http://www.tinyos.net/tinyos-1.x/doc/install.html#linux http://www.crhc.uiuc.edu/~mjmille2/howtos/installing-tinyos-for-telos-on-linux/ - 55 -

Reference http://www.tinyos.net http://www.tinyos.re.kr http://www.tinyos.org http://http.cs.berkeley.edu/%7eculler/ http://nescc.sourceforge.net/ http://www.maxfor.co.kr http://www.moteiv.com http://www.crossbow.com http://ieee802.org/15/pub/tg4.html http://www.cygwin.com/ http://www.tortoisecvs.org/ http://www.ti.com http://www.chipcon.com/ http://www.sensirion.com/ http://sales.hamamatsu.com/ http://www.ftdichip.com - 56 -