정말 이번엔 끝내자 ㅜ,.ㅜ;

VMWARE Redhat 기준이다.

1. JDK를 깐다 ㅡ.ㅡ; 인스톨 보다 다운로드가 빡시다..
일단 IBM에 로그인하기 위해 가입을 해야 하는데 생각보다 많은 기입을 요구 한다. 일단 가입하고
SDK 5.0을 위시한 모든파일을 다운로드를 .. 헉 .. JDK깔기가 만만치 않다..

* SUN껄 깔면 안된다.. ibm을 깔자..

내가 깐건 이 두가지 이다.
1. ibm-java2-i386-sdk-5.0-5.1.i386.rpm
2. ibm-java2-i386-javacomm-5.0-5.1.i386.rpm

TinyOS가 serial을 쓸것 같아서 javacomm 도 같이 깔았다..

깔고 난뒤 버젼은 1.5  로 출력 된다.

설치는 위 두개의 rpm 잡아주고 PATH를 bash_profile에 설정 하면 jdk설치는 완료 된다..(정말?.. 솔직히 모른다 아직 ㅋㅋ 나중에 데모 플 돌려보면 알것지)

2. 컴팔러들을 설치한다.
Atmel AVR Tools
Tool Windows/Cygwin Linux
avr-binutils avr-binutils-2.15tinyos-3.cygwin.i386.rpm avr-binutils-2.15tinyos-3.i386.rpm
avr-gcc avr-gcc-3.4.3-1.cygwin.i386.rpm avr-gcc-3.4.3-1.i386.rpm
avr-libc avr-libc-1.2.3-1.cygwin.i386.rpm avr-libc-1.2.3-1.i386.rpm
avarice avarice-2.4-1.cygwin.i386.rpm avarice-2.4-1.i386.rpm
insight (avr-gdb) avr-insight-6.3-1.cygwin.i386.rpm avr-insight-6.3-1.i386.rpm
If you receive an rpm error that indicates that you have a newer version already installed, try rpm -Uvh --force TI MSP430 Tools
Tool Windows/Cygwin Linux
base msp430tools-base-0.1-20050607.cygwin.i386.rpm msp430tools-base-0.1-20050607.i386.rpm
python tools msp430tools-python-tools-1.0-1.cygwin.noarch.rpm msp430tools-python-tools-1.0-1.noarch.rpm
binutils msp430tools-binutils-2.16-20050607.cygwin.i386.rpm msp430tools-binutils-2.16-20050607.i386.rpm
gcc msp430tools-gcc-3.2.3-20050607.cygwin.i386.rpm msp430tools-gcc-3.2.3-20050607.i386.rpm
libc msp430tools-libc-20050308cvs-20050608.cygwin.i386.rpm msp430tools-libc-20050308cvs-20050608.i386.rpm
jtag Not yet available msp430tools-jtag-lib-20031101cvs-20050610.i386.rpm
gdb Not yet available msp430tools-gdb-6.0-20050609.i386.rpm

일단. 다 설치 했는데.. 마지막 msp430tool-gdb~ 이게 조심할게 glibc 2.3.4 이상이라 설치를 하질 못했다 ㅜ.ㅜ;
디버깅 하실려면.. 페도라 최신 강추 하며 페도라 최신에 깔아 보신분은 트랙백을 부탁 드려요 ^^;
그리고 Uvh는 쓰질 않았다.. (뭐 물론 아무것도 안깔린 리눅스에서 시작 했으니)

이제 부터 TinyOS를 설치 한다.


, .

TinyOS2.0 OVERVIEW III

TINYOS 2007. 3. 5. 01:00
10. Arbitration(중재 기능)
1.0에서의 가상화된 모듈은 여러 리소스를 공유 해서 사용 할 수 있으나 1.0은 이를 완벽히 지원 하지 않았다. 그래서 2.0에서는 공유 리소스 또는 중개 서비스를 제공 또는 획득 할 수 있는 Resource 모듈을 제공한다. 그리고 중개 서비스는 다중 클라이언트에게 접근 중재를 제공 하며 또한 전력 관리에 있어 관리 순서를 제공 하여 보다 안전하게 전원을 제어 할 수 있게 해준다.

11. Power Management
2.0은 전력 관리로 마이크로 컨트롤러 전력상태, 장치 전력 상태 두가지로 나누어진다. 전자는 마이크로 컨트롤러의 상태를 체크 하며 후자는 10에서 나온 공유 장치 중개자를 통해 이루어진다.

2.0은 CC1000,CC2420에서 LPL(LOW POWER LISTENING)을 제공 하며, CC2420은 아직 실험 중이다. CC2420에서 LPL을 사용 할려면 chips/cc2420 lpl을 Makefile에 포함하여라

12. Network Protocols
2.0에서는 두개 정도 참조 할만한 많이 쓰는 네트웍 프로토콜을 첨부 하였다. Dissemination은 네트웍 모든 노드의 20바이트 이내의 작은 데이타를 안정적으로 전송하며 동시에 Collection은 트리 네트웍을 형성한다. 이 두개의 프로토콜은 함께 광역 데이타 수집 어플에 적용 가능 하며 Collection은 최근 베타가 릴리즈 된후 상당히 발전했다.

13. Conclusion
2.0은 Tinyos 개발의 다음 발전을 나타내며, 몇년에 이은 유저의 경험의 축적은 TinyOS 구조의 기본을 설립하며 여러 방향으로 이끌었으며 그방향은 희망적으로 쉬우며 간단한 개발 방향으로 가고 있다. 차후 비휘발성 메모리, 기본 멀티홉 프로토콜등을 발표 하도록 하겠다.

대충 OVERVIEW를 끝냈습니다. 원래는 저번주에 끝낼려고 했는데..

태클들어오고 다른 거도 같이 진행 중이라 더디긴 더더네요 ㅋㅋ

내일은 Linux에 TinyOS를 깔아볼 예정 입니다.(그전에 파일 서버, FTP 서버 부터 퍼버버벅 ㅡ.ㅡ;)

ㅋㅋ 그럼 이번주도 활기차고 열심히 겅부 하며 돈을 벌어보잣.~~!!!!!
, .

TinyOS 2.0 Overview II

TINYOS 2007. 3. 2. 13:26

4. Booting/Initialization

2.0의 부팅 하는 방법은 1.0과 틀리다. 1.0의 StdControl 은 StdControl, Init로 나뉘었으나 2.0에는 하나 뿐이며 두개의 start, stop 함수만 가지고 있다. 1.0에서는 부팅되며 하드웨어를 켜고 초기화 과정을 했으나 2.0에서는 초기화만 한다. 그리고 하드웨어, 스케줄러등등의 초기화 과정이 끝나면 Boot.boot 이벤트를 발생 시킨다. 어플리케이션에서는 이 이벤트와 start,stop 명령어만 잘 사용하면 될것이다. 부팅에 관한건 TEP107을 참조 하도록

*. 앗.. ~~~!!! 이제 StdControl의 stoop명령어로 Power off이 안되는 것인가 에효 ... 다른걸 궁리 해야 하는군 ㅡ.ㅡ;

5. Virtualization
추상화~~!!!
2.0의 컴포넌트들은 1.0처럼 병렬인터페이스들은 자주 사용하는 것이 아닌 서비스 별로 추상화된 모듈을 많이 사용 한다.

* . 물론 이런 서비스추상화 모듈이 편하긴 하지만 조금만 해보면 좀더 밑으로 가보고 싶을껄 ㅡ.ㅡ;

6. Timers
2.0은 타이머 셋팅에 좀더 많은 옵션을 제공한다. 일단 하드웨어 플랫폼에 따라서 32KHz의 밀리세컨 단위의 타이머는 기본 제공 한다. 그리고 매우 정확한 타이머를 두개 내지 한개 제공 한다.(async 키워드를 사용하는 타이머 물론 모르면 넘어가라. 대충 매우 정확하고 즉시 일들이 일어난다고 생각하면 된다.) 그리고 매우 유용한 기능 타이머 컴포넌트에게 타이머 터질때 까지 얼마나 남았냐고 물어 볼수 있으며, 몇 초 후부터 타이머를 가동해라고 명령 할 수 도 있다.

일단 여기서 보는 예로 2.0에서의 추상화가 1.0과 어떻게 다른지 알수 있다 참조 해라.

1.0에서

components App,TimerC;

App.Timer->TimerC.Timer[unique("Timer")];

2.0에서는

components App, new TimerMilliC();

App.Timer->TimerMilliC;

*뭐여 완전 자바다 이젠 ㅡ.ㅡ;

7. Communication
-일단 많이 바뀌었다 ㅡ.ㅡ;
메세지 구조는 message_t 로 바뀌었고 패킷필드를 직접 참조를 못한다(윽 불편해 ㅡ.ㅡ;)  예로 msg의 목적지 주소에 접근 할려면 ㅡ.ㅡ;; 윽 AMPacket.destination(msg) 를 써야 한단다 ㅡ.ㅡ

send insterface도 구분된다. AMSend interface는 목적지 필요한 인터페이스 이며 , broadcasting 추상화 계층은 Address 없이 사용하는 Send 인터페이스를 써야한다.

그리고 자주 사용 하는 UART_ADDRESS도 못쓴다 대신 따로 있다. SerialActivemessage를 사용 해야 한다.

Active Message(여기서 Active Message는 구조가 아니다.표준 통신 모듈이다.)  시스템은 네개의 추상화 모듈로 구성되며, 큐를 공유 하는 1.0과는 달리 각 센더 컴포넌트 마다 예약된 큐를 따로 가진다.(스케줄러랑 똑같다.) 그리고 각 큐는 동등한 권한을 가진다.(앗 이건 안된다.. 먼저 주고 싶을때도 있을건데.. 음 ㅡ.ㅡ;만들까)

TEP111 은 message_t 에대하여 TEP116은 AM에 대해 나와 있다 참조!!

low power stact 은 CC1000에 대해선 나와 있고 CC2420은 테스트 중이란다.(에효 빨리 해줘 ㅡ.,ㅡ;)

8. Sensors
2.0에서 센서 컴포넌트는 HIL 센서 플랫폼이다. TEP114를 보면 HIL 데이타 획득 인터페이스가 제공 해주는 Read, ReadStream, get이 있으며 그 센서의 제공 능력에 따라 나뉜다.

좀더 정확한 걸 원하면 HAL을 직접 접근 하도록 하라.

9. ERROR_CODE
1.0에서의 반환 값은 result_t 였다 2.0은 error_t로 바뀌었으며 error_t는 SUCCESS,FAIL,EBUSY,ECANCEL의 인자를 가진다.

기존의 1.0 소스

if(call A.b()){
  busy=TRUE;
}

는 다음과 바꿀것을 추천한다.

if(call A.b()==SUCCESS){
busy = TRUE;
}

오늘은 더 할지 안 할지 모르겠다 ㅡ.ㅡ; 빨리 해야쥐 원

, .

TinyOS 2.0 OVERVIEW I

TINYOS 2007. 2. 27. 11:15
1. 소개 요약
-Tiny2.0은 재구성 되었다. TinyOS 1.x가 사용자의 요구 또는 사용에 있어 한계가 보이며 그 한계로 인해 요구사항의 개발이 어려워 졌다.

TinyOS 2.0 과 1.x의 코드는 호완 되지 않으나. 1.x의 코드를 2.0으로 바꾸는데는 그렇게 어렵지도 많은 시간을 필요로 하지도 않을 것이다.(정말 일까 ㅡ.ㅡ; 일단 까라니 까보긴 하자).

이제 Tep란게 생겼단다 알아 두자

*TEP - TinyOS Enhancement Proposals) ㅎㅎ TinyOS 2.0 사이트 가면 여러가지(하드웨어 추상화, 스케줄러, 등등)이 있으니 관심 있음 가서 보자.

2. Platforms/Hardware Abstraction
- 플랫폼 폴더는 tos/platform 이며 하드웨어 추상화를 위한 칩에 대한 정의가 있는 폴더는 tos/chips 폴더 이다.

그리고 하드웨어 추상화 계층은 HPL,HAL, HIL의 세단계로 구성된다.

HPL - 하드웨어 칩에 대한 정의가 되어있음. 파일앞에 Hpl이 붙음

HAL - HPL을 좀더 쉽게 사용하기 위한 레이어 정확히 말하면 HIL에 동일한 인터페이스를 제공 해주기 위한 레이어 파일 이름은 걍 칩이름 으로 명명

HIL - HAL을 사용해 유저가 필요한 인터페이스를 추상화 하여 제공 하는 레이어 즉 플랫폼에 상관 없이 같은 이름의 인터페이스를 제공 해주기 위한 레이어 파일이름은 그 기능에 따름

지원 플랫폼 - eyeIFX v2, intelImote2, mica2, micaz, telosb, tinynode, btnode3

3. Scheduler
TinyOS 1.0 과 2.0의 스케줄러는 비선점 FIFO 방식인건 똑같다. 하지만 약간 차이가 있는게 1.0은 모든 태스크가 공유큐를 공유한것에 비해 2.0은 태스크 마다 큐의 슬롯을 하나 차지 한다.그래서 태스크는 하번에 하나씩 포스팅 할수 있다. 그래서 컴포넌트가 여러번 포스팅 하면 변수를 셋팅하여 태스크가 포스팅 되면 다시 자신을 포스팅 한다.
주의 사항은 이거다 .. 1.0처럼 포스팅이 실패 했다고 다시 포스팅 하지 마라. 알아서 한단다. 조심 해라.. ~~~

그리고 어플리케이션에서 스케줄러 조정도 가능하다. 오~~ 정말 이제 비선점인가 ㅡ.ㅡ;



- 이제 시작이다. 아직 소스를 분석을 본격적으로 하진 않아서 어리벙벙 하다.~~

다음달엔 끝을 내자. 시작이 반이다. ㅎ
, .
미루고 미뤘던 TinyOS2.0을 오늘 부터 시작

저번처럼 전부다 번역(회사에서만 보기로 결정) 은 안하고 요점만

추려서~~

블로그에 정리할 예정임~~

보시고 틀린곳 있음 애기들 해봐요

오늘 내일 해서 OverView,를 위시로한 릴리즈 노트 쪽을 중요한 부분 있으면

요점만 추려서 올려 보도록 하겠습니다.
, .