5/09/2021

IoT 의 이해와 IoT OS 비교

1. IoT(Internet of Thing) 의 이해 및 MCU/MPU 비교   

이전에는 IoT에 사용되어지는 Chip에 대해서 크게 관심을 가지고 있지 않았는데, 최근들어 IoT기반의 MPU/MCU를 사용을 해보고 
관련 RTOS도 사용해보니, 이 기능들이 AP기반의 Linux/Android 만큼 복잡성을 가지지는 않지만, 점점 복잡해지고 다양해지고 있는 것 같다.

마치 2000년 초반의 임베디드 시스템을 다시보는 것 같은데, 다른 점이 있다면, 그 때와 다르게, 각 Chip 업체 or Cloud 업체 중심으로 각각의 솔루션들을 제공해주고 있다. 

  • IoT(Internet of Thing) 용어 및 구조 
IoT를 보면 Connection 즉, Internet과 연결이 유선/무선으로 되어지며, 각 센서중심의 데이타를 선처리를 하여, 각 Cloud / Server 통신하여 제어되는 구조이다.

  • Edge Computing 
보통 Cloud 기반으로 돌아가는 추세이며, Edge 즉 IoT 수준의 MPU에서 선처리기능을 한 후 세부 처리는 Cloud에서 처리하는 방식이다.

  • IoT에서 많이 사용되어지는 MCU/MPU
보통 MCU는 Mircocontroller 이며, 주로 8bit/16bit 단순 기능 Micom 말했는데, MPU라는 용어가 나오면서 IoT에서 많이 사용되어진다.
특히 ARM은 Coretex-M 기반으로 저전력 DeepSleep 가능하며, 다양한 Peripheral 지원하는 좋은 MPU들이 출시되어지며, MCU 성능의 기능이 아니다.
크게 보면, ARM 과 ARM이 아닌 것으로 MPU들은 나뉘어지며, 보통 ARM 계열이 성능이 좋은 것으로 보이며 사용하기도 쉽다. 

MCU(MicroController Unit)

MPU(MicroProcessor Unit)

MCU vs MPU

  • WIFI 지원되는 MCU/MPU
요즘 MCU/MPU가 혼용되어사용되어지므로, 구지 크게 구분을 할 필요까지는 없을 것 같으며, WIFI가 지원되는 MCU들을 알아보자.

ESP32의 경우 Tensilica기반의 Core사용하며, 이는 Cadence에서 만들었음   


2. IoT 의 OS 비교 

IoT에서 많이 사용되어지는 OS는 다음 3개로 보이는 것 같으며, OS 없이도 구현이 가능하므로, OS 사용여부는 개발의 복잡성에 따라 달라질 것 같다. 
  1. Zephyr : 최근부터 뜨기 시작한 OS
  2. FreeRTOS: 오래전 부터 제공한 RTOS이지만, 많은 Library들이 부족함 
  3. Mbed: ARM에서 제공하는 OS로, 다양한 Library와 개발에서 많이 사용되어지는 것으로 보임 

2.1 Mbed OS

  • 기본소개 
Cortex-M ARM기반의 MCU/MPU기반으로 무료로 제공해주는 Open OS 뿐만아니라, IDE인 Studio도 제공을 해주고 있다. 
Mbed는 RTOS로 RTX와 RTOS API를 포함하고 있다고 하는데, RTX가 포함이 되어야 RTOS로 동작이 가능하다고 한다.

  • 장점
ARM기반의 MPU/MCU에 제공되어지기 때문에, 안정적인 OS를 사용가능하며, TLS와 같은 보안라이브러리도 무료로 제공해주고 있다. 

  • 단점
ARM이외 Core , RISK-V , Tensilica 등은 지원불가능 
RTX기능을 사용하지 않으면, RTOS기능을 사용못하는 것으로 보임 

RTX의 기능 

Mbed OS bare metal profile
RTX를 포함하고 있지않아서 RTOS가 아니라고 하며, 일반 OS라고 함 

라이센스는 Apache 2.0로 무료로 사용가능하며, ARM기반이라면 사용하기 편한 것으로 보인다.

Mbed OS 관련정보 


Mbed OS 6 전체구조


Mbed OS v6.0 Bare Metal 지원사항확인 

Mbed OS v6.0 Quick Guide

Mbed Source 

Coding Style (Code Convention)

Mbed CLI How to Install


2.2 FreeRTOS

  • 기본소개 
MCU/MPU기반으로 가장 많이 알려진 RTOS로 ARM이외에 다양한 Core들을 지원하고 있으다. 다만, 기능이 OS만 지원하다보니, 
실제사용시에는 각 Chip Vendor에서 별도로 제공해주지 않는 이상은 각 Library들이 많이 부족함을 느끼고 있다. 
물론 ESP32의 경우 FreeRTOS를 모든 것을 잘 제공해주고 있으며 안정적으로 잘 동작한다. 
하지만, 현재 AWS 기반으로 제공해주는 AWS FreeRTOS 와 ESP32 FreeRTOS는 조금 다르다. 
둘 다 OS이외에 부족한 Library들을 Mbed or OpenSource로 이를 보완하고 있지만, 
기본적으로 AWS FreeRTOS의 경우 동작이 좀 불안한 것 같다. 
최근에 AWS FreeRTOS 기반으로 프로젝트를 했는데, 메모리 Heap 관련문제가 꽤 있었는데, 점차 나아지리라고 생각되어진다.  

  • 장점
다양한 CPU 아키텍쳐를 지원가능하며, 여러 IDE에서 무료로 제공해주고 있어 많이 사용되어지고 있다. 
그리고 부족한 부분들은 현재 각 Chip Vendor 혹은 AWS에서 각 부분들을 채우고 보완하고 있다.

  • 단점
실제 RTOS로 사용해보면, 기존의 RTOS 사용해본사람도 사용하기가 쉽지 않으며, API도 좀 복잡하다. 
사실 복잡하기보다는 개인적으로 API가 별로 마음에 들지가 않는다. 
어쩔수 없이 사용하는 사람이 적응해야하는 법이지만, 항상 Vxwork나 다른 RTOS와 비교를 하게되어지는데, 개인적으로 API 별로다. 

  • FreeRTOS 공식 사이트와 소스 


  • AWS FreeRTOS 문서와 소스


2.3 Zephyr RTOS

  • 기본소개
현재 NXP기반으로 많이 사용되어지는 IoT OS로 가장 큰 장점의 Linux와 유사성이며 ARM이외의 Core 지원 될것이다. 
OS 개발이 Linux Foundation이어서 그런지 Device Tree도 지원되며, Linux 와 유사성이 많이 보이는 것으로 보인다. 
아직 사용해보지 못해서 뭐라고 말하지는 못하겠지만, 왠지 이 중심으로 갈 것 같기도 하다.

  • 장점
현재 사용해보지 못했지만, 사이트와 Manual만 보는 것만으로도, 앞으로 가장편하게 사용하게될 OS가 될 것 같으며, 다양한 기능들을 제공해줄 것 같다.
또한 FreeRTOS처럼 다양한 Core를 지원해주고 있어, 앞으로 대세가 이것으로 되지 않을까하고 생각한다.

  • 단점
아직 사용해보지 못해서 잘모르겠으나, FreeRTOS처럼 내부 버그가 많을 것으로 생각되어진다. 왜냐하면 예전의 Linux 초기가 많이 생각이 나서 그런부분은 사용자가 많이 고쳐가며 구현해야 할 것같다. 


Zephyr Project 공식사이트 와 Source 

NXP의 Zephyr 관련사이트 

Zephyr Project 

ESP32 Zephyr 

댓글 없음 :