nanoqplus for efm32 - energymicro seminar korea 20120823

27
EFM32 지원 센서노드용 초소형 운영체제 NanoQplus v2 김선태 ([email protected]) 2012. 8. 23 임베디드SW연구부 실시간 SW연구팀, ETRI

Upload: jongsoo-jeong

Post on 15-Jun-2015

1.793 views

Category:

Technology


4 download

DESCRIPTION

2012년 8월 23일 서울 역삼동 르네상스호텔에서 개최된 에너지마이크로 세미나에서 발표된 NanoQplus 자료

TRANSCRIPT

Page 1: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

EFM32 지원 센서노드용 초소형 운영체제

NanoQplus v2

김선태 ([email protected])

2012. 8. 23

임베디드SW연구부 실시간 SW연구팀, ETRI

Page 2: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

Contents

!  개요 !  주요 기능 !  활용 사례 !  NanoQplus for EFM32

2 [email protected]

Page 3: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

NanoQplus 개요

3 [email protected]

Page 4: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

NanoQplus v2

!  ETRI가 만든 센서노드용 초소형 운영체제 -  2006년 2월부로 v2를 scratch부터 새로 개발 -  Nano OS, NOS라고도 부름

!  2007년 10월 최초 공개버전 배포 -  ATmega128, MSP430F1611을 사용한 교육용 센서노드에서 사용 가능 -  Mesh 및 tree 기반 L2 라우팅 프로토콜 포함

!  2009년 자동차용 OS인 ROSEK 개발 및 국제 인증 (OSEK/VDX) !  2012년 8월 현재 v2.5.0

-  IPv6, 6LoWPAN, RPL, CoAP 등 지원

!  관련 웹사이트 -  https://sites.google.com/site/nanoqplusos/ -  http://nano-os.tistory.com/ -  http://www.facebook.com/NanoQplus

4 [email protected]

Page 5: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

지원하는 하드웨어

!  Microcontrollers -  8 Bit

•  ATmega128(L) •  8051 based MCUs (CC2430, MG2455)

-  16 Bit •  MSP430F1611 •  MSP430F5438 •  HCS12X (ROSEK 자동차용 OS)

-  32 Bit •  ARM Cortex-M0 (S3FN41F) •  ARM Cortex-M3 (EFM32GG)

!  Radio Transceivers -  2.4GHz

•  CC2420 (Texas Instruments) •  MG2410 (Radiopulse)

-  Sub-1GHz •  CC1120 (Texas Instruments) •  AT86RF212 (Atmel)

5 EFM32GG-STK3700 [email protected]

Page 6: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

NanoQplus 구조도

6

Sensors Sensors RF transceiver MCU MCU Radio transceiver MCU Sensors

[email protected]

Page 7: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

특징 및 장점

!  C와 멀티 쓰레드 커널을 특징으로 하는 개발 환경 -  낮은 learning curve: 친숙한 C 언어를 사용한 쉬운 프로그래밍 -  Task Queue, user timer, multi-thread 등을 이용해 복잡도 높은 응용도 손 쉽고 직관적으로 개발 가능

!  모듈화를 통한 프로그램 경량화 -  필요에 따라 모듈을 추가/제거 하여 바이너리 크기 최소화

!  에너지 절감을 위한 자율적 sleep 기능

-  사용자의 관여 없이 커널 레벨에서 알아서 sleep -  사용자 응용에 따라 최적화 되는 스마트 슬립

!  하드웨어 추상화 및 의존적/비의존적 코드 분리 -  새로운 플랫폼으로의 포팅이 용이 -  Code portability: 사용자는 NanoQplus에서 제공하는 API만으로 응용 작성

!  안정적인 네트워크 스택 -  L2 Routing: TENO (데이터 수집), RENO (양방향 통신) -  IETF 표준 프로토콜: 6LoWPAN, IPv6, RPL, CoAP 등

!  풍부한 튜토리얼 -  각각의 모듈의 기능을 테스트하고 사용법을 익힐 수 있음

7 [email protected]

Page 8: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

NanoQplus 주요 기능

8 [email protected]

Page 9: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

커널 주요 기능

!  Multi-Threads -  Preemptive RR 스케줄러 사용 (Supported time-slice values: 5ms, 10ms, 32ms) -  우선순위: 1(low), 2(normal), 3(high), 4(highest) -  쓰레드를 지원하여 이벤트 방식을 이용하는 운영체제에 비해 쉽고 직관적인 응용 작성 가능 -  다른 기능이 동작되는 동안에 병행적으로 작업이 진행될 필요가 있는 경우에 사용

!  User Timers -  일반적으로 응용에서 가장 많이 사용되는 기능 -  주기적 또는 일회성 작업

!  Task Queue -  지연하여 처리해야 할 작업에 적합 -  디바이스 드라이버 작성시 Top-bottom halves 형식으로 구현 가능

!  하이브리드 인터럽트 처리 기능 -  빠른 응답성의 HW 인터럽트 처리 방식과 안정적이고 다양한 기능을 지원하는 SW인터럽트 처리 병행 사용 -  SW 인터럽트의 user-defined 우선순위 설정 가능

!  스마트 슬립 기능 -  실행할 태스크가 없을 때 자동으로 슬립 모드로 전환 -  Wakeup 소스를 자동으로 확인하여 최적의 슬립 모드를 선택

9 [email protected]

Page 10: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

NanoQplus 네트워크 스택

!  IPv6 기반 인터넷 연동 기능 -  Internet of Things, M2M, 스마트 에너지 프로파일 2.0을 위한

IPv6 네트워크 구성에 사용

!  트리 네트워크 기반 멀티홉 라우팅 프로토콜 기능 -  다수의 노드로 부터 소수의 싱크 노드로 데이터를 수집하는

네트워크에 활용

!  메쉬 네트워크 기반 멀티홉 라우팅 프로토콜 기능 -  센서 노드간 양방향 통신에 유리하여 데이터 수집 목적 이외의 네트워크에 활용

!  1홉간 간단한 패킷 송수신 -  멀티홉 라우팅이 불필요한 간단한 응용은 MAC 레벨에서 프로그래밍 가능

10 [email protected]

Page 11: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

IPv6 네트워크 스택

11 [email protected]

!  상호운용성을 위한 IETF 표준 준수 -  TinyOS, Contiki OS와 상호호환

!  IEEE 802.15.4 지원 -  6LoWPAN 적응계층 필요 -  Neighbor Discovery도 링크계층 특성에

맞게 최적화

!  IPv6, ICMPv6, UDP -  IETF RFC-compliant implementations

!  RPL -  IPv6 Routing Protocol for Low-power and

Lossy Networks

!  CoAP -  Constrained Application Protocol -  HTTP-translatable REST protocol -  경량 임베디드 웹 서버 프로그래밍 지원 IEEE 802.15.4

6LoWPAN Adaptation Layer

IPv6

ICMPv6

ND RPL

UDP

Applications

CoAP

Page 12: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

RPL: IPv6 Routing Protocol for Low-power and Lossy Networks

!  개요 -  IEEE 802.15.4, PLC 등 저전력, 고손실 네트워크(LLNs; Low-power and Lossy Networks)를 위한 IPv6

라우팅 프로토콜 -  IETF ROLL (Routing Over LLNs) Working Group에서 표준화: RFC 6550

!  특징 -  기본적으로 데이터 수집을 위한 DODAG (Destination Oriented Directed Acyclic Graph) 형성 -  Data Path Validation: Data 패킷 내에 라우팅 정보를 삽입하여 loop 방지 -  노드의 자원을 고려한 downwards routing modes

12 [email protected]

종단간 패킷 수신률

�������

�������

�������

�������

������

�������

�������

��� ���

�������

����� ����� ����

�����&�����#&�"!���&�"�����

�"'&�!���$"&"�"�%�

시간대별 패킷 전송량

��

���

����

����

���

����

���

�� ��� ���� ���� ��� ����

��"���$�!% �%%�"!%��!�'!�&�"��

�� �!�

�� ��� �!��

������"!&$"�� �������&��������"!&$"�� �������&�������"!&$"�� ������&��

Page 13: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

CoAP: Constrained Application Protocol

!  개요 -  자원 제한적인 임베디드 장치용 웹 프로토콜 -  IETF CoRE(Constrained RESTful Environment) Working Group에서 표준화 진행 중

!  특징 -  HTTP와 호환 가능: 중간에서 손쉽게 변환 가능 -  센서노드 같은 임베디드 장치를 웹 서버로 동작하게 하여 기존 시스템과 웹 레벨의 호환성 제공

13 [email protected]

Internet� Constrained Network�

GET http://{Proxy address}/cgi/coap/

{CoAP URI path}/sensor/temperature�

GET coap://{CoAP URI path} /sensor/temperature�

HTTP/1.1 200 OK … 20 (�)

0x62450405… (2.05 … 20 (�)) HTTP Client HC Proxy CoAP Server

Page 14: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

SW 원격 업그레이드

!  무선 멀티 홉을 통해 원격에 위치한 센서노드 SW 업그레이드 -  센싱 데이터 전송 주기를 수정한 응용으로 업그레이드 -  센싱 데이터 종류를 수정한 응용으로 업그레이드

①  새로운 응용 작성 및 컴파일 ②  원격 업그레이드 SW를 통해 대상 노드 및 응용 이미지 선택

③  전송 및 확인

01011101

0110

1100

1110

0110

00110011

0110

센서: 온도 주기: 5s

센서: 온도 주기: 2s

Old New

센서: 온도 주기: 5s

센서: 습도 주기: 5s

Old New

[email protected] 14

Page 15: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

NanoQplus 활용 사례

15 [email protected]

Page 16: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

!  개요 -  실외 주자창의 사용현황을 센서를 통하여 실시간으로 확인하고, 입구에 위치한 전광판을 통해 주차 가능 대수 표현

-  운전자는 사전에 전광판을 확인하여 보다 쉽게 주차위치를 선택할 수 있음

대규모 실외 주차장 관리 시스템

[email protected] 16

Page 17: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

17

!  동적 라우팅이 가능한 무선 멀티홉 통신을 사용해 확장이 용이 !  효율적인 전력관리와 태양열 충전을 통한 반영구적인 시스템 !  추후 기능추가를 위해 무선 네트워크 SW 업그레이드 지원 !  개별단위 주차 유무 확인 및 LANE별 주차가능 대수 확인 가능

주차장 관리 시스템 특징

[email protected]

Page 18: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

!  ETRI 7연구동 실내에 200여개의 센서 노드 구축

-  80여개의 고정 센서 노드 설치 및 시험

-  120여개의 이동 센서 노드 시험

빌딩 모니터링 테스트베드

< 고정 센서 노드 설치 위치 >

< 고정 센서 노드 모니터링 SW> < 천장에 설치된 센서 노드>

[email protected] 18

Page 19: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

NanoQplus for EFM32

19 [email protected]

Page 20: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

EFM32 & NanoQplus

!  EFM32 특징 -  32비트 ARM Cortex-M3: 기존 센서 노드용 MCUs 대비 빠른 처리 -  LETIMER, LEUART, LESENSE 등 low-energy 기능 지원

!  NanoQplus 동작 전략 -  Sleep을 위해 LF oscillator로 동작 가능한 RTC를 SysTick으로 활용

•  기본 SysTick은 HF oscillator를 사용하므로 sleep 불가능

-  할 일이 있는 경우 빠른 클럭을 이용해 빠르게 처리 -  당장 할 일이 없지만 일정 시간 후에 할 일(sleeping threads, not expired user

timers)이 있는 경우, EM2 (deep sleep) 진입 -  외부 이벤트(GPIO)가 발생하기 전에 할 일이 전혀 없는 경우, EM3 (stop) 진입 -  일반 UART 수신 인터럽트 대기시 EM1 (sleep) 유지 -  Single thread 응용에서 delay가 필요한 경우에도 LETIMER 사용하여 EM2 (deep

sleep) 진입

20 [email protected]

Page 21: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

Scheduling in EFM32

!  Thread A

21 [email protected]

!  Thread B !  User Timer C void thread_a(void *) { led_on(0); thread_sleep_ms(200); led_off(0); thread_sleep_ms(500); led_on(0); thread_sleep_ms(300); led_off(0); }

void thread_b(void *) { thread_sleep_ms(300); led_on(1); thread_sleep_ms(200); led_off(1); thread_sleep_ms(500); led_on(1); thread_sleep_ms(300); led_off(1); }

void user_timer_c(void *) { led_on(0); led_on(1); delay_ms(100); led_off(0); led_off(1); }

Page 22: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

Scheduling in EFM32

!  Thread A

22 [email protected]

void thread_a(void *) { led_on(0); thread_sleep_ms(200); led_off(0); thread_sleep_ms(500); led_on(0); thread_sleep_ms(300); led_off(0); }

Page 23: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

Scheduling in EFM32

!  Thread B

23 [email protected]

void thread_b(void *) { thread_sleep_ms(300); led_on(1); thread_sleep_ms(200); led_off(1); thread_sleep_ms(500); led_on(1); thread_sleep_ms(300); led_off(1); }

Page 24: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

Scheduling in EFM32

!  User Timer C

24 [email protected]

void user_timer_c(void *) { led_on(0); led_on(1); delay_ms(100); led_off(0); led_off(1); }

Page 25: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

Scheduling in EFM32

!  Concurrent running

25 [email protected]

int main(void) { nos_init(); thread_create(thread_a, NULL, 0, PRIORITY_NORMAL); thread_create(thread_a, NULL, 0, PRIORITY_NORMAL); user_timer_create_sec(user_timer_c, NULL, 0, USER_TIMER_ONE_SHOT); sched_start(); }

EM2 EM3

Page 26: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

NanoQplus for EFM32

!  Conclusion -  태스크 스케줄러도 EFM32 특성에 맞게 에너지 절감형 동작 -  사용자는 언제 sleep 할지, 언제 wakeup 할지 걱정하지 않고 응용 프로그램 작성 가능

!  Future Works -  LESENSE 등 EFM32 제공 에너지 절감 기능을 사용자가 사용하기 편하도록 OS 레벨 추상화 계속

-  EFM32 기반 플랫폼 추가 지원: EFM32 Starter-Kits, Breakout boards -  EFR 출시시 바로 지원 예정

26 [email protected]

Page 27: NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823

https://sites.google.com/site/nanoqplusos

Thank you!

27 [email protected]