센서 투명성을 지원하는 센서노드 os

88
센센 센센센센 센센센센 센센센센 O S 2008. 3. 31. 센 센 센 , 센센센센센 센센센센 , 센센센센센

Upload: kali

Post on 25-Jan-2016

77 views

Category:

Documents


8 download

DESCRIPTION

센서 투명성을 지원하는 센서노드 OS. 2008. 3. 31. 은 성 배 , 한남대학교 ㈜옥타컴 , 부설연구소. 차 례. USN 응용 개발의 어려움 센서의 다양성 USN 응용 개발의 현황 센서 투명성 지원 기술현황 기존 센서노드 OS 의 한계 IEEE1451 의 한계 센서 디바이스 관리 시스템 센서 디바이스 추상화 응용 프로그램 API 센서 HAL 센서 디바이스 프로그래밍 디바이스 드라이버 개발 사례 응용 개발 사례 향후 연구 과제 플랫폼 구조 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 센서 투명성을 지원하는 센서노드  OS

센서 투명성을 지원하는 센서노드 OS

2008. 3. 31.

은 성 배 , 한남대학교㈜옥타컴 , 부설연구소

Page 2: 센서 투명성을 지원하는 센서노드  OS

Page 2

차 례1. USN 응용 개발의 어려움

- 센서의 다양성- USN 응용 개발의 현황

2. 센서 투명성 지원 기술현황- 기존 센서노드 OS 의 한계- IEEE1451 의 한계

3. 센서 디바이스 관리 시스템- 센서 디바이스 추상화- 응용 프로그램 API- 센서 HAL

4. 센서 디바이스 프로그래밍- 디바이스 드라이버 개발 사례- 응용 개발 사례

5. 향후 연구 과제- 플랫폼 구조- DD 원격 다운로딩- DD 분산 관리 시스템

Page 3: 센서 투명성을 지원하는 센서노드  OS

Page 3

1. USN 응용 개발의 어려움

Page 4: 센서 투명성을 지원하는 센서노드  OS

Page 4

USN 에는 센서가 없다 !!!

붕어빵에는 붕어가 없다 !!!

Page 5: 센서 투명성을 지원하는 센서노드  OS

Page 5

센서의 특징• USN 응용 개발

– USN 응용 개발 과정• 센서 선정이 첫번째 과정• MCU, RF, 전력부 등은 • 기 개발된 플랫폼을 사용• 센서부품들을 연결 , 조립 , 플랫폼과 연결• 그 위에서 응용 개발

– 센서의 다양성• 다종 : 온도 , 조도 , 습도 등• 운영환경 : 일반 대기온도 , 수온 , 매우 높은 온도 , 비접촉식

– 물리적 인터페이스의 다양성• ADC 연결 , 디지털 직접 입력 , 주파수 방식 ,

• 인터럽트 , 직렬 연결 , I2C, SPI 등

Page 6: 센서 투명성을 지원하는 센서노드  OS

Page 6

센서의 복잡성 [1]

• 센서의 다양성Mechanical Thermal Electrical Magnetic Radiant Chemical

Mechanical

(Fluid) Mechanical and Acoustic Effects :

eg, Diaphragm,

Friction Effects

(eg, Friction

Calorimeter)

Coolings Effects

Piezoeletricity

Peizoresistivity

Resistive, Capacitive,

and Inductive Effects

Magnetomechanical Effects : eg, Piezomagnetic

Effect

Photoelastic Systems

Interferometers

Doppler Effect

Thermal

Thermal Expansion

(Gas Thermometers, Resonant Frequency)

Radiometer Effect

Seebeck Effect

Thermoresistance

Pyroelectricity

Thermal (Johnsen) Noise

Thermooptical Effects

(eg, in Liquid Crystals)

Radiant Emission

Reaction Activation

eg, Thermal Dissociation

Electrical

Electrokinetic and Electromechanical Effects :

Joule (Resistive) Heating

Peltier Effect

Charge Collectors

Langmuir Probe

Biot-Savart’s Law Electrooptical Effects :

Electroluminescence

Electrolysis

Electromigration

Magnetic

Magnetomechanical Effects : eg, Magnetostriction

Magnetometer

Thermomagnetic Effects :

eg, Ettingshausen Effect

Thermomagnetic Effects : eg, Ettingshausen-Nernst Effect

Galvanomagnetic Effects :

eg, Hall Effects,

Magnetooptical Effects

: Faraday Effect

Radiant

Radiation Pressure Bolometer

Thermopile

Photoelectric Effects :

eg, Photovoltaic Effect

Photoconductive Effect

Phtorefractive Effects

Optical Bistability

Photosynthesis,

-dissociation

Chemical

Hygrometer

Electrodeposition Cell

Photoacoustic Effect

Calorimeter

Thermal Conductivity

Cell

Potentiometry, Conductimetry

Amperometry

Volta Effect

Gas Sensitive Field Effect

Nuclear Magnetic

Resonance

(Emission and Absorp-tion)

Spectroscopy

Chemiluminescence

Page 7: 센서 투명성을 지원하는 센서노드  OS

Page 7

센서의 복잡성 [2]

• 센서의 비선형성

Page 8: 센서 투명성을 지원하는 센서노드  OS

Page 8

센서의 복잡성 [3]

• 4-D 데이터 처리– 3 차원 위치 정보 + 시간 정보

• 예 1) 시간 축 : 서로 다른 시간대 센서 값 상이• 예 2) 공간 축 : 같은 시간이라도 장소에 따라 다른 값

– GIS 와의 연동• 기존 3 차원 GIS 의 수정 보완 등

Page 9: 센서 투명성을 지원하는 센서노드  OS

Page 9

센서 노드 구현시 문제점• 센서노드와 센서의 분리

– 대부분의 환경 모니터링 응용– 센서노드는 환경과 분리

• 방수 , 방진 등– 센서는 환경속에서 동작되어야 함

• 수질 센서 , 대기 센서 등 .

• 동작전압의 차이– 동작 전압이 낮을 수록 저전력에 유리– MCU 는 3~2.7V 동작– 센서는 3V, 5V, 9V, 12V 로 매우 다양

• 센서 수명이 짧음– 환경속에서 동작한다는 특성상– 노드 수명보다 센서 수명이 짧음– 주기적으로 교체 가능해야 함

Page 10: 센서 투명성을 지원하는 센서노드  OS

Page 10

USN 응용 개발의 현황 [1]

• 현재의 응용 개발 모습– USN 솔루션업체가 고군분투

• 응용 개발도 어렵고• 규모의 경제 실현도 어려움

S/W 개발

H/W 조립

Sensor 0

Sensor n MCU k

MCU 0

RF l

RF 0

…… …자체 F/W

개발Tiny OS

활용Nano-Q+

활용

응용개발요구 솔루션개발

Page 11: 센서 투명성을 지원하는 센서노드  OS

Page 11

USN 응용 개발의 현황 [2]

• 사례 1– 특정 ( 예 : 가속도 ) 센싱 데이터를 802.15.4 로 중앙에

전송하는 응용 => Tiny-OS /ATmega128 플랫폼 기준– HW: 가속도 센서를 위한 HW 모듈 개발 및 연결

• 플랫폼의 빈 포트 확인 및 센서 연결

– SW: 타이머 관련 OS 라이브러리 사용 주기적으로 센싱하여 통신 라이브러리 로 중앙에 전송

• 포트 초기화 및 설정• 특정 주기로 타이머 인터럽트 설정• 그 포트 값을 읽을 때 적절한 시간 지연 설정• 통신라이브러리를 활용 전송• 슬립 시 , 포트 전원 off 및 OS 의 슬립 라이브러리 호출

=> 센서 +ATmega128+Tiny-OS 모두를 잘 알아야 함 .

Page 12: 센서 투명성을 지원하는 센서노드  OS

Page 12

USN 응용 개발의 현황 [3]

• 사례 2– 모 SI 업체가 수질관련 센서노드 개발 요구– 매우 간단한 작업이었으나– 1 주일 개발 , 500 만원=> USN 응용 확산에 걸림돌

Page 13: 센서 투명성을 지원하는 센서노드  OS

Page 13

센서노드 플랫폼 기반 응용 개발 [1]

• 센서노드 플랫폼 기반 응용 개발– 3 주체가 자신의 역할에 최선을 다함– 응용 개발이 용이해짐 – 규모의 경제 실현하여 저가격 실현– USN 개발 활성화에 기여

센서 응용

표준화된 API 기반

B

B저가격 / 고성능SN 플랫폼

Sensor 및디바이스 드라이버

플랫폼 공급자 센서 디바이스 공급자

응용 개발자

Page 14: 센서 투명성을 지원하는 센서노드  OS

Page 14

센서노드 플랫폼 기반 응용 개발 [2]

• 플랫폼 공급자– MCU + OS + 전원 + 센서인터페이스– 다양한 시장 요구를 수용 => 최적화된 플랫폼 제공

• 예 ) 저전력소모형 플랫폼 : MSP430 + cc2420

• 적절한 전원 및 센서인터페이스 제공• ADC + 전압 인터페이스 , ADC + 미세전압 인터페이스 등

– Uniform 한 OS 인터페이스 제공

• 센서모듈 개발자– 센서 + 디바이스 드라이버

• 응용 개발자– 센서 사용자 매뉴얼 + 센서노드 플랫폼을 활용– Linux 위에서 응용 개발하듯이 프로그램 작성

Page 15: 센서 투명성을 지원하는 센서노드  OS

Page 15

2. 센서 투명성 지원 기술현황

Page 16: 센서 투명성을 지원하는 센서노드  OS

Page 16

센서 노드 OS[1]• 개념적인 구조도

– 센서 HW를 Encapsulation해야 함– API가 센서 접근을 추상화해야 함– 센서 다양성 => 기존 OS 지원 없음

MCU RF PowerSensor

InterfaceSensor

USN 응용

Application Programming Interface(API)

ThreadMgmt.

MemoryMgmt.

TimeMgmt.

Device Driver

InterfaceDevice Driver

Applica

tion

O.S.

H.W.

Hardware Abstraction Layer(HAL)

센서

노드

플랫

Page 17: 센서 투명성을 지원하는 센서노드  OS

Page 17

센서 노드 OS[2]• 기존 운영체제의 한계

– Tiny-OS• 이벤트 기반 멀티태스킹• NesC 프로그램밍 언어• 센서의 다양성과 복잡성을 고려한 특징 없음

– SOS• 다중 모듈 동적 로딩• 디바이스 드라이버 관리 기술 없음

– MANTIS• 레이어 기반 운영체제• 하드웨어를 추상화시키는

디바이스 특징• 디바이스 순서 고정된 단점

– Nano-Q+• 저전력 슬립모드• 멀티 스레드 간의 스택 공유• 멀티 스레드 스케줄러 방식• 센서 디바이스 추상화 지원하지 않음

MCU RF PowerSensor

Interface

Sensor HW 및

드라이버직접 제작

USN 응용

Application Programming Interface(API)

ThreadMgmt.

MemoryMgmt.

TimeMgmt.

Device Driver

Interface

Ap

plica

tion

O.S.

H.W.

Hardware Abstraction Layer(HAL)

Page 18: 센서 투명성을 지원하는 센서노드  OS

Page 18

센서 노드 OS[3]

• Hardware 단계– 기존의 센서노드 제품들– 예 ) Tiny-OS, Nano-Q+ 등– 센서노드와 센서의 분리가 보장되지 않음– 센서 전원의 다양성이 지원되지 않음– 결과 , 기존 센서노드 플랫폼은

• 프로토타입 수준의 결과만을 지원• 별도의 hardware 을 개발해야 함• 케이싱도 별도로 개발해야 함

=> 이들을 모두 고려한 hardware 플랫폼이 요구됨

Page 19: 센서 투명성을 지원하는 센서노드  OS

Page 19

센서 노드 OS[4]• Hardware Abstraction Layer

– Nano-Q+ HAL 의 경우• 100 개 이상의 함수 존재• 각각의 센서 / 구동기마다 • 별도의 초기화 및 구동 함수 보유

– TinyOS• 마찬가지

– 센서 인터페이스에 대한 HW 추상화 부재

=> 센서 관련 HW 추상화를 통한 HAL 제공

Page 20: 센서 투명성을 지원하는 센서노드  OS

Page 20

센서 노드 OS[5]

• 센서 드라이버 관리체계– Nano-Q+ 나 Tiny-OS 나

• 센서 디바이스 드라이버를 동적으로 연결 , 구성하는 기능 없음

• 센서 드라이버만 변경할 수 없고• 응용 + OS + 센서 드라이버를 함께 컴파일 , 로딩

– 기존 OS 들은 드라이버 관리 체계 없음

=> 센서 드라이버 관리 체계 요구됨

Page 21: 센서 투명성을 지원하는 센서노드  OS

Page 21

센서 노드 OS[6]• 응용 API layer

– Nano-Q+• 일원화된 디바이스 관리 API 없음• 각 트랜스듀서에 별도의 API 존재

– Tiny-OS, Ants, uCOS• 마찬가지

– 리눅스나 윈도우• 일원화된 디바이스 관리 API 지원• 예 ) open(), close(), read(), write(), ioctl() 등

일원화된 디바이스 관리 API 필요

Page 22: 센서 투명성을 지원하는 센서노드  OS

Page 22

IEEE1451[1]

• 센서의 투명성 지원을 위한 표준 모델 제시• a hardware-independent abstraction layer

– for the sensor interface and

– defines how the model is mapped

– through a network abstraction layer to the control network.

• a standardized software interface – for connecting NCAP to TIM

– NCAP: Network Capable Application Processor

– TIM: Transducer Interface Module

• 개 요

Page 23: 센서 투명성을 지원하는 센서노드  OS

Page 23

IEEE1451[2]

Page 24: 센서 투명성을 지원하는 센서노드  OS

Page 24

IEEE1451[3]

Page 25: 센서 투명성을 지원하는 센서노드  OS

Page 25

IEEE1451[4]

Page 26: 센서 투명성을 지원하는 센서노드  OS

Page 26

Transducer Electronic Data Sheet[1]

Page 27: 센서 투명성을 지원하는 센서노드  OS

Page 27

Transducer Electronic Data Sheet[2]

Page 28: 센서 투명성을 지원하는 센서노드  OS

Page 28

Transducer Electronic Data Sheet[3]

Page 29: 센서 투명성을 지원하는 센서노드  OS

Page 29

1451 표준의 문제점• 1451표준의 USN 적용

– 1451 TIM 은 자체가 센서노드임

– 예를 들어 1451.5 TIM• ZigBee 센서노드와 동일• 별도의 전원을 사용• 어떻게 쉽게 구현할 것인지는 의문

• 1451 의 목표가 너무 광범위– ZigBee 의 Coordinator => NC

AP

– ZigBee 의 센서노드 => TIM

시장에 적용되기 어려움 우리의 목표에도 맞지 않음

우리의 관심분야

Page 30: 센서 투명성을 지원하는 센서노드  OS

Page 30

3. 센서 디바이스 관리 시스템– 전체 구조– 센서 디바이스 추상화– 센서 접근 통합 API

– 센서 디바이스 메니저– 센서 HAL

Page 31: 센서 투명성을 지원하는 센서노드  OS

Page 31

전체 구조 [1]

• 3 개발 주체

센서 응용

표준화된 API 기반

B

B

저가격 / 고성능SN 플랫폼

Sensor 및디바이스 드라이버

플랫폼 공급자 센서 디바이스 공급자

응용 개발자

Page 32: 센서 투명성을 지원하는 센서노드  OS

Page 32

전체 구조 [2]

응용 0

응용 n

open( )

close( )

read( )

write( )

ioctl( )

reserved( )

API

dev 0dev 1

dev 2

Sensor Device Manager

open_dev0_drv

close_dev0_drv

read_dev0_drv( ){ hal_adcv_getdata(fd)}

Sensor Device Driver

hal_adcv_getdata(fd)

HAL

H/W

3VGND

port 0

온도 센서

응용개발자 센서공급자

플랫폼 공급자

Page 33: 센서 투명성을 지원하는 센서노드  OS

Page 33

전체 구조 [3]

• 센서 접근 API: 응용 개발자 사용– open(), close(), read(), write(), ioctl() 등– 센서노드 플랫폼에 센서를 연결하고– 센서노드 OS 에 디바이스 드라이버를 삽입

• 센서 디바이스 드라이버 : 센서 공급자 제공– HAL 및 OS 제공 라이브러리를 이용 드라이버 제작

• 센서 HAL: 플랫폼 공급자 제공– 센서 HW 의 다양성을 추상화– 드라이버 작성 시에 HAL 을 활용

• 센서 디바이스 메니저 : 플랫폼 공급자 제공– API 와 디바이스 드라이버를 연결– HAL 의 하드웨어 사상을 지원

• 센서노드 플랫폼 : 플랫폼 공급자 제공– 센서 HAL + 센서 디바이스 메니저

Page 34: 센서 투명성을 지원하는 센서노드  OS

Page 34

전체 구조 [4]• 센서노드 플랫폼

– 응용개발자 와 센서공급자에게 투명성 제공– 센서 추상화 : API 를 기반으로 응용개발자에게 제공– 센서 인터페이스 추상화 : 센서 Mgmt., 센서 HAL, 센서 HW

인터페이스 기반으로 센서제공자에게 제공

MCU RF Power 센서 HW

USN 응용

Application Programming Interface(API)

ThreadMgmt.

MemoryMgmt.

TimeMgmt.

센서 Device Driver

Hardware Abstraction Layer(HAL)

센서 인터페이스 추상화

센서 추상화

센서 HAL

센서 HW인터페이스

센서 Mgmt.

Page 35: 센서 투명성을 지원하는 센서노드  OS

Page 35

전체 구조 [5]

• 센서 추상화– 센서가 변경돼도 응용은 무관– 예 ) 온도 센서 응용 프로그램

• LM61 이 LM35 로 변경됐을 때 => LM35 의 디바이스 드라이버를 삽입 , 응용 변경 없음

• 센서 인터페이스 추상화– 플랫폼이 변경돼도 디바이스 드라이버는 무관– 예 ) 온도 센서 응용 프로그램

• 플랫폼이 ATmega128 에서 MSP430 으로 변경 => OS 만 변경 , 디바이스 드라이버 변경 없음

Page 36: 센서 투명성을 지원하는 센서노드  OS

Page 36

센서 HW 인터페이스 추상화 [1]센서의 종류 Part Name 사용전압 소모전류

Ready Sensing 인터페이스 MCU제조회사

Time Time 회로여부 인터페이스1 Temperature-1 LM35 4V ~ 30V 133uA     0 ADC National Semiconductor

2 Temperature-2 LM61 2.7V ~ 10V 125uA     0 ADC National Semiconductor

3 Temperature-3 LM92 2.7V ~ 5.5V 625uA   300ms 0 I2C National Semiconductor

4 Humidity HS1101 5V ~ 10V 1nA     1 Frequency Humirel5 Temp & Hum SHT11 2.4V ~ 5.5V 550uA 210ms   0 I2C Sensirion6 Accelerometer-1 ADXL103 5V 700uA 20ms   0 ADC Analog Devices

7 Accelerometer-2 ADXL202E 3V ~ 5.25V 600uA 2ms   0 ADC Analog Devices

8 Accelerometer-3 LIS3L02DQ 2.7V ~ 3.6V 1.5mA 6ms 4ms 0 I2C/SPI ST

9 Gas(CH4) NAP-55A 2.6V 180mA 8s   1 ADC n.e.t10 Microphone WM-62B 2V ~ 10V 0.5mA     3 Frequency Panasonic

11 Dust PS02C-PWM 5V ± 10% 90mA   30s 0 Frequency NIDS

12 O2 A-01/T 0V     5s 2 ADC IT

13 Barometer MS5534B 2.2V ~ 3.6V 1mA   35ms 2 SPI Intersema14 Smoke NIS-05A 9V ~ 24V       3 ADC NEMOTO

15 Magnetic HMC1002 5V ~ 12V       3 ADC Honeywell

16 Photodiode GUVB-S11GD 3V 1mA     0 ADC Genicom

17 Infrared EL-7L 4V 60mA     2 Interrupt Kodenshi Corp18 Light-1 UV-Index Sensor EryF 3V 1mA     1 ADC sglux19 Light-2 TSL2561 2.7V ~ 3.6V 0.6mA   400ms 0 I2C TAOS

20 Ultrasonic-1 MA40B8(T&R) 9V       3 Interrupt muRata21 Ultrasonic-2 255-400S(T&R)12 9V       3 Interrupt Kobitone22 Photoelectric MANUAL AC 240V 50mA   20ms 0 Interrupt Autonics23 Photodiode BS520 1V ~ 10V 0.65uA     0 ADC Sharp

24 H2S 3E 100 S 0V 200nA     2 ADC Sensoric25 CO2-1 OEM Module - 6004 5V 135mA 2 ~ 10min   0 ADC Telaire26 CO2-2 CO2 Engine - LO 4.5V ~ 12V 40mA 30s 2s 1 ADC SenseAir27 CO MICS-5131 3.2V ~ 5V 32mA     1 ADC MICS

28 Motion TMS100 5V 60mA 6us     ADC Teltron

Page 37: 센서 투명성을 지원하는 센서노드  OS

Page 37

센서 HW 인터페이스 추상화 [2]

• 온도 센서 (LM61) 프로그래밍 분석– HW: MCU + 전원 스위치 (3V) + LM61

• PA0 포트 : 전원을 제어하는 일반 포트• PF0 포트 : ADC 입력을 받는 포트

– SW: 센서 처리 및 응용 관련1. ADC 포트 설정 : 채널 타입 및 프리스케일러 등 설정2. ADC 가 complete될 때까지 loop

3. X = ADC 값을 읽는다4. 실제 온도값으로 변환 : 온도 = (100 * X) /1024[C]

5. 통신 라이브러리를 이용 전송

MCU(ATmega128)

PA0

PF0(ADC0)

온도센서(LM61)

전원스위치

센서노드플랫폼

Page 38: 센서 투명성을 지원하는 센서노드  OS

Page 38

센서 HW 인터페이스 추상화 [3]

• 센서 독립적인 부분 : 플랫폼에서 지원– HW: MCU + ADC 포트 제어 + 전원 제어– SW 의 경우

• ADC 포트 설정 : 채널 타입 및 프리스케일러 등 설정• ADC 가 complete될 때까지 loop

• X = ADC 값을 읽는다• 통신 라이브러리를 이용 전송

• 센서 종속적인 부분 : 센서 드라이버에서 지원– HW: 센서 및 센서 부속 회로– SW 의 경우

• 실제 온도값으로 변환 : 온도 = (100 * X) /1024[C]

Page 39: 센서 투명성을 지원하는 센서노드  OS

Page 39

센서 HW 인터페이스 추상화 [4]

• 센서 인터페이스 => 플랫폼 처리 방법– ADC 전압 => ADC 포트 직접 연결– ADC 미약전압 => 증폭 후 ADC 포트 연결– ADC 전류 => 저항 연결 후 ADC 포트 연결– ADC 미약전류 => 증폭 , 저항 연결 후 ADC 포트 연결– 주파수 입력 => 폴링 포트 연결– 인터럽트 => 인터럽트 포트 연결– SPI => SPI 포트 연결– I2C => I2C 포트 연결– 직렬 => 직렬 포트 연결

• 센서종속 회로– 센서 제작자가 구현

Page 40: 센서 투명성을 지원하는 센서노드  OS

Page 40

센서 HW 인터페이스 추상화 [5]

• 사용전원– V0: 잔원 공급 없음– V1: 2.7~3.3V– V2: 4.5~5.5V, – V3: 7V– V4: 9V – V5: 12V– V6: 24V

• 센서노드 플랫폼 구성– 예 ) ADCV/V1 2 개 + INTR/V1 1 개 + 직렬 /V2 1 개 – 시장의 요구에 따라 적절한 플랫폼 개발 및 상품화– 사용자는 off-the-shelf 방식으로 구매– 세계 시장에 진출 => 규모의 경제 실현

Page 41: 센서 투명성을 지원하는 센서노드  OS

Page 41

센서 HW 인터페이스 추상화 [6]

• 센서 HW 인터페이스의 wire 수– 인터페이스의 HW 포트 지정– 4 가지 형태의 인터페이스들– 1 wire interfaces

• adcv, adcwv, adca, adcwa, freq

– 2 wire interfaces• i2c

– 3 wire interfaces• serial

– 4 wire interfaces • spi

Page 42: 센서 투명성을 지원하는 센서노드  OS

Page 42

센서 HW 인터페이스 추상화 [7]

• 센서 디바이스 HW 추상화– 탈부착이 가능한 소켓 형식의 인터페이스– 인터페이스 9 종– 구동기도 포함하여 추상화

• 추상화 사례– 이름 : ADCV/V1– attribute: 16 비트 integer– functions:

• port-adcv-init()’• port-adcv-getdata();• port-adcv-setdata();• port-adcv-onoff();

– constraints:• 10 비트 ADC 지원• 입력전압 0V ~2.56V 지원

Page 43: 센서 투명성을 지원하는 센서노드  OS

Page 43

센서 HW 인터페이스 추상화 [8]

• 인터페이스 naming– 센서노드 플랫폼 구성

• 예 ) ADCV/V1 2 개 + INT/V1 1 개 + 직렬 /V2 1 개

– 플랫폼에 인터페이스 이름 표시• adcv_v1_0 vs. int0

• adcv_v2_1 vs. int1

• int_v1_0 vs. int2

• serial_v2_0 vs. int3

– HAL 접근 시 이름 활용

Page 44: 센서 투명성을 지원하는 센서노드  OS

Page 44

센서 접근 통합 API[1]• 응용프로그래머에게 센서의 추상화 제공

– 3 가지 추상화 제공– 센서 , 이벤트 센서 , 구동기

• 센서– open 시에 전원 on 및 초기화– read 시에 센싱 데이터 입력– close 시에 전원 off– ioctl 을 이용 파라미터 변경 가능– write 사용 불가

• 이벤트 센서– open 및 close, ioctl 은 센서 와 동일– read 및 write 사용 불가– ioctl 을 사용 이벤트 발생 시 처리 함수 등록

• 구동기– open, close, ioctl 은 센서와 동일– read 사용 불가– write 시 , 적절한 값을 구동기에 보낸다 .– 값의 의미는 구동기에 따라 다름

Page 45: 센서 투명성을 지원하는 센서노드  OS

Page 45

센서 접근 통합 API[2]

• I/O 서브 시스템– 센서 I/O 서브시스템에 API 셋을 정의한다– 디바이스 드라이버에서 정의된 API 셋의 함수 구현– 디바이스 드라이버는 센서 I/O 서브시스템에 응용에 필요한 함수만 등록– 센서 I/O 서브시스템은 API 셋과 각 디바이스 관련 센서 I/O 함수를 연동

응용프로그램

Open()

Close()

Read()

Write()

Iotcl()

디바이스

driver_Open()

driver_Close()

driver_Read()

driver_Write()

driver_Iotcl()

I/O 서브시스템

UNIFORM_IO_DRV

디바이스 드라이버

실제 디바이스 구현

Page 46: 센서 투명성을 지원하는 센서노드  OS

Page 46

센서 접근 통합 API[3]

• 응용 개발자가 할일– 센서 구입 => DD 확보 ( 센서공급자 제공 )– 플랫폼 구입 => 센서 장착– 응용 프로그램 작성

• 디바이스 드라이버 삽입 및 센서 장착 인터페이스 지정• 초기화 때 device_connect() 시스템 콜 호출• 이후 open(), close(), read(), write() 등 활용

센서노드 플랫폼

adcv_v1_0

adcv_v1_1

adcv_v2_2

seri_v2_0

온도 센서조도 센서가속도 센서

온도센서 DD

조도센서 DD

가속도센서 DD

Page 47: 센서 투명성을 지원하는 센서노드  OS

Page 47

센서 접근 통합 API[4]

• 응용 프로그램 작성– 예 ) 온도 센서 , 센서 – fd = open(“Temp_Sensor”, SENSOR);

• 리턴된 fd 값으로 디바이스 접근• Linux 와 비슷한 방식

– close(fd); nbytes = read(fd, &buf, bytes);

• 센서 디바이스 연결 정의– 예 ) 온도 센서 , LM61

– 디바이스 드라이버 입수 : lm61_drv_pt

device_connect(“Temp_Sensor”, “adcv_v1_1”, lm61_drv_pt);

Page 48: 센서 투명성을 지원하는 센서노드  OS

Page 48

센서 Device Driver[1]

• 센서공급자가 작성– 적절한 드라이버만 작성

• 센서 : open(), close(), read(), ioctl()

• 이벤트센서 : open(), close(), ioctl()

• 구동기 : open(), close(), write(), ioctl()

• 나머지는 NULL 로 등록됨

typedef struct {

INT8U (*Open)(void);

void (*Close)(void);

INT8U (*Read)(void* pdata, INT8U size);

INT8U (*Write)(void* pdata, INT8U size);

INT8U (*Ioctl)(void* pdata, INT8U size);

} UNIFORM_IO_DRV;

Page 49: 센서 투명성을 지원하는 센서노드  OS

Page 49

센서 Device Driver[2]

• 온도 센서 응용 예INT8U fd, n; INT16U buf;device_connect(“Temp_Sensor”, “adcv_v1_1”, lm61_drv_pt);fd = open(“Temp_Sensor”, SENSOR);n = read(fd, &buf, sizeof(buf));close(fd);

• 디바이스 메니저는– device_connect() 에서 인터페이스와 드라이버를 Temp

_Sensor 에 지정– 결과는 Transducer Device Table(TDT) 에 저장– open() 에서 “ Temp_Sensor”, SENSOR 등 TDT 에 저장– 그 후 , lm61_open() 드라이버 함수 호출– close(), read(), ioctl() 등도 마찬가지로 처리

Page 50: 센서 투명성을 지원하는 센서노드  OS

Page 50

센서 Device Driver[3]• 디바이스 드라이버 (Temp-Sensor) 사례

extern INT8 fd; // fd 는 OS 가 제공함INT8U Temp_Sensor_Open(void)

{ hal_adcv_init(fd);

      hal_adcv_onoff(fd, ON);      PutString(“Temp Sensor Open\r\n");        return fd; }void Temp_Sensor_Close(void) {         hal_adcv_onoff (fd, OFF);        PutString(“Temp Sensor Close\r\n");         return 0; }

INT16U Temp_Sensor_Read(Read_Data *pData, INT8U size) {         INT16U t, temp;         t = hal_adcv_getdata(fd);         temp = (100 * t)/1024; // 10 비트 값을 온도로 변환         memcpy(pData, &temp, size);

return size;}

Page 51: 센서 투명성을 지원하는 센서노드  OS

Page 51

센서 디바이스 메니저 [1]• 센서노드 플랫폼의 OS 중

– Transducer Device Table• 센서 디바이스를 정의• DD 를 지정

– HW mapping table• 센서 인터페이스의 HW 특성을 정의• 예 ) adcv_v1_0 의 포트가 무엇인지 정의

– 전원관리 : PA0 포트– adc 포트 : PF0 포트

• OS 초기화 때 테이블 설정• device_connect() 호출 시 연결

– 인터럽트 처리부 지원• 이벤트 센서를 위한 인터럽트 처리 지원• 공통 ISR 이 기본적인 처리 수행• 사용자가 등록한 이벤트 처리 루틴을 저장• 인터럽트 발생시 호출

Page 52: 센서 투명성을 지원하는 센서노드  OS

Page 52

센서 디바이스 메니저 [2]

DRV_Func_Pt

HW_map_pt

Driver Function List

Transducer Device Table

1 Motion-Event0

0 Temp-Sensor1

2 Relay-Actu2

ADCV

INTR

ACTR

Type Device NamefdDevice Type

V10

V20

V00

dev_name dport0 dport1 dport2 dport3pport

HW Mapping Table

adcv_v1_0 PF0 - - -FA0

intr_v2_0 PD0 - - -PA1

actr_v0_0 PA3 - - --

HAL Device Connectdevice_connect(“Motion-Event”,

“intr_v2_0”, TE100_drv_pt)device_connect(“Temp-Sensor”,

“adcv_v1_0”, lm64_drv_pt)device_connect(“Relay-Acto”, “actr_v0_0”,

relay_drv_pt)

Application Program

fd = open(“Temp-sensor”,SENSOR);

fd = open(“Motion-Event”,EVENT);

fd = open(“Relay-Actu”,ACTUATOR);

Page 53: 센서 투명성을 지원하는 센서노드  OS

Page 53

센서 디바이스 메니저 [3]

• 디바이스 드라이버 함수들– 구입한 센서제작자로부터 디바이스 드라이버 함수 입수– 모든 디바이스마다 5 개의 함수 리스트를 구성– device_connect() 함수에서 드라이버 및 인터페이스 연결– TDT 에 저장됨

typedef struct {

INT8U (*Open)(void);

void (*Close)(void);

INT8U (*Read)(void* pdata, INT8U size);

INT8U (*Write)(void* pdata, INT8U size);

INT8U (*Ioctl)(void* pdata, INT8U size);

} UNIFORM_IO_DRV;

Page 54: 센서 투명성을 지원하는 센서노드  OS

Page 54

센서 디바이스 메니저 [4]

• ATmega128 포트 및 디바이스 연결– PF 포트 : ADC

– PA 포트 : 전원 제어– PD 포트 : 인터럽트

Page 55: 센서 투명성을 지원하는 센서노드  OS

Page 55

센서 디바이스 메니저 [5]

• HW mapping table– 인터페이스의 HW 포트 지정– 4 가지 형태의 인터페이스들– 1 wire interfaces

• adcv, adcwv, adca, adcwa, freq: int dport, int pport

– 2 wire interfaces• i2c: dport0, dport1, pport

– 3 wire interfaces• serial: dport0, dport1, dport2, pport

– 4 wire interfaces • spi: dport0, dport1, dport2, dport3, pport

Page 56: 센서 투명성을 지원하는 센서노드  OS

Page 56

센서 디바이스 메니저 [6]• HW mapping table 의 설정

– 센서노드 플랫폼 제작자가 HW 구현된데로– OS 초기화 때 설정

• HW mapping table 의 연결– 응용프로그래머가 응용 초기화 때– device_connect() 를 이용 , 연결

dev_name dport0 dport1 dport2 dport3pport

HW Mapping Table

adcv_v1_0 PF0 - - -FA0

intr_v2_0 PD0 - - -PA1

actr_v0_0 PA3 - - --

Page 57: 센서 투명성을 지원하는 센서노드  OS

Page 57

센서 디바이스 메니저 [7]

• 인터럽트 처리– UNIX 와 비슷한 방식으로 처리– HW 포트 인터럽트 처리 루틴은 공통의 ISR 보유– 공통 ISR 에서는 기본적인 처리 수행후– 응용 ISR 이 등록된 배열에서 해당 루틴을 호출– 처리가 끝나면 인터럽트 후처리 후 종료

user_ISR() {

}

user_ISR_Table

p_isr0 p_isr1 p_isr7• • •

common_ISR() {

p=get_intr_port()

…..

call_user_ISR(p);

}

인터럽트 발생

Page 58: 센서 투명성을 지원하는 센서노드  OS

Page 58

센서 디바이스 메니저 [8]

• 공통 ISR 의 역할– 인터럽트 서비스 공통 기능 수행

• 전체 인터럽트 disable

• 포트의 인터럽트 off

• 사용자 지정 인터럽트 루틴 호출• 포트의 인터럽트 on

• 전체 인터럽트 enable

common_ISR() {asm(“cli”); // disable global interruptip = get_inetrrupt_port() // 인터럽트 걸린 포트 번호 확인interrupt_off(ip); // 포트의 인터럽트 offcall_user_ISR(ip); // 사용자 지정 ISR 호출interrupt_on(ip); // 포트의 인터럽트 onasm(“sei”); // enable global interrupt

}

Page 59: 센서 투명성을 지원하는 센서노드  OS

Page 59

센서 HAL[1]

• 센서 인터페이스 추상화의 HAL 라이브러리화• 2 가지 구현 전략이 가능

– A 식 : dev0, dev1, dev2, …. 식으로 HAL 을 구현– B 식 : adcv, adca, intr, … 식으로 구현

• A 식– HAL 라이브러리의 수는 적다– 각 함수마다 내부에서 선택해야 할 내용이 많다– 그 결과 , 단점 : 각 라이브러리 함수의 크기가 크다 – 장점 : 사용자는 선택할 것이 없으므로 단순하다

• B 식– HAL 라이브러리의 수가 많다– 각 함수의 내부는 단순하다 .– 그 결과 , 장점 : 각 라이브러리 함수의 크기가 작다 – 단점 : 사용자는 여러 라이브러리 중 선택해야 하므로 복잡하다

Page 60: 센서 투명성을 지원하는 센서노드  OS

Page 60

센서 HAL[2]

• B 식을 선택– 플랫폼의 메모리 크기가 작으므로– 각 라이브러리의 크기가 작은 B 식을 선택

• 사용자가 선택할 때 어려운 문제는– 개발 도구에서 센서인터페이스 추상화를 선택하고– 디바이스를 선택 , 둘을 연결하면 – 자동으로 HAL 라이브러리 들이 선정되도록 지원

Page 61: 센서 투명성을 지원하는 센서노드  OS

Page 61

센서 HAL[3]

• 센서 HW 인터페이스 함수 리스트– 다음의 6 개 함수를 지원

hal_interface_init(fd) {  /* 인터페이스 초기화 */ }

hal_interface_onoff(fd) { /* 인터페이스 전원 on /off*/ }

hal_interface_getdata(fd) {  /* 데이터 get */ }

hal_interface_setdata(fd) {  /* 데이터 set */ }

hal_interface_getstatus(fd) { /* 상태데이터 get */ }

hal_interface_setstatus(fd) { /* 상태데이터 set */ )

Page 62: 센서 투명성을 지원하는 센서노드  OS

Page 62

센서 HAL[4]

• 센서 인터페이스 추상화 종류1. ADCV: ADC 일반전압 , 1 선 , ADC 포트 연결2. ADCWV: ADC 미약전압 , 1 선 , 증폭 후 ADC 포트 연결3. ADCA: ADC 일반전류 , 1 선 , 저항 연결 후 ADC 포트 연결4. ADCWA: ADC 미약전류 , 1 선 , 증폭 후 저항 연결 ADC 포트

연결5. FREQ: 주파수 , 1 선 , 인터럽트 or 일반 포트에 연결6. INTR: 인터럽트 방식 , 1 선 , 인터럽트 포트 연결7. I2C: 클럭과 데이터 , 2 선 , 일반 포트에 연결 또는 하드웨어 I2C

8. SPI: 클럭 , DI, DO, EN, 4 선 , 일반 포트 연결 또는 하드웨어 SPI에 연결

9. SERI: RS232, RS485 등 , 3 선 또는 2 선 , 하드웨어 직렬 있어야 함 .

Page 63: 센서 투명성을 지원하는 센서노드  OS

Page 63

센서 HAL[5]

• HAL 에서 HW 사상– HAL 은 디바이스 드라이버가 사용– HAL 은 HW 의 추상화를 제공하므로 실제 HW 와 사상

필요– 예 ) adcv_v1 인터페이스 ( 아래 그림 )

• ADC 포트 번호 : PA0

• 전원 스위치 포트 번호 : PF0

– HW mapping table 이 요구됨

MCU(ATmega128)

PA0

PF0(ADC0)

온도센서(LM61)

전원스위치

센서노드플랫폼

Page 64: 센서 투명성을 지원하는 센서노드  OS

Page 64

센서 HAL[6]

• HAL 라이브러리 (ADCV/V1)hal_adcv_init(int fd) {

pmap = get_HW_map(fd); // TDT 의 HW 포트 정보 검색init_port(pmap.dport, NORMAL VOLTAGE); // normal voltage 형태로 ADC 초기화

}hal_adcv_onoff(int fd, int ON) {

pmap = get_HW_map(fd); // TDT 의 HW 포트 정보 검색switch(ON) {case 1: port_set(pmap.pport, 1); break; /* power switch 가 pmap 에 연결돼 있으며 on */case 0: port_set(pmap.pport, 0); break; /* power switch 가 pmapt 에 연결돼 있으며 off */default: return(ERROR_UNDEFINED_PARAM);return(0);

}hal_adcv_getdata(int fd) {

pmap = get_HW_map(fd); // TDT 의 HW 포트 정보 검색select_channel(pmap.dport);while((ADCSRA & 0x10) != 0x10); // wait till ADC conversion completed

adc_low_data = ADCL; // read ADC low halfadc_high_data = ADCH; // read ADC high halfreturn(adc_low_data);

}hal_adcv_getstatus(int fd) {

pmap = get_HW_map(fd); // TDT 의 HW 포트 정보 검색select_channel(pmap.dport);return(ADCSRA); //return ADC status

}

Page 65: 센서 투명성을 지원하는 센서노드  OS

Page 65

4. 센서 디바이스 프로그래밍

Page 66: 센서 투명성을 지원하는 센서노드  OS

Page 66

응용 개발 사례 [1]

• 스마트 선풍기– 온도 센서 : ADCV/V1-0

– 모션 감지 센서 : INT/V2 - 0

– 릴레이 : ACTP/V0 - 0

– 동작• 온도 센서가 특정 값 이상이고 동작이 있으면 릴레이 ON

• 온도 센서가 특정 값 이하이면 릴레이 OFF

• 동작이 특정 시간 감지되지 않으면 릴레이 OFF

Sensor Node

T R

TemperatureSensor

MotionDetectionSensor

On-Off Relay

Electric Fan

Page 67: 센서 투명성을 지원하는 센서노드  OS

Page 67

응용 개발 사례 [2]

• 플랫폼 HW– ADCV/V1, INT/V2, ACTR/V0

ADCV/V1

GND3VADC 전압

INTR/V2

GND5VINT

LM61( 온도 센서 )

TMS100( 모션 센서 )

ACTR/V0

DC relay0/1 포트

ATmega128

ADC 포트 I

INT 포트 I

일반포트 O

전원 모듈

GND

3V

5V

플랫폼 HW

스위치 3V 5V

Page 68: 센서 투명성을 지원하는 센서노드  OS

Page 68

응용 개발 사례 [3]

• HAL 라이브러리 (ADCV/V1)hal_adcv_init(int fd) {

pmap = get_HW_map(fd); // TDT 의 HW 포트 정보 검색init_port(pmap.dport, NORMAL VOLTAGE); // normal voltage 형태로 ADC 초기화

}hal_adcv_onoff(int fd, int ON) {

pmap = get_HW_map(fd); // TDT 의 HW 포트 정보 검색switch(ON) {case 1: port_set(pmap.pport, 1); break; /* power switch 가 pmap 에 연결돼 있으며 on */case 0: port_set(pmap.pport, 0); break; /* power switch 가 pmapt 에 연결돼 있으며 off */default: return(ERROR_UNDEFINED_PARAM);return(0);

}hal_adcv_getdata(int fd) {

pmap = get_HW_map(fd); // TDT 의 HW 포트 정보 검색select_channel(pmap.dport);while((ADCSRA & 0x10) != 0x10); // wait till ADC conversion completed

adc_low_data = ADCL; // read ADC low halfadc_high_data = ADCH; // read ADC high halfreturn(adc_low_data);

}hal_adcv_getstatus(int fd) {

pmap = get_HW_map(fd); // TDT 의 HW 포트 정보 검색select_channel(pmap.dport);return(ADCSRA); //return ADC status

}

Page 69: 센서 투명성을 지원하는 센서노드  OS

Page 69

응용 개발 사례 [4]

• HAL 라이브러리 (INTR/V2)hal_intr_init(int fd) {

pmap = get_HW_map(fd); // TDT 의 HW 포트 정보 검색init_port(pmap.dport, INTERRUPT); // interrupt 형태로 ADC 초기화

}

hal_intr_on_off(int fd, int ON) {pmap = get_HW_map(fd); // TDT 의 HW 포트 정보 검색switch(ON) {case 1: port_set(pmap.pport, 1); break; // power switch 가 pport 에 연결돼 있으며 on case 0: port_set(pmap.pport, 0); break; // power switch 가 pport 에 연결돼 있으며 off default: return(ERROR_UNDEFINED_PARAM);return(0);

}

hal_intr_getstatus(int fd) {pmap = get_HW_map(fd); // TDT 의 HW 포트 정보 검색return(PORT_STATUS(pmap.dport)); //return PORT status

}

Page 70: 센서 투명성을 지원하는 센서노드  OS

Page 70

응용 개발 사례 [5]

• HAL 라이브러리 (ACTR/V0)hal_actr_init(int fd) {

pmap = get_HW_map(fd); // TDT 에 HW 포트 정보 연결init_port(pmap.dport, OUTPUT); // OUTPUT 형태로 포트 초기화

}

hal_actr_setdata(int fd, int * data, int size) {pmap = get_HW_map(fd); // TDT 에 HW 포트 정보 연결switch(*data) {

case 0: relay_off(pmap.dport); break; // OUTPUT 포트 off case 1: relay_on(pmap.dport); break; // OUTPUT 포트 on default: return(ERROR_UNDEFINED_DATA);

}return(0);

}

hal_actr_getstatus(int fd) {pmap = get_HW_map(fd); // TDT 에 HW 포트 정보 연결return(CURRENT_PORT_VALUE(pmap.dport)); //return OUTPUT status

}

Page 71: 센서 투명성을 지원하는 센서노드  OS

Page 71

응용 개발 사례 [6]• 디바이스 드라이버 (Temp-Sensor)

extern INT8 fd; // fd 는 OS 가 제공함INT8U Temp_Sensor_Open(void)

{ hal_adcv_init(fd);

      hal_adcv_onoff(fd, ON);      PutString(“Temp Sensor Open\r\n");        return fd; }void Temp_Sensor_Close(void) {         hal_adcv_onoff (fd, OFF);        PutString(“Temp Sensor Close\r\n");         return 0; }

INT16U Temp_Sensor_Read(Read_Data *pData, INT8U size) {         INT16U t, temp;         t = hal_adcv_getdata(fd);         temp = (100 * t)/1024; // 10 비트 값을 온도로 변환         memcpy(pData, &temp, size);

return size;}

Page 72: 센서 투명성을 지원하는 센서노드  OS

Page 72

응용 개발 사례 [7]• 디바이스 드라이버 (Motion Sensor)

extern INT8 fd; // fd 는 OS 가 주는 값INT8U Motion_Sensor_Open()

{ hal_intr_init(fd);

      hal_intr_onoff(fd, ON);     PutString(“Motion Sensor Open\r\n");        return fd; }void Motion_Sensor_Close() {         hal_intr_onoff (fd, OFF);        PutString(“Motion Sensor Close\r\n");         return 0; }void Motion_Sensor_ioctl(int command, (void *)handler()) {        switch(command) {

case ISR_REGISTER: register_handler(fd, handler); break; } return 0;

}

Page 73: 센서 투명성을 지원하는 센서노드  OS

Page 73

응용 개발 사례 [8]• 디바이스 드라이버 (DC-Realy)

extern INT8 fd;

INT8U DC_relay_Open() {

hal_actr_init(fd);      PutString(“Temp Sensor Open\r\n");        return fd; }void DC_relay_Close() {         PutString("Light Sensor Close\r\n");         return 0; }

INT16U DC_relay_write(write_Data *pData, INT8U size) {         INT8U r;         r = hal_actr_setdata(fd, pData, size);         return(r); }

Page 74: 센서 투명성을 지원하는 센서노드  OS

Page 74

응용 개발 사례 [9]

• 사용자 프로그램 int fd1, fd2, fd3;

int MOTION = FALSE;

smart_electric_fan() {

int temp;

/* hal device connect */

device_connect(“Motion_Event”, “adcv_v1_0”, lm64_drv);

device_connect(“Temp_Sensor”, “intr_v2_0”, te100_drv)

device_connect(“Relay_Actu”, “actr_v1_0”, relay_drv);

/* open transducer */

fd1 = open(“Temp_Sensor”, SENSOR);

fd2 = open(“Motion_Event”, EVENT);

fd3 = open(“Relay_Actu”, ACTUATOR);

/* interrupt handler is registered */

ioctl(fd2, motion_handler);

/* infinite loop and do something */

infinite_loop _and_do_something();

}

mtion_handler() {

MOTION = TRUE;

}

infinite_loop _and_do_something() {

int temp;

while(LOOP) {

read(fd1, &temp, sizeof(temp));

if(temp >= HLIMIT && MOTION)

write(fd3, ON, 1); // fan ON

if(temp < LLIMIT || MOTION == FLASE)

write(fd3, OFF, 1);

sleep(SLEEP_PERIOD);

MOTION = FLASE;

}

}

Page 75: 센서 투명성을 지원하는 센서노드  OS

Page 75

5. 향후 연구 과제– Nano-Q+ 기반 OS 기능 고도화– 센서 투명성 지원 개발환경– 센서노드 플랫폼 구조– 센서 Plug&Play– 센서 드라이버 분산 관리 시스템– 국내 및 국제 표준화– IEEE1451 TEDS 의 활용 ?

Page 76: 센서 투명성을 지원하는 센서노드  OS

Page 76

Nano-Q+ 기반 OS 기능 고도화

Page 77: 센서 투명성을 지원하는 센서노드  OS

Page 77

센서투명성 지원 개발환경

Page 78: 센서 투명성을 지원하는 센서노드  OS

Page 78

센서노드 플랫폼 구조 [1]

• 응용프로그래머에게 하드웨어 투명성 제공– 응용프로그램 API

– 센서 디바이스 메니저

• 센서 개발자에게 OS 와의 연결점 제공– 센서 HW 인터페이스– 센서 HAL

– OS 프리미티브– 이를 활용 디바이스 드라이버 작성

Page 79: 센서 투명성을 지원하는 센서노드  OS

Page 79

센서노드 플랫폼 구조 [2]

• 다중 전원 설계– 기본 배터리 (3V) 에서 원하는 전압 승압하여 활용– 절전을 위하여 전원 스위치 포함

Page 80: 센서 투명성을 지원하는 센서노드  OS

Page 80

센서노드 플랫폼 구조 [3]

• 시장의 요구에 최적인 플랫폼 제공– 저전력 소모 중심

• MSP430 + cc2420 + 센서 Interface

– 저가형 플랫폼• Jennic 1칩 + 센서 Interface

– 고급형 플랫폼 등• Jennic 1칩 + 별도의 ADC + 센서 Interface

• 다양한 센서 인터페이스 수용 용이– 단일 HW 로 사용자 요구에 맞춰– Jumper 를 꽂거나 하여 플랫폼 구성

Page 81: 센서 투명성을 지원하는 센서노드  OS

Page 81

기존 Device 의 관리

• 센서노드에 일반적으로 부착되는 디바이스 관리– 예 ) 직렬 포트 , LED 등– 예 ) 문자 디바이스로 추상화– 센서 디바이스 관리페 편입– 예 ) 직렬

• 터미널 연결을 위한 직렬 포트• 센서를 위한 직렬 포트• 이들을 통합관리할 필요 있음• c.f.) Linux 의 Major, Minor 넘버 등

• RF 통신부 포함하여 추상화

Page 82: 센서 투명성을 지원하는 센서노드  OS

Page 82

센서 Plug&Play[1]

• 센서 드라이버를 자동으로 검색– unique 한 센서 이름 존재– 인터넷을 통하여 자동으로 드라이버 검색– 다운로딩하여 사용

• 장점– 응용프로그래머가 드라이버를 몰라도 됨– 센서 버젼업 시 드라이버만 다운로딩 가능

• 문제점– 센서 이름을 어떻게 지정하느냐 ?

– 다운로딩한 후 Linking 을 어떻게 하느냐 ?

Page 83: 센서 투명성을 지원하는 센서노드  OS

Page 83

센서 Plug&Play[2]

Page 84: 센서 투명성을 지원하는 센서노드  OS

Page 84

센서 드라이버 분산 관리 시스템 [1]

Page 85: 센서 투명성을 지원하는 센서노드  OS

Page 85

• 센서 디바이스 드라이버 검색 프로토콜– 요구 센서 드라이버 지정 방법

• 예 ) XML 문서 형식

– 레지스트리에서 센서 드라이버 검색 기법

• 디렉토리 서비스 프로토콜– 센서 디바이스 드라이버를 보유하고 있는 서버의 주소

저장– 드라이버 검색 실패시 접근– 새로운 디바이스 드라이버가 등록될 때 갱신 프로토콜

• 새로운 드라이버 등록 프로토콜– 센서 제작자가 드라이버를 등록하는 절차

센서 드라이버 분산 관리 시스템 [2]

Page 86: 센서 투명성을 지원하는 센서노드  OS

Page 86

국내 및 국제 표준화• 표준화 대상

– 통합 API• 센서 디바이스에 독립적인 API 정의• Nano-Q+ 기반으로 구성

– 센서 HAL• 센서 인터페이스 정의• 디바이스 드라이버 접근 HAL 정의

– 센서 Plug&Play• world wide unique 한 센서 이름• 디바이스 드라이버 접근 방식의 표준화

• 표준화 전략– Nano-Q+ 기반으로 기술 개발 완료– 상용제품 개발 및 홍보 병행– 국내 표준으로 등록 : 2009년– 국제 표준화 추진 : 2010년– Tiny-OS 를 극복하고 국제 표준 획득

Page 87: 센서 투명성을 지원하는 센서노드  OS

Page 87

IEEE1451 TEDS 의 활용 ?

• TEDS– 센서 정보를 얻을 수 있음– 어떻게 활용할 수 있을 지 ???

Page 88: 센서 투명성을 지원하는 센서노드  OS

Page 88

질의 및 응답 !!!!!