Manual version 1.3
- 본문서는 TIP 7xx 매뉴얼입니다. platform 명을 telosb 로하여주시면됩니다. -PC의운영체제는 Windows XP를사용하였고, TinyOS는 1.1.11-3is버전을사용하였습니다. 설치후에는 TinyOS 1.1.15 버전으로업데이트바랍니다. 본문에쓰인글은 '~ 다 체를사용하였습니다. 이해바랍니다. This document written by 오상익 jinloyz (jinloyz@maxfor.co.kr) Thanks to Kang JungHoon, Lee MinGoo, Lee SangHoon, Ko YoungTak, Lee JungWook 문서이력서변경 날짜 변경내용 초안 2006.02.01 오 / 탈자수정및잘못된내용수정, TIP710CM,GM & TIP700SM module spec추가 1차수정 2006.03.17 ReverseUART 예제추가 (Ver1.1) GropuID, RF Channel 관련 TIP 추가 CVS 체크아웃추가 2 차수정 (Ver1.1.1) 2006.04.06 3차수정 (Ver1.2) 4차수정 (Ver1.3) 2006.04.26 2006.07.18 오 / 탈자수정및잘못된내용수정, ReverseUART 예제수정 Serial데이터값보는 application(listenraw, Listen) 추가 TinyOS 구조추가 Oscilloscope, Surgetelos에대한메시지포맷추가센서값변환식관련 TIP 추가오 / 탈자수정및누락내용추가 ReverseUART예제디렉터리변경. TestUserButton 예제추가 TinyOS installation on Linux 관련 TIP추가 본문서의권리는 Maxfor technology Inc. 와오상익에있습니다. 비상업적인목적으로자유로이배포할수있습니다. 단, 내용수정은허락하지않습니다.
This document is copyright c Maxfor technology Inc. & Oh SangIck, 2006 All rights reserved. You may distribute it freely for non-commercial purposes as long as you do not modify it in any way. - 순서 - Page 1 1. TIP7xx Specfication 10 2. TinyOS란?? 12 3. TinyOS 설치하기 20 4. TIP Driver 설치하기 26 5. TinyOS Application 따라하기 27 1 Blink 28 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> compile된 image파일에서 GroupID 찾기 49 TIP-5> compile된 image파일에서 RF Channel 찾기 50 TIP-6> Sourceforge.net에서 CVS 받기 52 TIP-7> TIP700CM &TIP700SM-a의센서값변환식 53 TIP-8> TinyOS installation on Linux(redhat 9) 58 Reference
1. TIP7xx Specfication TIP700CM은 TI사의 MSP430F1611 MicroController Unit과 ChipCon사의 CC2420을사용한 Sensor Network module이다. MSP430F1611은 16bitRISC로내부에 48KBytes의 program memory와 10KBytes RAM을가지고있다. 또한외부에 1MBytes의 flash memory를가지고있어기존자사의 TIP5x Series에비해서보다큰 program의적재가가능하다. CC2420은 IEEE802.15.4/ZigBee를지원하는 RF chip으로 2400~2483.5MHz 대역을지원하며, Direct Sequence Spread Spectrum(DSSS) 방식으로동작하며, O-QPSK 변조방식과 250Kbps Data Rate를지원한다. 각각 128Bytes의 transmit/receive data FIFO 버퍼를가지고있다. 센서로는 Hamamatsu사의 S1087(Photodiode for visible range), S1087-1(Photodiode for visible to IR range) 과 Sensirion의 SHT11(Humidity & Temperature) 를사용하고있다. PC와의 Interface로 USB를사용하여연결이간단하며, application의다운로드가쉽다. 또한 TIP700CM의특징으로는 JTAG port, Chip Antenna의사용, Reset&User 버튼을들수있다. < TIP700CM 의 Block Diagram > < TIP700CM Specification > MCU Model Type Program memory RAM External Flash EEPROM Radio Model Data Rate(kbps) Sensor PC Interface Characteristic TIP700CM TI MSP430F1611 16Bit RISC 48KBytes 10KBytes 1Mbytes(8Mbit) 3wire serial : 128Bytes(1Kbits) CC2420(2.4Ghz) 250Kbps Light / Temperature / Humidity USB JTAG port Chip antenna Reset Button User Button - 1 -
< TIP700CM Description - front > < TIP700CM Description - back > - 2 -
< TIP700CM Mechanical Characteristics > - 3 -
< TIP710GM-a(USB Interface) Description > < TIP710GM-b(Serial Interface) Description > - 4 -
< TIP710CM Description - front > < TIP710CM Description - back > - 5 -
< TIP700SM-a(Sensor Board) Description > Humidity/Temperature Sensor : SHT11(by Sensirion) PAR(Photosynthetically Active Radiation - Photodiode for visible range) : S1087(by Hamamatsu) TSR(Total Solar Radiation - Photodiode for visible to IR range) : S1087-1(by Hamamatsu) External port pin assign JTAG Port pin assign - 6 -
< Power Characteristic > 1 TIP700CM 은 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 전원으로전환 > < 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통신인터페이스 On-chip Comparator SVS (Supply voltage Supervisor) /Monitor with Programmable Level Detection Brownout Detector Bootstrap Loader Serial Onboard Programming < Block Diagram> - 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 Low supply voltage (1.6~2.0V) external voltage regulator Programmable output voltage 외부의 RF 스위치나필터가필요없음 외부구성이간단 Battery 모니터가능. Digital LQI / RSSI 지원 - 수신 CC2420 은 MSP430 microcontroller 의 SPI port 와 digital I/O line, interrupt 에의해컨트롤됨 Microcontroller 의저전력의 Duty cycle 작동에의하여 RF 가 shut off 됨 < Block Diagram > < Operating Condition > < Output Setting & typical current consumption @2.45GHz > - 8 -
<Antenna Characteristic> - 9 -
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 application 포함. - 'contrib' : user( 관련회사나단체 ) 들이제공한 application 포함. - doc' : tutorial 및여러가지문서들. - tools' : utilities & java application - '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 Mote에다운로드되는하나의 application에는 TinyOS kernel이그 application의 scheduler역할과 hardware 초기화역할을수행하게된다. 기존 embedded system과의차이점이라면, OS가탑재되고 OS상에서여러가지 application이실행되는반면, TinyOS는하나의 application만을동작시킬수있다는것이다. - 10 -
3 TinyOS Kernel Scheduler 그림에서보다시피 TinyOS Kernel Scheduler는 Task Queue와 Interrupt Vectors를갖고있다. Task Queue에처리할 task가있다면 task를 FIFO방식으로처리하며, task 실행이끝나면, 즉 Task Queue가비어있다면 Sleep상태로들어가고, Interrupt를기다린다. 4 compile 과정 compile과정은 nesc로구성된 application을 nesc compiler로 compile하면 app.c가생성되고이를 C compiler(avr, msp,...) 로 compile하면최종으로원하는 object file(exe, hex,...) 이생성되게된다. 이와같은일련의과정이 make를통해이루어진다. 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는 Windos용으로하나의설치파일로되어있으며, 설치하면 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( 노란색부분 ) 를다운받는다. - 12 -
다운이끝나면, 다운받은폴더에아래와같은파일이생성된다. 위파일 (tinyos-1.1.11-3is.exe) 을실행한다. 설치과정을보면 1 파일을실행할것인지묻는창이뜨고, [ 실행 ] 을클릭하면, 2 설치준비과정이시작된다. - 13 -
3 준비과정이끝나면원하는 setup의 type 선택과설치할폴더를지정해준다. 기본적으로 complete type과 C: Program Files UCB 로정해져있다. 선택하였다면 [Next] 를클릭 ( 본문서에서는 complete type을선택하고폴더는 C: tinyos를선택하였다.) 4Java License 에대한동의를묻는다. [Yes] 클릭 - 14 -
5 현재 setting 을보여준다. setting 이맞다면, [Next] 클릭 6 설치가시작된다. - 15 -
7 설치에필요한파일들의 copy가끝나면아래와같은화면이나온다. Cygwin설치를위해 [Continue] 를클릭 8 Cygwin 이설치된다. - 16 -
Windows상에설치가끝나면 Cygwin 아이콘이생기고, Cygwin 내부설치가계속된다. ( 여기에서 TinyOS, JDK 1.4 & JavaCOMM package, GraphViz 등이설치된다.) 9 다음과같은창이뜨면서설치가끝났다. [ 확인 ] 을클릭. 10 번이후의과정은설치가된후 test 과정이다. 필요하면참조하면된다. 참고1> Cygwin은 Windows상에서 Linux 환경을구현한것이다. 자세한것은 http://www.cygwin.com/ 를참조하기바란다. 참고2> Java가설치되는것은 TinyOS가구동되는것을확인하기위한 PC쪽의어플리케이션이 Java로구현되어있기때문이다. 참고3> GraphViz는 TinyOS상에서 document를만들어줄때사용된다. - 17 -
10 바탕화면에생긴 Cygwin 아이콘을더블클릭해서실행하면다음과같은창이뜬다. 이것이 Cygwin이실행된창이다. 현재의디렉터리에서 ls 명령을사용하면설치된 rpm 에대한 log 파일들이나온다. - 18 -
TinyOS 의 apps 디렉터리로들어가보자. 위치는 opt/tinyos-1.x/apps 이다. Blink 디렉터리로들어가서 Blink application 을 compile 해보았다. 위와같이나옴으로서제대로설치가된것을간단히점검해보았다. ** TIP-1 을참조하여 1.1.15 버전으로업데이트하도록한다. - 19 -
4. TIP Driver 설치하기 TIP을 USB에처음연결할때 2가지의드라이버를설치해야한다. 하나는 USB드라이버, 다른하나는 USBtoSerial드라이버이다. 설치과정은아래와같다. Window XP용드라이버는 TIP7xx 와같이제공하는 CD에포함되어있다. ( 그외의운영체제에맞는드라이버는 http://www.ftdichip.com/drivers/vcp.htm에서찾아설치하면된다.) 1 TIP7xx를처음 PC의 USB에연결하면새하드웨어를찾았다고나오며, 아래와같은창이뜬다. 아니오. 지금연결안함 을선택하고 다음 을클릭한다.(USB드라이버설치 ) 2 목록또는특정위치에서설치 를선택하고 다음 을클릭. - 20 -
3 찾아보기로드라이버가있는폴더를선택하고 ' 다음 을클릭. 4 아래와같이드라이버를설치한다. ** 보안관련해서실행하겠냐는메시지가뜨면 ' 실행 을클릭한다. - 21 -
5 USB드라이버설치가완료되었다. 마침 클릭. ( 이어서 USBtoSerial드라이버를설치가시작된다.) 6USBtoSerial 드라이버를설치한다. 과정은 1~5 와같다. - 22 -
7 목록또는특정위치에서설치 를선택하고 다음 을클릭. 8 찾아보기로드라이버가있는폴더를선택하고 ' 다음 을클릭.( 앞의 3 과동일폴더를선택 ) - 23 -
9 아래와같이드라이버를설치한다. 10 USBtoSerial 드라이버설치가완료되었다. 마침 클릭 - 24 -
11 Cygwin을열고 motelist 명령으로확인하면아래화면에서처럼, 인식된 COM포트번호및제품명이나온다. - 25 -
5. TinyOS Application 따라하기 TinyOS에는기본적으로여러가지샘플예제들이있다. 지금부터유용하게응용될수있는예제들을 TIP7xx에프로그래밍하여실습을할것이다. 예제의첫번째는 Blink로 Led제어와 Timer에대한개념을이해하도록한다. 두번째는 CntToLedsAndRfm & RfmToLeds로간단한 rf통신을이해한다. 세번째는 Oscilloscope로센서로부터값을받고 rf로전달하는과정을이해한다. 네번째는 SurgeTelos로능동적으로네트워크를구성하는 multi-hop, ad-hoc network의개념을이해한다. 다섯번째는 ReverseUART로 UART통신에대한개념을이해한다. 여섯번째는 TestUserButton으로 UserButton에의한 interrupt처리를이해한다. 일곱번째는 Listen/ListenRaw로 UART에서받는데이터값을그대로볼수있게해주는 Java Application이다. 본예제들을통해센서네트워크에대한관심과호기심을높일수있으리라생각한다. 단순히프로그램을다운로드하고동작되는과정을봄으로써동작원리를이해하고재구성하기엔어려움이있다. 따라서 User 분들께서는스스로소스코드를분석해보고, 수정해가며이해의수준을높이기바란다. 매뉴얼은매뉴얼일뿐임을... 특히이런매뉴얼은더욱매뉴얼스럽다. ^^ ** 주의 TIP7xx로프로그램다운로드과정중에 Mass Erase... 에서 2~3초이상멈춰있고, TIP7xx의 USB RX led(red led) 의불이계속켜져있다면, Ctrl+c를눌러서다운로드과정을중단하고 USB분리후다시연결하고시도하기바란다. - 26 -
1 Blink Blink는일정시간주기마다 led 하나가켜졌다꺼졌다를반복하는간단한 application이다. 우선 TIP7xx를 PC와연결한다. a Blink 디렉터리로이동 ($>cd /opt/tinyos-1.x/apps/blink) b Blink application을 compile하고 TIP7xx에다운로드 ($>make install telosb) 절차는아래와같이진행된다. c 프로그램다운로드가끝나면 TIP7xx 의 red led 가일정주기마다깜박이는것을볼수있다. <red led ON> <red led OFF> - 27 -
2 CntToLedsAndRfm & RfmToLeds CntToLedsAndRfm는숫자를 0~7까지카운트하고이를 3개의 led로표시하며동시에 RF로전송해주는 application이다. RfmToLeds는 RF를통해들어오는숫자를 3개의 led를통해이를표시하는 application이다. 따라서하나의 TIP7xx에는 CntToLedsAndRfm를, 또다른 TIP7xx에 RfmToLeds를다운로드한다. a CntToLedsAndRfm 다운로드하기. TIP7xx 하나를 PC와연결한다. CntToLedsAndRfm 디렉터리로이동 ($>cd /opt/tinyos-1.x/apps/cnttoledsandrfm) CntToLedsAndRfm application을 compile하고 TIP7xx에다운로드 ($>make install telosb) 절차는아래와같이진행된다. - 28 -
b RfmToLeds 다운로드하기. 또다른 TIP7xx를 PC와연결한다. RfmToLeds 디렉터리로이동 ($>cd /opt/tinyos-1.x/apps/rfmtoleds) RfmToLeds application을 compile하고 TIP7xx에다운로드 ($>make install telosb) 절차는아래와같이진행된다. c 프로그램다운로드가모두끝나면 CntLedsAndRfm가다운로드된 TIP7xx를동작시키면, RfmToLed도동일하게동작하고 CntLedsAndRfm가동작을중지하면 RfmToLeds도중지한다. ( 상단에는 CntLedsAndRfm를, 하단에는 RfmToLeds Application이다운로드된상태다.) <CntLedsAndRfm 동작 > <CntLedsAndRfm 동작중지 > - 29 -
3 Oscilloscope Oscilloscope는총 2개의 application으로이루어진다. 하나는 TOSBase로 RF를통해패킷을받아 PC로넘겨주는역할을하게되며, 다른하나인 Oscilloscope는센서를통해서센싱을하고이값을 RF로보내주는역할을하게된다. 동작의결과는 Java application을통해볼수있다. a Oscilloscope 다운로드하기. TIP7xx 하나를 PC와연결한다. Oscilloscope 디렉터리로이동 ($>cd /opt/tinyos-1.x/contrib/moteiv/apps/oscilloscope) Oscilloscope application을 compile하고 TIP7xx에다운로드 ($>make install telosb) 절차는아래와같이진행된다. 너무길어서중간부분을생략하였다. - 30 -
b TOSBase 다운로드하기. 또다른 TIP7xx를 PC와연결한다. TOSBase 디렉터리로이동 ($>cd /opt/tinyos-1.x/apps/tosbase) TOSBase application을 compile하고 TIP7xx에다운로드 ($>make install telosb) 절차는아래와같이진행된다. c 프로그램다운로드가모두끝나면 TOSBase 를 PC 와연결하고, Oscilloscope 를동작시킨다. 왼쪽에는 TOSBase가, 오른쪽에는 Oscilloscope가다운로드된상태이다. Oscilloscope가센싱을하고패킷을보내면 PC와연결된 TOSBase가이패킷을받아 PC로전송한다. < 동작화면 > - 31 -
d 이제 PC쪽의 Application을살펴보자. 먼저 SerialForwarder라는프로그램을실행시킨다. SerialForwarder는 COM port로받은데이터를 IP로전달해주는역할과서버역할을한다. java 디렉터리로이동 ($>cd /opt/tinyos-1.x/tools/java) SerialForwarder을실행 ($>java net/tinyos/sf/serialforwarder -comm serial@com#:telos&) 여기서 COM# 에서 # 은 COM port 번호이며, : 뒤의 telos는 57600이란 bps값과 telos 타입의메시지라는내부적으로설정되어있는변수이고, & 은실행을 background로실행하라는뜻이다. 절차는아래와같이진행된다. 실행되면아래와같은창이뜬다. 좌측에로그가보이는데, 간단히설명하면 'serial@com7:telos' 에서읽어오며, platform이 telos이고 client들은 port 9001번으로접속하라고나와있다. 우측에는서버포트번호와그아래연결된 COM포트번호가있으며, 바로아래서버를시작 / 중지할수있는버튼이있다. 그아래에 'Pckts Read' 카운트숫자가보이며 ( 이것이올라가지않을때는데이터가올라오지않는다는뜻이다.), Pckts Wrttn 은 COM port로데이터를보내는횟수를표시하고, 그밑두번째에 'Num Clients' 는이서버에접속하는 client개수이다. 그밑에도움말버튼과 log 화면을클리어해주는버튼과프로그램종료버튼이위치하고있다. - 32 -
e 이제 oscilloscope Java application을실행시킨다. oscilloscope Java application는 SerialForwarder에서제공해주는 port로접속해서 data를읽어오고, 이것을 graph로표시해주는 application이다. java 디렉터리 (/opt/tinyos-1.x/tools/java) 에서 oscilloscope 실행 ($>java net/tinyos/oscope/oscilloscope) 절차는아래와같이진행된다. 실행되면아래와같은창이뜬다. 위그림과같이 6개의채널이있으며각각 0-Humidity, 1-Temperature, 2-Total Solar Radiation, 3-Photosynthetically Active Radiation, 4-Internal Temperature, 5-Internal Voltage를나타낸다. 위에서는그래프후반에습도 ( 연두색 ) 와온도 ( 빨간색 ) 가올라간것을확인할수있다. 그래프들이보이지않을경우 zoom버튼을이용해간격을조절한다. - 33 -
f Oscilloscope 어플리케이션의메시지포맷은다음과같다. 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로부터발생한값그대로임을알려둔다. 센서값변환에대한식은 TIP-7 에있다. - 34 -
4 Surgetelos Surgetelos라는 application은노드들간에능동적 (ad-hoc, multi-hop) 으로네트워크를구성하여수집한데이터를 PC로전달하는역할을한다. 즉여기저기뿌려진노드들각각에서데이터를수집하고, 서로네트워크를이루며, 수집한데이터를 PC( 혹은 server) 와연결된노드로무선전송하는 application이다. 또한 TinyOS에서는형성된 network topology를보여주는자바 application을제공하고있다. Surgetelos를하기에앞서 tinyos-1.1.15로업데이트하자.(tip-1참조)^^ a Surgetelos 다운로드하기 TIP7xx 하나를 PC와연결한다. Surgetelos 디렉터리로이동 ($>cd /opt/tinyos-1.x/contrib/ucb/apps/sirgetelos) Surgetelos application을 compile하고 TIP7xx에다운로드 ($>make install.0 telosb) 여기서 install뒤의 0 이라는숫자는이노드가가지고있는구별되는이름이된다. 숫자를 ID로가짐으로서각각의노드에같은 application이올라가더라도구별되어질수있다. 절차는아래와같이진행된다. Surgetelos 에서는 0 번이 PC 와연결되는 Sink( 혹은 Base) 노드의역할을하게된다. - 35 -
똑같은방법으로다른 TIP7xx를 PC와연결한후, $>make reinstall.1 telosb 명령으로 application을다운로드한다. 이렇게 reinstall뒤의숫자를바꿔가며, 서로다른번호로 install 시킨다. (TIP-2 참조 ) b surge Java program 재컴파일하기. Java로된 surge program을통해 Surgetelos의동작을확인하려면, 메시지분석이나약간의 GUI변화로 surge Java program을재컴파일해야한다. 이것에대한설명은 Surgetelos의 README 파일에설명되어져있다. 그 README(/opt/tinyos-1.x/contrib/ucb/apps/SurgeTelos/README) 파일을보면아래와같은부분이있다. 위의노란색부분을복사한다. 이제 /opt/tinyos/tools/java/net/tinyos/surge/makefile을편집기로연다. Makefile내용중에주황색부분을 README파일에서복사한노란색부분으로대체한다. 이때주의할것은 $( 즉, 명령어가시작되는부분 ) 앞에는 TAB key로띄어져있다. 이것이제대로되지않았을때는 compile error가발생할것이다. 위와같이변경후 ( 연두색부분이바뀐부분이다 ) 에저장한다. - 36 -
다시 cygwin상에서 /opt/tinyos/tools/java/net/tinyos/surge/ 로이동한후, 기존컴파일된것을지우고 (make clean), 재컴파일 (make) 한다. 과정은아래그림과같다. c 0번노드를 PC와연결하고, SerialForwarder라는프로그램을실행시킨다. SerialForwarder에대해선 Oscilloscope application 파트에서설명했으니참조하기바란다. java 디렉터리로이동 ($>cd /opt/tinyos-1.x/tools/java) SerialForwarder을실행 ($>java net/tinyos/sf/serialforwarder -comm serial@com#:telos&) 여기서 COM# 에서 # 은연결된 COM port 번호이다, 0번노드에서도데이터를보내므로제대로동작이된다면패킷카운트가증가할것이다. d Surge Java program을실행시킨다. java 디렉터리 (/opt/tinyos-1.x/tools/java) 에서 surge 실행 ($>java net/tinyos/surge/mainclass 0x7d) 0x7d는 groupid로같은변경이없었을시는 0x7d가 default로되어있다. 실행되면다음과같은화면이나타난다. 각각의녹색원위의숫자가 nodeid가되고, 몇개의메시지를받았는지가표시되며, 메시지가얼마나정상적으로잘들어오는지 (queue에남은메시지라고봐도된다.) 에대한막대그래프가아래표시된다. - 37 -
e Surgetelos 어플리케이션의메시지포맷은다음과같다. 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에서연결하고있는센서는내부전압센서임을밝혀둔다. 센서값변환은 TIP-7을참조하 라. parentaddr이 00이므로 0번을가진 id 모트가이모트의부모노드이다. seq_no는 0B로이 surge메시지가 11번째메시지라는것을표시한다. - 38 -
5 ReverseUART ReverseUART라는 application은노드와 PC간에 UART통신구현예제이다. ReverseUART application이다운로드된노드를 PC와연결하고 java application을통해 UART로문자열을보내면노드에서는문자열을받아서, 그문자열을거꾸로한뒤다시 UART로전송하고, PC상에서그결과를볼수있다. a ReverseUART 다운로드하기 ReverseUART는 /tinyos-1.x/apps/reverseuart에위치하고있다. TIP7xx 하나를 PC와연결한다. ReverseUART 디렉터리로이동 ($>cd /opt/tinyos-1.x/apps/reverseuart) ReverseUART application을 compile하고 TIP7xx에다운로드 ($>make install telosb) - 39 -
b ReverseUART Java application compile하기. 같은폴더에서 ($> javac *.java ) 명령을치면 compile된다. ($> ls 명령으로파일리스트를확인하면확장자가 class인파일이 2개생성되었을것이다.) c ReverseUART가다운로드된노드를 PC와연결하고, SerialForwarder라는프로그램을실행시킨다. SerialForwarder에대해선 Oscilloscope application 파트에서설명했으니참조하기바란다. java 디렉터리로이동 ($>cd /opt/tinyos-1.x/tools/java) SerialForwarder을실행 ($>java net/tinyos/serialforwarder -comm serial@com#:telos&) 여기서 COM# 에서 # 은연결된 COM port 번호이다, d testreverseuart java application실행 /opt/tinyos-1.x/contrib/ucb/apps/reverseuart 디렉터리에서 $> java testreverseuart "strings" 라고실행한다. 여기서 " " 안에원하는문자열을넣어주면된다. 문자열에 maxfor 를넣었고 (send), 결과로 rofxam 이나왔다 (recv). 이렇게 TIP과 PC사이의문자열을주고받으면서, UART를통한통신을구현됨을확인할수있다. - 40 -
6 TestUserButton TestUserButton라는 application은 TIP7xx 시리즈에있는 UserButton을이용한예제이다. UserButton을눌렀을때마다 LED가 0~7까지카운트되는것을볼수있다. ( 매뉴얼에첨부되어있는 TestUserButton 폴더를 /opt/tinyos-1.x/apps/ 안에카피한다.) a TestUserButton 다운로드하기 TestUserButton는 /tinyos-1.x/apps/testuserbutton에위치하고있다. TIP7xx 하나를 PC와연결한다. TestUserButton 디렉터리로이동 ($>cd /opt/tinyos-1.x/apps/testuserbutton) TestUserButton application을 compile하고 TIP7xx에다운로드 ($>make install telosb) b 다운로드가완료된 TIP7xx 시리즈에있는 UserButton을누룰때마다 LED로표시되는카운트가 0부터 7까지반복되는결과를얻는다. ( 실행이미지는생략합니다.) - 41 -
7 Listen / ListenRaw TinyOS 툴중에는 Serial의데이터를직접볼수있는 application이있는데바로 Listen과 ListenRaw이다. ListenRaw는패킷형태에맞춰진데이터를보여주고, Listen은실제로들어오는데이터값을그대로보여준다. (RFC 1662 문서참조요함 ) a Listen 기존에했던예제 4을참조하겠다. ( 여기서는모든화면을보기위해 node 2개만을사용하였다.) 예제 4를실행시키고 cygwin창을하나더열어서 java 디렉터리로이동 ($>cd /opt/tinyos-1.x/tools/java) Listen을실행 ($>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없이도실행할수있다.( 아래의 b 참조 ) - 42 -
b Listen 단독실행의경우 Node가 PC에연결되어데이터를넘겨주고있다는가정하에 cygwin창을하나열어서 java 디렉터리로이동 ($>cd /opt/tinyos-1.x/tools/java) 1) export후 Listen실행 export ($> export MOTECOM=serial@COM#:telos) ListenRaw 실행 ($>java net/tinyos/tools/listen) (# 에는 PC로연결된 Node의 COM port 번호를적는다.) 제대로실행된다면아래그림처럼데이터가출력될것이다. (SurgeTelos를다운로드한 Node를 PC와연결한경우이다.) 2) export와 Listen동시실행 export와 Listen동시실행 ($> MOTECOM=serial@COM#:telos java net/tinyos/tools/listen) (# 에는 PC로연결된 Node의 COM port 번호를적는다.) 제대로실행된다면아래그림처럼데이터가출력될것이다. (SurgeTelos를다운로드한 Node를 PC와연결한경우이다.) - 43 -
c ListenRaw Node가 PC에연결되어데이터를넘겨주고있다는가정하에 cygwin창을하나열어서 java 디렉터리로이동 ($>cd /opt/tinyos-1.x/tools/java) ListenRaw 실행 ($>java net/tinyos/tools/listenraw COM#) (# 에는 PC로연결된 Node의 COM port 번호를적는다.) 제대로실행된다면아래그림처럼나올것이다. (SurgeTelos를다운로드한 Node를 PC와연결한경우이다.) - 44 -
TIP-1> TinyOS 를최신버전으로업데이트하기 2006.2.1일현재 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 TIP의간단정보, 몇번 com Port로 PC와연결되었는지알수있다. 각각의 application폴더에서실행되는명령어 2 $> make <platform> appliction을 platform별로 compile해준다. 3 $> make install <platform> appliction을 platform별로 compile한후 node에그 hex image을다운로드한다. 4 $> make reinstall <platform> build/<platform>/ 폴더에이미 compile되어있는 hex image을다운로드한다. install, reinstall에서의부가적명령 a $> make install.<#> <platform> <#> 에다가숫자를넣음으로써. 그 Node에 ID부여해준다. reinstall도마찬가지다. 예 ) $> make install.1 <platform> ---> 1번 ID를가진 Node가된다. b $> make install <platform> bsl,<#> 또는 $> make install <platform> bsl,com<#> <#> 에다가숫자를넣음으로써. install 할 COM Port를지정해줄수있다. 이는여러개의 Node가 PC에연결되있을때, 그중하나를선택해서다운로드하거나, EEPROM의정보가지워져서 motelist로검색이되지않고, 장치관리자에서는 COM Port확인이가능할때쓰인다. reinstall도마찬가지다. 예 ) $> make install <platform> bsl,4 --->5번 COM Port에 install된다. 또는 $> make install <platform> bsl,com5 --->5번 COM Port에 install된다. 주의 ) 처음명령의경우에한하여 cygwin환경에서의 COM Port는 0번부터, windows 환경에서의 COM Port는 1번부터시작하므로 window의장치관리자에서보이는 COM Port번호에서 1을뺀 Port번호로지정해야한다. 5 $> make docs <platform> appliction을 platform별로 document를만든다. html형태이며, 생성되는위치는 make할때첫줄에표시되어있다. 6 $> make clean compile된결과 (build/) 들을삭제한다. - 46 -
TIP-3> GroupID 또는 RF Channel 바꾸기 1 GroupID GroupID란 Node를한그룹으로묶음으로서하나의 PAN영역으로구분시켜주는역할을한다. 기본적으로는 0x7d라는값으로설정되어있다. 0x00에서 0xff의범위를갖는다. -GroupID 바꾸기- $>cd /opt/tinyos-1.x/tools/make에 Makedefaults라는파일을자주사용하는편집기로연다. 열어서보면첫번째줄에다음과같은내용이있다. DEFAULT_LOCAL_GROUP?= 0x7d 이부분의값을다른값으로변경해주고저장하면된다. 예 ) DEFAULT_LOCAL_GROUP?= 0x5c 변경후에 compile 하면 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 바꾸기- compile시에 CC2420_CHANNEL=?? 를추가한다. 예 ) $> CC2420_CHANNEL=15 make telosb 이렇게넣어주고저장하면 compile 시에 15 번채널로설정된다. 또다른방법은 3 번을참조한다. - 47 -
3 Makelocal 을이용하여, GroupID, RF Channel 동시에바꾸기 $>cd /opt/tinyos-1.x/tools/make 디렉터리에서 Makelocal이라는이름으로빈파일을만든다.( 확장자는없다.) 앞서만든 Makelocal안에아래의내용을넣어주면된다. (Makedefault는변경할필요가없다.) DEFAULT_LOCAL_GROUP=0x4c PFLAGS += -DCC2420_DEF_CHANNEL=14 ( 노란색부분에원하는값을넣는다.) 위처럼 GroupID값을 4c, RF Channel값을 14라했을때, 컴파일하면아래와같은메시지가보인다. (Blink예제를 compile해보았다. 빨간색글씨부분이바뀐부분이다.) - 48 -
TIP-4> compile 된 image 파일에서 GroupID 찾기 TinyOS내의 application을 compile하면그 application directory에 /build/telosb/ 라는 directory 가생기고 (compile시 platform이 telosb일경우, platform명에따라 /build/<platform>/ 이라는 directory가생긴다.) 그안에 main.ihex, main.exe, app.c 등몇가지파일이생긴다. 여기서 app.c는 necc Compiler로 compile되어서나온 C파일이다. 이파일을검색하여 compile된 image파일의 Group ID를알아낼수있다. $> grep AM_GROUP /build/telosb/app.c 예 > Blink directory 에서했을경우 Blink에서기존에 compile했기때문에 build directory가있다.( 다홍색부분 ) app.c에서 AM_GROUP을찾는명령을주면결과가나온다 ( 연두색부분 ). ** 주의 TinyOS 버전에따라출력내용이위의것과상이할수있다. TIP-5> compile 된 image 파일에서 RF Channel 찾기 tip-5와마찬가지로 app.c에서 RF Channel값이얼마로되어있는지확인할수있다. platform이 telosb일경우를가정하였다. 1 TinyOS 1.1.9 $> grep "TunePreset(0x" build/telosb/app.c -> 실행후결과에서 0x뒤의값이 RF Channel값이다. 2 TinyOS 1.1.14 $> grep -n -A1 "gcurrentparameter [CP_FSCTRL ] = (1 <<" build/telosb/app.c -> 실행후결과에서 (??-11) 이란부분에서?? 의값이 RF Channel 값이다. 3 TinyOS 1.1.15 $> grep "CC2420_CHANNEL =" build/telosb/app.c -> = 다음에주어진값이 RF Channel 값이다. ** 주의 TinyOS버전에따라표현방법이각각틀리며, RF Channel 값의수동적변경없이 compile됐을때도표시방법이약간씩달라질수있다. - 49 -
TIP-6> 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/) 를사용할것이다.(2006.03.16 현재최신버전 1.8.25입니다.) 또한기본적 Korea 언어팩이있으므로한글메뉴도볼수있다. TortoiseCVS-1.8.25.exe를다운받아설치한다. 설치가끝난후탐색기에서마우스오른쪽버튼을클릭하면팝업메뉴가뜨는데아래그림과같은부분이추가되어져있을것이다. 이제 TinyOS 를위한 CVS 를설정하여보자. 1) CVS 체크아웃 (K)( 위그림 ) 를누르면아래와같은창이뜬다. CVSROOT: 부분에 :pserver:anonymous@cvs.sf.net:/cvsroot/tinyos라고쓴다. 맨밑의 모듈 부분에 tinyos-1.x라고쓴다. ( 목록가져오기명령실행이잘안되므로, CVS repository는 http://cvs.sourceforge.net/viewcvs.py/tinyos/ 를참조하기바란다.) - 50 -
확인을누르면아래와같은창이뜨면서체크아웃 ( 소스를가져오는것 ) 하게된다. 실행이끝나면폴더에표시가생긴다. 이그림은체크아웃후폴더의일부를표시한것이다. ** 주의 CVS 체크아웃을실행하는위치에따라체크아웃된파일들이생성된다. - 51 -
TIP-7> TIP700CM &TIP700SM-a 의센서값변환식 TIP700CM과 TIP710CM의센서보드인 TIP700SM-a에있는센서는 SHT11과 S1087/S1087-1 이다. SHT는센시리온사에서나온온, 습도겸용센서이고, S1087/S1087-1은조도센서이다. 각각에대한내용은앞서보았던 TIP7xx Specification이나각각의 datasheet를찾아보기바란다. adc_value 는센싱된값, Vref=1.5 1 Internal Voltage (12bit ADC) Internal Voltage V = adc_value / 4096 * Vref *2 2 Internal Temperature (12bit ADC) t_val = adc_value / 4096 * Vref Internal Temperature T = (t_val -0.986) / 0.00355 3 S1087/S1087-1 (12bit ADC) l_val = adc_value / 4096 * Vref I = l_val / 100,000 S1087 lx = 1E6 * I * 1000 S1087 1 lx = 1E5 * I * 1000 ( 참고로 1E6은 10에 6승을뜻한다. S-1087의 datasheet에서 lux와전류간의관계그래프참조! ) 4 SHT11 (14bit ADC for Temperature, 12bit ADC for Humidity) Temperature(Tc) = -39.60 + 0.01*adc_value humidity = -4 + 0.0405 * adc_value + (-2.8*10^-6)*(adc_value^2) Humidity_true = (Tc -25) * (0.01+0.00008*adc_value) + humidity - 52 -
TIP-8> 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의경우 compile시에러를발생시킬수있으므로생략하였다.) $> rpm -ivh *.rpm ( 만약 make3.8설치시이미설치되어있다는에러가발생하면 make3.8 tool만 -ivh를 -Uvh로대체한다.) - 53 -
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 - 54 -
7 motelist-linux 유틸리티를심볼릭링크한다. $> cd /usr/local/bin; $> ln -s $TOSROOT/tools/src/motelist/motelist-linux motelist; 8 tinyos에서사용되는스크립트를 compile한다. $> 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임을주의하라.) - 55 -
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; - 56 -
13 설치완료후테스트설치가끝났으므로잘설치되었는지테스트해본다. 아래는 Blink Application 을컴파일하고 TIP700 에다운로드한화면이다. 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/ - 57 -
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 - 58 -