4. 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
stkim10@etri.re.kr
5. 지원하는 하드웨어
! 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
stkim10@etri.re.kr
7. 특징 및 장점
! 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
stkim10@etri.re.kr
9. 커널 주요 기능
! 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
stkim10@etri.re.kr
10. NanoQplus 네트워크 스택
! IPv6 기반 인터넷 연동 기능
- Internet of Things, M2M, 스마트 에너지 프로파일 2.0을 위한
IPv6 네트워크 구성에 사용
! 트리 네트워크 기반 멀티홉 라우팅 프로토콜 기능
- 다수의 노드로 부터 소수의 싱크 노드로 데이터를 수집하는
네트워크에 활용
! 메쉬 네트워크 기반 멀티홉 라우팅 프로토콜 기능
- 센서 노드간 양방향 통신에 유리하여 데이터 수집 목적
이외의 네트워크에 활용
! 1홉간 간단한 패킷 송수신
- 멀티홉 라우팅이 불필요한 간단한 응용은 MAC 레벨에서
프로그래밍 가능
10
stkim10@etri.re.kr
11. IPv6 네트워크 스택
! 상호운용성을 위한 IETF 표준 준수
- TinyOS, Contiki OS와 상호호환
Applications
! IEEE 802.15.4 지원
- 6LoWPAN 적응계층 필요
CoAP ND RPL - Neighbor Discovery도 링크계층 특성에
맞게 최적화
UDP ICMPv6
! IPv6, ICMPv6, UDP
- IETF RFC-compliant implementations
IPv6
! RPL
- IPv6 Routing Protocol for Low-power and
Lossy Networks
6LoWPAN Adaptation Layer
! CoAP
- Constrained Application Protocol
- HTTP-translatable REST protocol
IEEE 802.15.4 - 경량 임베디드 웹 서버 프로그래밍 지원
11
stkim10@etri.re.kr
12. 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
stkim10@etri.re.kr
13. CoAP: Constrained Application
Protocol
! 개요
- 자원 제한적인 임베디드 장치용 웹 프로토콜
- IETF CoRE(Constrained RESTful Environment) Working Group에서 표준화 진행 중
! 특징
- HTTP와 호환 가능: 중간에서 손쉽게 변환 가능
- 센서노드 같은 임베디드 장치를 웹 서버로 동작하게 하여 기존 시스템과 웹 레
벨의 호환성 제공
GET GET
http://{Proxy address}/cgi/coap/ coap://{CoAP URI path}
{CoAP URI path}/sensor/temperature /sensor/temperature
Internet Constrained Network
HTTP/1.1 200 OK … 0x62450405… CoAP Server
HTTP Client 20 ( ) HC Proxy (2.05 … 20 ( ))
13
stkim10@etri.re.kr
14. SW 원격 업그레이드
! 무선 멀티 홉을 통해 원격에 위치한 센서노드 SW 업그레이드
- 센싱 데이터 전송 주기를 수정한 응용으로 업그레이드
- 센싱 데이터 종류를 수정한 응용으로 업그레이드
Old New
1110
센서: 온도 센서: 온도
1100 주기: 5s 주기: 2s
0110
1101
0101
0110
① 새로운 응용 작성 및 컴파일
② 원격 업그레이드 SW를 통해 0011
0011
Old New
대상 노드 및 응용 이미지 선택 센서: 온도 센서: 습도
0110
③ 전송 및 확인 주기: 5s 주기: 5s
14
stkim10@etri.re.kr
16. 대규모 실외 주차장 관리 시스템
! 개요
- 실외 주자창의 사용현황을 센서를 통하여 실시간으로 확인하고,
입구에 위치한 전광판을 통해 주차 가능 대수 표현
- 운전자는 사전에 전광판을 확인하여 보다 쉽게 주차위치를 선택할
수 있음
16
stkim10@etri.re.kr
17. 주차장 관리 시스템 특징
! 동적 라우팅이 가능한 무선 멀티홉 통신을 사용해 확장이 용이
! 효율적인 전력관리와 태양열 충전을 통한 반영구적인 시스템
! 추후 기능추가를 위해 무선 네트워크 SW 업그레이드 지원
! 개별단위 주차 유무 확인 및 LANE별 주차가능 대수 확인 가능
stkim10@etri.re.kr
17
18. 빌딩 모니터링 테스트베드
! ETRI 7연구동 실내에 200여
개의 센서 노드 구축
- 80여개의 고정 센서 노드 설치 및
시험
- 120여개의 이동 센서 노드 시험
< 고정 센서 노드 설치 위치 >
< 고정 센서 노드 모니터링 SW>
< 천장에 설치된 센서 노드>
18
stkim10@etri.re.kr
20. 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
stkim10@etri.re.kr
26. NanoQplus for EFM32
! Conclusion
- 태스크 스케줄러도 EFM32 특성에 맞게 에너지 절감형 동작
- 사용자는 언제 sleep 할지, 언제 wakeup 할지 걱정하지 않고 응용
프로그램 작성 가능
! Future Works
- LESENSE 등 EFM32 제공 에너지 절감 기능을 사용자가 사용하기
편하도록 OS 레벨 추상화 계속
- EFM32 기반 플랫폼 추가 지원: EFM32 Starter-Kits, Breakout boards
- EFR 출시시 바로 지원 예정
26
stkim10@etri.re.kr