Tiny OS & NesC 2008-04-02, NesC Part2.
Contents 1 NesC 구성 2 네이밍 법칙
Hot Tip NesC Network Embedded System C C에 비해 편리함 원하는 Component만 연결해 주면 원하는 프로그램 작성 매우 작음 No Dynamic Memory
Hot Tip Component Application 하나 이상의 컴포넌트로 구성되어 컴포넌트 사이에 와이어로 연결된 실행 가능한 프로그램 Component Wire, Interface를 이용하여 다른 Component를 연결된 형태와 동작을 기술하며, Component의 수행, 메시지 수신 시 처리사항 등을 기술한 항목 NesC를 구성하는 기본 블럭 Module Configuration
Configuration Module 컴포넌트의 연결을 나타냄 하나의 새로운 Component를 정의 Interface의 동작을 기술 이벤트 핸들러 작성 새로운 Component의 동작 및 다른 Component들과의 연동을 실제로 구현
Comp3 Comp1: module Comp4 Comp2: Application configuration
Interface Component를 연결하는 포트의 역할을 수행 제공자와 사용자 형태로 컴포넌트에서 선언 (TinyOS-1.X) Command와 Event타입의 함수로 정의 Command Event
interface identifier{ command result_t function_name prototype event result_t function_name prototype } interface가 제공하는 함수 이름 component 이름
Command 현 컴포넌트의 module 부분에 구현된 함수로서, 현 컴포넌트를 사용하는 상위 컴포넌트에서 ‘signal’명령을 통해 호출 Event 현 컴포넌트를 사용하는 상위 컴포넌트에 구현되어야 하는 함수로서, 특정 인터럽트나 조건이 만족되었을 경우, 현 컴포넌트가 어떤 정보를 상위 컴포넌트에게 전달할 때 사용
Component configuration configuration identifier { provides{ interface interface_name1 } implementation { components idetifierM, com, com2.. interface_name1 = identifierM.interface_name1 identifierM.interface_name2 -> com1.inteface_mane3 com1.interface_name3 <- identifierM.interface_name2
Wiring component사이의 연결 종류 -> , <- , - ex1> interface1 = interface2 2개의 인터페이스가 같음을 의미 ex2> interface1 -> interface2 interface의 구성 함수가 링크되었음 ex3> interface1 <- interface2 = interface2 -> interface1과 동일
Naming Conventions 식별자 타입 네이밍 법칙 예시 Interface Component Files adc sendmsg Component Components는 명사로 이루어지고, 두단어로 이루어질 경우, 내부 단청의 첫 글자는 대문자이어야함 C가 붙은것은 Configuration, m이 붙는 것은 module를 의미 timerc timerm Files 파일이름은 확장자 .NC를 가지는 이름이어야 함 timerc.nc timerm.mc applications TINYOS코드의 테스트용 어플리케이션은 첫이름을 “TEST”로 함 TINYOS 하드웨어의 테스트용 어플리케이션은 첫이름은 “VERIFY”로 함 증명을 위한 어플리케이션은 첫 이름을 “DEMO”로 함 demotracking testtinyalloc verifymicahw
Naming Conventions 식별자 타입 네이밍 법칙 예시 Commands, Events and Tasks Commands Events그리고 Tasks의 이름은 동사로 이루어짐. 두 단어로 이루어질 경우, 내부단어의 첫 글자는 대문자, 천체 이름의 첫 글자는 소문자로 이루어짐 Command/Event 쌍의 형태는 “Done”이 나 “Complete”와 같은 명령어 형태의 접미어가 붙음 하드웨어를 직접 접근하는 Commands는 “TOSH_”라는 접두어를 가짐 sendMsg output outputComplete put putDone fired TOSH_SET_RED_LED_PIN(); Variables 변수는 명사로 이루어짐, 변수가 두 단어 이상으로 이루어질 경우, 내부 단어의 첫 글자는 대문자. 전체 이름의 첫글자는 소문자 bool state uint16_t lastConut uint16_t counter uint8_t noHeader Constants 상수는 모두 대문자. 범위를 정하는 내부 단어를 Underber(_)로 이어서 사용 TOS_UART_ADDR TOS_BCAST_ADDR
NesC Keyword Keyword 의 미 provides 의 미 provides 다른 component에게 제공하거나 다른 component간의 연결을 위한 Interface의미 uses Interface로 연결된 component 중 event를 실행하는 곳을 나타냄. 즉, component를 사용 하는 것을 의미 atomic Race Condition이 발생하지 않도록 사용. atomic으로 감싸여진 코드는 non-preemptive task 아규먼트를 가지지 않는 함수, 작업 대기 큐에 넣기 위한 함수를 만들기 위해 함수 앞에 붙여줌 post Task함수를 작업 대기큐에 저장하기 위해 사용 call 일반적인 함수호출 할 때 사용 async 비동기적으로 작동하며 하드웨어 인터럽트가 생기면 응답 as Interface에 붙여주는 일종의 별명, 또는 별칭을 만들어주기 위해 사용
Thank You! www.themegallery.com