130 likes | 378 Views
NesC, an Introduction. For TinyOS Programming. Shinheon Kim 20090707. Content. NesC 특징과 장점 Component Configuration / Module Provides / Uses Interface Command / Event Summary. TinyOS Compile. 컴파일 과정 Cygwin 에서 make 명령어 사용 NesC 로 구성된 application 을 NesC compile → app.c 가 생성됨
E N D
NesC, an Introduction For TinyOS Programming Shinheon Kim 20090707
Content • NesC 특징과 장점 • Component • Configuration / Module • Provides / Uses • Interface • Command / Event • Summary
TinyOS Compile • 컴파일 과정 • Cygwin에서 make 명령어 사용 • NesC로 구성된 application을 NesC compile → app.c가 생성됨 • 이를 C compiler(avr, msp, …)로 컴파일하→ object file(exe, hex, …)가 생성됨. • Serial port를 경로로 하여 Ponyplog 프로그램으로 hex파일 포팅
nesC [nes-si:] • Network Embedded System C Language • Support TinyOS • Make applications for Network Embedded system • No Dynamic memory allocation • Extension of C programming language • Efficient code for micro-controllers • Able to interact with old C code • Many C Programmer • C is little helpful for safe code & structuring applications
nesC 의 장점 • component 사용하여 쉽게 애플리케이션 소프트웨어를 만들어 낼 수 있음 • 컴파일 시 하드웨어 동작 시에 발생할 수 있는 에러를 체크
Component • 조립에 쓰이는 일종의 부품이라는 개념 • interface 키워드를 사용하여 연결 • “*.nc” 파일의 형태로 존재 • module과 configuration 으로 구분 SingleTimer StdControl Main Timer UART StdControl StdControl BlinkM ByteComm LedsC Leds
Configuration • xxx.nc/oooC.nc • 여러 모듈을 서로 연결하여 그룹화 • 외부 component가 사용할 수 있도록 해당 인터페이스를 제공
Module • xxxM.nc • 실제 실행되는 코드인함수가 존재하는 파일 • 여러 개의 함수를 지원 • 인터페이스를 통해 구현
Main.nc App--.nc (Wiring) Interface-1.nc Interface-1.nc Interface-1.nc Component-2M.nc (Code) Component-1.nc (Wiring) Interface-1.nc Interface-2.nc Interface-2.nc Component-3M.nc (Code) Provides / Uses Provides 제공할 커맨드 함수를 정하여 다른 모듈에서 호출하여 사용할 수 있음 Uses 다른 모듈에서 제공하는 커맨드 함수를 호출하여 사용할 수 있음 event 함수를 구현해야 함
Interface • Interface는 Component가 가지고 있는 특성, 각별한 능력 같은 것을 간단히 정리해 놓은 곳. • 무슨 일을 하는지 Proto type을 간단히 정리해 놓은 곳 • Command or event로 구성 • Components간에 내부적으로 연결할 구조물을 제공한다. • 한 Component는 여러 가지 Interface를 사용할 수 있다. • 한 Interface를 여러 곳에서 사용할 수 있다. • Tiny OS는 많은 Interface를 지원한다.
Command / Event • Commands (“call down”) • Should be non-blocking • Return type이 필요하다. → postpone time consuming work by posting a task. • Command로 정의된 함수는 현 Component의 Module 부분에서 구현된 함수. • 현 Component를 사용하는 상위 Component에서 ‘Call’ 명령을 통해 호출된다. • Events (“call up”) • Commands를 호출할 수 있고, 다른 event신호를 보낼 수 있고, tasks를 post할 수 있다. • 하지만 commands에 의해 signal될 수 없다. • Task를 먼저 점유할 수 있다. (우선순위) • 현 Component를 사용하는 상위 Component에 구현되어야 하는 함수. • 현 Component가 어떤 정보를 상위 Component에게 전달할 때 사용된다.
Summary 주요 키워드 Component Configuration Module Provides Uses Interface Command Event Task Post
Summary NesC는 Component를 사용하여 쉽게 소프트웨어를 만들 수 있음 컴포넌트는 여러 컴포넌트를 그룹화하고 인터페이스들을 서로 wiring하는 configuration과 해당 인터페이스를 실제 구현하는 Module 로 나눔 Interface 파일은 Command / Event를 정의하고 있으며,Command 는 인터페이스를 제공하는 컴포넌트에 구현되고,Event 는 인터페이스를 사용하는 컴포넌트에 구현되어야 함 provides 키워드로 인터페이스를 제공하고 다른 쪽 컴포넌트에서는 uses 키워드를 사용하여해당 인터페이스에 정의된 커맨드와 이벤트를 사용함