두번째 입니다.

NesC 컴파일러 버젼 확인

sytanx error before 'new'

컴파일시 이런 메세지가 출력 될 경우에는 ncc --version으로 버젼을 확인하세요.

ncc : 1.2.1
nescc : 1.2.6

이상 이어야 합니다.

그리고 버젼 확인 후에도 에러가 발생 한다면 다른 버젼의 ncc 가 컴파일시 불러와지는겁니다.
그리니 "which ncc" 라는 명령어로 ncc의 위치를 파악하여 버젼을 다시 확인 하시길 바랍니다. 이와 같은 경우는 tinyos1.x에서 업그레이드 했을 경우 더욱 쉽게 발생 할 수 있으니 유의 하시길 바랍니다.

자.. 이제 모트에 넣어 보도록 하죠.~~

다 건너뛰고 .. 제가 가진전 telosb  뿐이라 ㅎㅎ telosb만 합니다.

telosb 계열은 아시다 시피 USB로 퓨징이 가능 합니다. 그래서 걍 컴터에 꽂고 "motelist"라고 쳐봅시다
그럼 연결된 모트를 확인 하실 수 있습니다.

연결이 확인되면 make telosb resintall bsl,/dev/ttyUSB2 명령으로 퓨징 가능 합니다.

제가 telosb 계열을 사용 하는 관계로 install 부분은 간단하게 넘어갔습니다. 다른 모트를 사용 하시는 분들은 해당 튜터리얼을 보세요.

이제 본격적으로 TinyOS, NesC의 컨셉을 간단히 알아 보도록 하겠습니다.

- Components and Interfaces -

이제 컴파일 해서 설치 했으니 이제 시작 입니다. 이제 어떻게 깜빡깜빡 하는지 알아야 겠죠 ^^;

자 Blink라는 어플은 nesc로 되어 있으며 nesc는 씨언어에 컴포넌트와 동시 실행을 지원 하도록 만든 언어 입니다.
nesc 어플리케이션은 한개 이상의 컴포넌트들이 wired 즉 연결되어 실행 되어 집니다. 컴포넌트는 1.x와 마찬가지로 구성을 저장 하는 모듈과, 실제적인 기능을 하는 함수들을 포함 하고 있는 모듈로 구성 됩니다.컴포넌트는 인터페이스를 제공 또는 사용 합니다. 제공 하는 인터페이스는 컴포넌트의 사용자에게 기능의 명세를 제공하며 사용하는 인터페이스는 컴포넌트의 기능 구현에 있어 필요한 하위 컴포넌트의 인터페이스이다. (말이 어렵네.. ㅡ.ㅡ; 즉 제공 하는건 위에 자기의 기능을 주고 사용하는건 자기가 하위에게 명령을 내릴때 사용 한다는 것)

인터페이스는 양방향 입니다. 제공자에서 기능을 구현해야 하는 command와 사용자에서 구현 해야 하는 event가 있습니다. 하나의 컴포넌트는 하나 이상의 컴포넌트를 사용 제공 할 수 있으며 또한 하나의 인터페이스를 여러개의 개체로 사용 할 수도 있다.

configurations and module
앞에서 살짝 애기 했습니다. nesc는 두가지 타입의 컴포넌트 즉 module과 configurations 가 있습니다. 모듈은 제공 인터페이스를 구현하며 configuration은 컴포넌트끼리 연결 하기 위해 사용 합니다. 모든 어플은 top-level-configuration이라는 파일에서 시작 합니다. 여기선 BlinkAppC가 되겠죠 ^^; 위 두개의 컴포넌트는 하나의 파일에 위치 할수 도 있습니다.~~

- Blink:EXAM -

blink를 살펴 보면 생각 하는 거랑 약간 틀립니다. LED의 깜빡이는 속도를 제어하여 binary 카운터를 실행 합니다. (생각 보다 ver2.0에서는 타이머가 정확하게 동작 하는 겁니다.)

Blink는 BlinkC.nc(module), BlinkAppC.nc(configuration) 두개로 구성 되어 있습니다.모든 어플은 top-level이 필요 하다고 했죠. 여기서 top-level은 BlinkAppC 입니다. BlinkC.nc 는 실제로 Blink 어플의 기능을 제공 합니다. 그럼 여기서 바로 나오죠.. BlinkAppC 파일은 BlinkC.nc파일을 다른 컴포넌트와 엮기 위해서 사용 하는 겁니다.

여기서 Module 과 configuration 을 나누는 이유는 system designer는 바로 바로 구성하고 개발자는 라이브러리 모듈을 제공 하여 개발할 수 있기 때문이다.그래서 디자이너가 실제로 없는 모듈을 사용해서 개발 가능 하고 개발자가 그 모듈을 만들어서 줘서 어플을 완성 할 수도 있게 되는 것이다. 그래서 모듈과 configuration 파일은 서로 다른 폴더에 있어도 상관 없다.

File Name File Type
Foo.nc Interface
Foo.h Header File
FooC.nc Public Module
FooP.nc Private Module

tinyOS 에서 추천하는 파일 포맷은 다음과 같으니 참조 하자.

이제 실제로 소스를 다음장 부터 보도록 하자.


, .