Download presentation
Presentation is loading. Please wait.
1
Tiny OS & NesC , NesC Part2.
2
Contents 1 NesC 구성 2 네이밍 법칙
3
Hot Tip NesC Network Embedded System C C에 비해 편리함
원하는 Component만 연결해 주면 원하는 프로그램 작성 매우 작음 No Dynamic Memory
4
Hot Tip Component Application
하나 이상의 컴포넌트로 구성되어 컴포넌트 사이에 와이어로 연결된 실행 가능한 프로그램 Component Wire, Interface를 이용하여 다른 Component를 연결된 형태와 동작을 기술하며, Component의 수행, 메시지 수신 시 처리사항 등을 기술한 항목 NesC를 구성하는 기본 블럭 Module Configuration
5
Configuration Module 컴포넌트의 연결을 나타냄 하나의 새로운 Component를 정의
Interface의 동작을 기술 이벤트 핸들러 작성 새로운 Component의 동작 및 다른 Component들과의 연동을 실제로 구현
6
Comp3 Comp1: module Comp4 Comp2: Application configuration
7
Interface Component를 연결하는 포트의 역할을 수행 제공자와 사용자 형태로 컴포넌트에서 선언
(TinyOS-1.X) Command와 Event타입의 함수로 정의 Command Event
8
interface identifier{
command result_t function_name prototype event result_t function_name prototype } interface가 제공하는 함수 이름 component 이름
9
Command 현 컴포넌트의 module 부분에 구현된 함수로서, 현 컴포넌트를 사용하는 상위 컴포넌트에서 ‘signal’명령을 통해 호출 Event 현 컴포넌트를 사용하는 상위 컴포넌트에 구현되어야 하는 함수로서, 특정 인터럽트나 조건이 만족되었을 경우, 현 컴포넌트가 어떤 정보를 상위 컴포넌트에게 전달할 때 사용
10
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
11
Wiring component사이의 연결 종류 -> , <- , -
ex1> interface1 = interface2 2개의 인터페이스가 같음을 의미 ex2> interface1 -> interface2 interface의 구성 함수가 링크되었음 ex3> interface1 <- interface2 = interface2 -> interface1과 동일
12
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
13
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
14
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에 붙여주는 일종의 별명, 또는 별칭을 만들어주기 위해 사용
15
Thank You!
Similar presentations