TI가 기존의 오픈 소스 무선랜 솔루션이 외에 새로이 SimpleLink 라는 Wi-Fi 솔루션을 릴리즈 했다. EETimes 기사
이 기사에 따르면 잔디깍기, 그릇 세척기, 알람시스템, 홈시큐리티, 혈압 모니터 등의 가전, 홈네트워크 및 헬스케어 디바이스에 쉽게 Wi-Fi를 추가할 수 있다고 한다. 심지어 우산에 장착해서 기상시스템에 연결해서 비가 올것으로 예상이 되면 LED를 켜는 내용의 소개도 있다.
마케팅 매니저인 Kurtz에 의하면
기존의 임베디스 Wi-Fi 솔루션을 가지고 있던 업체들과 동일한 얘기이다. 즉 Gainspan이나 Redpine Signals의 솔루션과 바로 경쟁이 될듯하다.
아래 동영상을 보면 상당히 쉬운 솔루션으로 소개를 하고 있으며, IoT(Internet of Things)의 시대가 바로 얼마남지 않은듯 하다.
Features
- Wi-Fi 802.11 b/g
- Best-in-class Link Budget
- TX Power: +20dBm
- RX Sensitivity: -89dBm
- Embedded software including all drivers, stack, and supplicant
- Low code size (Flash and RAM) required for MCU
- Certified and production-ready modules
- Complete platform solution including API guide, sample applications, Support Community (Wiki and Forum), User and porting guides
Benefits
- Universal IP connectivity enabled anywhere
- Enables low memory, low cost, low power MCU systems
- Longer range advantage vs. competition
- Proven Wi-Fi RF and interoperability
- Implement Wi-Fi quickly without previous Wi-Fi or RF experience
- Reduce development timeline and cost with CC3000 implementation and support infrastructure
- Simple certification process, reusing module RF certification
- Smaller board space for compact layouts
위 블럭다이아그램에 보듯이 Host MCU와는 SPI로 통신을 한다. SPI clock은 최대 26Mhz까지..
CC3000을 self-contained wireless processor라고 표현을 하는데, 이 말은 Wi-Fi를 위해 대부분의 처리는 CC3000에서 하므로 Host 시스템에서는 별로 할 것이 없다는 얘기이다.
정말 그런가? 이건 뒤에서 더 살펴보기로 하고…
제공되는 개발 플랫폼은
MSP430 기반의 보드 4종
CC3000 + MSP430 FRAM, CC3000 + MSP-EXP430F5529, CC3000 + MSP-EXP430F5438, CC3000 + MSP-EXP430FG4618
Cortex-M3기반 1종 CC3000 + Stellaris Cortex-M3,
Cortex-M4기반 1종 CC3000 + Stellaris Cortex-M4 이 있다.
모듈도 제공을 하는데 현재 LS Research사의 TiWi-SL이 있고 Murata에서 TypeVK를 출시 예정이다.
얼마나 쉽길래 SimpleLink 일까?
하드웨어적으로는 위 블럭 다이아그램처럼 간단히 SPI, IRQ, 전원정도만 연결을 하면 된다. 하지만 CC3000을 제어하기 위해서는 Host MCU에 SPI 드라이버를 포팅해야 한다. 이것도 이미 MCU에 대해 일반적인 지식이 있으면 어렵지 않다.
Host Driver Porting Guide
관련 자료 : http://processors.wiki.ti.com/index.php/CC3000_Host_Driver_Porting_Guide
MSP430을 쓰면 별도의 포팅 가이드 없이 제공해 주는 것을 쓰면 되겠지만 그렇지 않은 경우에는 위 가이드를 참고해서 같은 수준의 SPI 드라이버를 포팅한다.
Host Programming Guide
위 두 그림을 보면 TI에서 제공하는 s/w가 어떤 식으로 구성이 되는 지 알 수 있다. 위 두 그림은 같은 내용의 그림인데, 윗쪽의 그림을 보면 각 API가 command로 동작을 하고 event 기반임을 알 수 있다. 결국 SPI인터페이스 위에 HCI(Host Controlled Interface 의 약자)레이어가 있고, 4개의 API로 모듈화를 시켜놓았다.
각각의 모듈의 기능은 다음과 같다.
- WLAN APIs, which interact with the underlying entity that is responsible for 802.11 protocol implementation
- Network stacks APIs, which interact with the embedded network stack. These APIs comply with the well-known Berkeley socket APIs and are easy to use.
- Embedded network application APIs, which interact with the embedded networking application delivered as a complementary part of the on-chip content. These include basic networking applications that the user can leverage (for example, ping utility and DNS).
- Nonvolatile memory (NVMEM) APIs, which configure the external CC3000 device EEPROM, where most of the configuration is store.
코드를 보니 사실 NVMEM API는 configuration을 위한 독립적인 API이고, 나머지는 WLAN, SOCKET, NETAPP API는 서로 관련이 있는 API들인데, NETAPP API는 arp, ping, DHCP 및 IP 설정등을 담당하고, SOCKET API는 기본적인 TCP 함수들 send, recv, bind 등의 함수를 제공한다. WLAN API의 경우는 wlan 연결 설정 및 connect, close 등의 함수를 제공한다.
따라서 결론적으로 위의 코드들이 host MCU에 다 올라가야 한다는 얘기이다. -_-;;
임베디드시스템에 Wi-Fi를 추가하기 위해 어려운 점은 다음과 같다.
-. Linux와 같은 OS를 포팅해야 한다. 기존 시스템을 OS 기반의 시스템으로 전분 바꿔야 할지도…
-. RF에 대한 지식 부족. 전문가가 아니면 쉽게 손대기 힘들다. 따라서 모듈을 쓰는 경우가 많다.
-. 인증에 대한 비용 및 시간.
-. Wi-Fi 솔루션의 비용. 배보다 배꼽이 더 커질 수 있다.
SimpleLink가 많은 부분을 커버하고 있긴 하지만, AT command 기반의 seiral to Wi-Fi 모듈보다는 Host쪽에 코드를 포팅하는 작업은 그리 만만치 않아보인다.
보다 자세한 자료는 TI의 Wiki 페이지에서…http://processors.wiki.ti.com/index.php/CC3000_Wi-Fi_for_MCU