티스토리 뷰

IOT OS Platform/Wiced

WICED SDK의 구성

aqwerf 2016.08.30 10:09

IOT 기기의 SSL/TLS 메모리 제한”에서도 언급한 바와 같이 RTOS를 사용하는 IOT 기기 중 WiFi를 이용 가능한 솔루션은 WICED가 현재로서는 최선의 솔루션 인 것 같다. 물론 Arduino WiFi Shield나 ESP8266과 같이 TCP/IP, network protcol을 포함한 제품을 사용하는 것도 가능하지만, 자유롭게 protocol을 변경하지 못한다는 것은 둘째치고, 가격면에서도 WICED에서 경쟁력이 떨어질 수 밖에 없다. 


WICED는 현재 릴리즈되어 있는 버전 SDK 3.7.0 기준으로 주요한 기능을 정리해 본다. 


WICED의 hardware는 다음과 같은 조합으로 구성된다. 


- MCU

  * BCM4390 / BCM4390x

  * ST: STM32F2xxSTM32F4xx

  * Atmel: SAM4S16B

  * NXP: LPC17xx, LPC18xx

- WiFi

  * BCM4390 Integrated Apps + Wi-Fi SoC

  * BCM4390X (43909, 43907 and 43903) Integrated Apps + Wi-Fi SoC

  * BCM43362 Wi-Fi SoC

  * BCM43364 Wi-Fi SoC

  * BCM43341 Wi-Fi SoC

  * BCM43438 Wi-Fi SoC

  * BCM43341 Wi-Fi + Bluetooth combo SoC

- Bluetooth

  * BCM43341 Wi-Fi + Bluetooth combo SoC

  * BCM43438 Wi-Fi SoC

  * BMC20702, BCM20703, BCM20707


위를 보면 알겠지만 Cypress(Broadcom)의 WiFi, bluetooth의 IOT 환경을 지원하기 위한 platform이라고 할 수 있다. 


WiFi 관련하여 개발을 해본 사람을 알겠지만 WiFi driver와 firmware를 license 받아 개발하는 것이 쉬운 일은 아니다. 

Android의 open source 덕이라고 생각되는데(아니면 WiFi 표준이 안정화 되었기 때문), 지금은 GPL로 제공되는 WiFi driver와 firmware로도 사용할 수준이 된다. 초창기에는 GPL version은 license version에 비하여 진도가 늦고, 기능이 빠진 경우도 있어 제품에 적용하기에는 무리가 있었다. 

하지만 현 시점에서도 RTOS로 사양이 내려가면 동일한 문제가 있다. 이를 위하여는 WiFi firmware + device driver + wpa-supplicant(SSL/TLS)가 해당 OS 환경에 맞도록 포팅되어야 한다. 이들 모두를 세트로 제공해주고, 가격도 경쟁력이 있어 WICED는 좋은 솔루션임에는 틀림없다. 


지원되는 software 사양은 다음과 같다. 

- FreeRTOS / LwIP (full source)

- ThreadX  / NetX (object file)

- ThreadX  / NetXDuo (object file)


ThradX, NetX(IPv4), NetXDuo(IPv6), BESL(spa-supplicant + SSL/TLS) 등은 binary로 제공되어 전체가 open source는 아니지만 WICED 플랫폼에 한정하여서는 license free이기 때문에 자유롭게 사용하여도 된다. IPv4를 사용하는 경우에는 자신의 입맛에 맞게 FreeRTOS를 사용하거나 ThreadX를 사용하면 된다.

코드상에서 이들 OS API를 직접 사용하는 것이 아니라 wrapping 된 wiced API를 사용하면 필요에 따라서 빌드 시 어떤 OS를 사용할지 결정할 수 있다. 


github나 별도로 git tree를 제공해 주면 좋겠지만, 현재 배포 방식은 WICED 페이지에 SDK로 버전별로 배포하는 것이 전부인 것 같다. 

전체 software block은 아래와 같다. 아래 그림을 보면 알겠지만 무선랜은 WPA PSK(Pre-Shared Key)만 지원하고, 802.1x 기반의 enterprise security는 아직 지원하지 않는다. 

그리고 WiFi fimrware 이미지도 MCU가 들고 있다가 초기화 시 WiFi에 다운로드해줘야 하는데 이 이미지가 200KB 이상으로 flash memory 선정 시 이 크기도 감안하여 고려하여야 한다. OTA(Over-The-Air) upgrade를 고려하여야 한다면 1MB 가량의 internal flash 제품을 고르거나, 256KB/512KB internal flash에 별도의 sflash를 다는 구조로 하여야 할것이다. 


DCT(Device Configuration Table) 이중화와 ELF 형식의 이미지 업그레이드 등을 모두 제공하기 때문에 업그레이드를 위한 개발시간도 크게 단축할 수 있다. 




SDK를 보면 파일 크기가 큰데, 이는 필요한 툴을 모두 포함하고 있기 때문이다. 지원하는 host 환경은 Linux32, Linux64, OS X, Win32 를 모두 지원하고, 각각에 필요한 compiler, gdb 도 포함되어 있고, 디버깅 연결을 위한 OpenOCD 등도 포함되어 있다. 그냥 압축만 풀어서 path만 잡아주면 바로 빌드, 디버깅을 할 수 있어 이와 같은 패키징은 의외로 편리하다. 


App 폴더를 보면 다양한 예제를 제공하고 있기 때문에 이를 참고하여 개발을 한다면 쉽고 빠르게 원하는 기능을 적용할 수 있을 것이다. 



댓글
댓글쓰기 폼