본문 바로가기
임베디드.일렉트로닉스

SimpleLink API for CC3100,CC3200

by 리치굿맨 2019. 11. 11.
 

개요

 
 
기본정보.
1. SimpleLink API 간략 레퍼런스 사이트
2. SimpleLink API pdf 문서. 
swru368a-CC3100-CC3200-Simplelink-API-1.pdf
다운로드

 

 

 

 

 

 

 

 

 

TI사의 CC3100/CC3200 을 사용자 목적에 맞게 펌웨어 코딩하는 과정은 TI사에서 제공하는 SimpleLink Driver 라는 C로 되어있는 소스코드 라이브러리를 활용하는 것으로 이뤄진다. 본 글은 SimpleLink Driver가 무엇이며, 어떻게 활용하는지 방법을 정리해둔다.

 

SImpleLink Driver 이해하기 

 

CC3100 의 경우에는 외부에 별도의 MCU 코딩환경에서 SimpleLink Driver 소스들을 포함시키고, 사용자 코드는 SimpleLink Driver 에서 제공하는 함수를 호출하는것으로 개발이 진행된다. 이때 MCU와 CC3100간의 통신은 SPI, UART가 가능하다.


CC3200 의 경우에는 "내장"된 MCU 개발환경에서 SimpleLink Driver 소스들을 포함시키고, 사용자 코드는 SimpleLink Driver 에서 제공하는 함수를 호출하는것으로 개발이 진행된다.CC3100과 완전히 동일하다. CC3200 의 MCU는 내부적으로 SPI로 네트웍코아측과 통신하게 된다.


즉, CC3100이나, CC3200 이나 개발방법론은 완전히 동일하게 SimpleLink Driver 기반으로 한다.

CC3100은 외부 MCU, CC3200 은 내부 MCU라는 점 만이 차이점이다.

 

 

SImpleLink Driver 정보사이트

CC3200 용 SimpleLink 사이트와 CC3100용 SimpleLink 사이트가 따로있지만,

CC3200 용 SimpleLink 사이트: http://software-dl.ti.com/ecs/cc31xx/APIs/public/cc32xx_simplelink/latest/html/index.html

CC3100 용 SimpleLink 사이트: http://software-dl.ti.com/ecs/cc31xx/APIs/public/cc31xx_simplelink/latest/html/index.html

위 사이트에서 볼 수 있는 SImpleLink Driver 라는 것은 완전히 동일한것이다.

위 2개 정보사이트에서의 차이점이라고는 CC3200 은 칩내에 MCU가 있다는 점이고, 내장 MCU와 네트웍코아간에 SPI통신으로 고정되어있고, CC3100은 외부 MCU와 SPI, UART 2종 가능하다.

 

 

 

SImpleLink Driver 파일 확보하는 방법

https://igotit.tistory.com/295  에서 설명됨.

 

CC3100 CC3200 개발환경 구축.- wifi chip

CC3100 CC3200 공통 준비사항. 1. CCS : TI사에서 Code Composer Studio 다운로드 하고 개발PC에 설치. 2. UniFlash : http://processors.wiki.ti.com/index.php/CC31xx_%26_CC32xx_UniFlash_Quick_Start_Guide 의..

igotit.tistory.com

 

SimpleLink Driver 요점정리.


앞의 SimpleLink Driver pdf문서에 전부 있는 내용이지만, 요점만 리해둔다.

이 내용들은 앞부분 20페이지까지의 내용 중 일부이다.


SimpleLink Driver를 탑재하는 MCU의 적은리소스만 요구한다.

예: TCP 클라이언트 응용의 경우 7kbyte flash, 0.7kbyte RAM이면 충분하다.

 

SimpleLink Driver는 모든 MCU, 컴파일러, 운영체제 무관하게 포팅가능하다. -완전한 호환성.

사유:완전표준화된 ANSI C(C89),BSD Socket 코드,단순한 API 로 만들어졌기 때문임.

- simplelink driver는 표준C컴파일러(C89) 를 모두 지원한다.또한 특정 컴파일러 종속적인 코드가 없단다.

- simplelink driver는 8bit, 16bit, 32bit MCU를 모두 지원한다.

- simplelink driver는 모든 클럭에서 작동가능하다.

- simplelink driver는 big-endian, little-endian 모두 지원한다.

- simplelink driver는 OS 사용, 비사용 모두 지원한다.

주 - RTOS환경에서도 작동한다는 말이며, CC3200 의 응용예를 보면 FreeRTOS 기반으로 만들어진 것도 많고 고기능에서는 FreeRTOS를 사용하는것이 유리한것으로 보인다.


SimpleLink Driver 의 구성요소(빌딩블럭)


- 주요기능 6종이 구현된 API모듈로 구성된다.


1. Device API - 하드웨어관련 기능들 예 : start, stop, set, read device configuration.

2. WLAN API - WLAN (IEEE802.11 프로토콜)관련 기능들. 예 : station, AP, P2P같은 mode, provisioning 방식설정, connection profiles 추가, setting connection policy

3. Socket API - Berkeley socket APIs 와 함께 제공. 사용자 응용에서 가장 흔히 사용되는것.

4. NetApp API - HTTP server, DHCP server, mDNS Client/Server 류의 networking service.

5. NetCfg API - configuring networking parameters, MAC주소설정, DHCP로부터 IP확보, static IP 주소 설정등.

6. File System API - CC3100/CC3200 의 외부 Serial Flash 메모리 읽기쓰기위한것.


아래그림에서 푸른색부분이 SimpleLink Driver를 보이고 있다. 최상단 사용자 코드는 SimpleLink Driver 의 함수를 호출한다.

 

CC3100 의 경우 SimpleLink Driver 의 계층을 아래 그림에서 명확히 알 수 있다. CC3100 외부의 별도의 MCU내에서 사용자 응용코드는 SimpleLink Driver 를 경유하여 SPI나 UART 로 CC3100 과 연결되어 작동된다. 

 

 

 

 

SimpleLink Driver 포팅방법.


CC3100 을 핸들링하는 임의 MCU에 SimpleLink Driver 를 포팅하는 방법 설명한다.


TI사의 위키: http://software-dl.ti.com/ecs/cc31xx/APIs/public/cc31xx_simplelink/latest/html/porting.html


위 주소의 porting부분에 총 8 step으로 설명 잘 되어 있으니 이를 따라서 진행하면된다.

 

 

SimpleLink Driver 이용한 Network Application 코딩흐름.


- 본 내용은 아래 pdf 문서의 페이지 13~20 까지의 내용 요약이다.

문서제목 : CC3100\CC3200 SimpleLink™ Wi-Fi Network Processor Subsystem

pdf보기 : http://www.ti.com/lit/ug/swru368/swru368.pdf


- network application 에 필요한 SimpleLink Driver에서 제공하는 SW block 을 설명한다.

- 본 설명에서 제시하는 흐름은 대부분의 응용코드 작성에서 추천되는 흐름이다.

- SimpleLink Driver 의 SW block 을 활용함에서 있어서 개발자는 omplete flexibility 를 가질 수 있으며 본 내용에서의 설명은 단지 가이드를 위한 단순 사례로써 제시되는 정보이다.


SimpleLink Driver 기반 코딩흐름.


단계1. Device Initialization - Wi-Fi subsystem initialization

hibernate state 에서 Wi-Fi subsytem을 깨운다.


단계2. Configuration

주로 한번만 이뤄지면 되는 설정들 달성한다.

예: cold boot configuration , WLAN STA 인것을 WLAN sott AP로 혹은 WLAN P2P로 변경, MAC address 변경 등.

이들 설정이 실 적용될려면 Wi-Fi subsystem 을 재부팅해야한다.


단계3. WLAN Connection

WLAN 통신이 수립된다. 예: WLAN STA로 AP에 접속하는것.

 

DHCP : TCP/UDP 통신 이전에 반드시 IP Address 가 수신되어야 한다. (주 : DHCP서버가 발행하고 DHCP클라이언트가 수신해야 한다.)


단계4. Socket Connection

TCP/IP 계층을 셋업한다. 이 과정은 아래 단계로 이뤄진다.


1. Creating the Socket - TCP, UDP, RAW socket 중 1개를 선택한다. server socket/ client socket 중 하나를 선택한다. 소켓특성 blocking/non-blocking , socket time-out 설정한다.


2. Querying for the server IP address - client socket 측에서는, 통상 서버측 IP address 가 필요해진다. 이를 확보하는 방법은 server name 을 이용하여 IP address 를 요청한다. 이때 사용되는 프로토콜이 DNS다.


3. Creating socket connection - TCP 소켓에서는 데이터 통신전에 socket connection 을 수립해야한다.


단계5. Data transaction

단계4에서 socket connection이 수립되면 socket server 와 socket client 간에 데이터 통신을 응용로직에 맞게 구현한다.


단계6. Socket Disconnection

더 이상 소켓기반 데이터 통신 하지 않을려는 경우 socket 연결수립된 것을 닫기 처리한다.


단계7. Wi-Fi subsystem hibernate

wi-Fi subsystem 을 오랫동안 사용하지 않는 경우 hibernate state 로 보낸다.


단계6과 단계7 부연설명 : 응용목적마다 다르게 처리된다. 어떤 경우엔 장치 오프할 때까지 연속 통신해야하는 경우도 있으며 이 때는 단계6과 7처리는 생략해도 된다.


Code example


- 위 코딩흐름 각 단계별 코드 예.


아래 문서 페이지 14~17.


문서제목 : CC3100\CC3200 SimpleLink™ Wi-Fi Network Processor Subsystem

pdf보기 : http://www.ti.com/lit/ug/swru368/swru368.pdf

 

 

SimpleLink 주요활용정보.

non-OS에서 활용하는 경우 while문내에 _SlNonOsMainLoopTask(); 둬라는 내용

http://e2e.ti.com/support/wireless_connectivity/f/968/t/365663.aspx
<- 중요하다. 함수 _SlNonOsMainLoopTask(); 를 main while 문내에 배치해둬야 STATION 연결 비연결 이벤트가 정상적으로 발생한다. _SlNonOsMainLoopTask(); 를 while속에 두지 않으면 STATION 연결 비연결 이벤트가 정상적으로 발생하지 않고 AP 실행 처음에 STATION연결이벤트가 한번만 발생하고 이후에 STATION 연결, 비연결시 이벤트 발생하지 않음.


cc3100/cc3200 이 AP 로 작동시 1개의 Station만 접속 가능한데, 이 질답의 답변중에 " If you require more clients to access, then you will need to use Station mode (i.e. Join it to a Wifi Router network)" <- 이런 말이 있다. Router Network..<- 별 의미있는 솔루션 아님.그냥 기존의 다른 AP(혹은 라우터라 불리는것)에 여러개 접속시켜라는 말임.

http://e2e.ti.com/support/wireless_connectivity/f/968/p/354255/1244936.aspx#1244936

 

 

WLAN Connection 관련 주요활용정보.

STATION 연결 해제시 AP측에서 이벤트 발생하지 않음 질답

http://e2e.ti.com/support/wireless_connectivity/f/968/p/351918/1235049.aspx#1235049

connection event 질답 : http://e2e.ti.com/support/wireless_connectivity/f/968/p/362968/1279201.aspx#1279201

 

소켓관련 주요활용정보.


소켓서버에서 클라이언트 드롭된것 확인하는 빠른 방법 질답 : http://e2e.ti.com/support/wireless_connectivity/f/968/t/360713.aspx

답변: The return value of sl_Recv() can be used to detect the connection drop from the remote side. A sl_Recv() should return 0 if the connection is closed by the remote in both blocking and non-blocking case.

 

 

 


첫 등록 : 2016년 7월 16일 

최종 수정 : 2019년 11월 11일 

단축 주소 : https://igotit.tistory.com/819

 


 

 

태그

댓글0


   
현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     선물 인버스 |선물 USDT