■ 준비 사항
1. XDS100v3 드라이버 설치
  (EWARM의 arm\drivers\ti-xds\ti_emupack_setup.exe 파일 실행 혹은 ti.com에서 해당 파일을 다운로드)


■ contiki 예제 빌드
1. www.contiki-os.org 에서 Instant Contiki 2.7을 다운받는다.
   VmWare Player를 다운받아서 설치한다.

2. VmWare에서 Instant Contiki를 실행하면 Ubuntu Linux가 실행됨
   (기본 아이디와 비번은 user/user)

3. CC2538DK 예제 빌드하기
   /home/user/contiki/examples/cc2538dk/make TARGET=cc2538dk
   cc2538-demo와 timer-test 예제가 빌드됨

   ※ make TARGET=cc2538dk savetarget
       앞으로 사용할 디폴트 타겟을 결정

4. CC2538DK에 다운로드
   contiki-os.org 사이트에 나온 Z1을 프로그램하는 방식을 따라하다보면 에러 발생
  (.upload와 관련한 룰이 없다고 함)
   make cc2538-demo.upload
   make timer-test.upload


■ mist 예제 빌드 (Thingsquare사에서 나온 contiki 확장판 정도라고 생각하면 될듯..)
: 위의 contiki 예제는 뭐 할 수 있는 것들이 별로 없어서 thingsquare-mist-1.1.0를 다운받아서 예제를 컴파일해보았음.

1. thingsquare.com의 mist 소스 다운로드
   (http://www.thingsquare.com/download 사이트에서 Thingsquare firmware open source code (zip)가 있음)

2. mist에서 지원하는 플랫폼
   (instant-contiki가 모든 툴들이 다 설치되어 있기 때문에 일단은 여기서 테스트함)
※ 일단 thingsquare-mist-1.1.0/platform 디렉토리를 살펴보면 CC2538에 해당하는게 mist-cc2538dk, eth2538가 있음
    (아마도 eth2538은 Gateway용인듯하고, mist-cc2538dk가 노드용인듯...)

3. mist 예제 빌드
   contiki와 달리 examples 디렉토리에 어플리케이션 별로 정리가 되어있음.
   (contiki는 특정 플랫폼별 예제로 정리되어 있는데 반해 모든 플랫폼에서 동일하게 컴파일되는 구조인듯.)

   각각의 예제 폴더에서 아래와 같이 타겟 플랫폼을 지정해주고 빌드해야함
   /make TARGET=mist-cc2538dk
   /make TARGET=eth2538

4. 다운로드
  TI에서 uniflash라는 리눅스용 다운로더 프로그램을 받아서 설치해야하지만 VmWare상이라 그런지 타임아웃만 계속 발생함
  (offline 파일을 다운받아야함, Web 버전은 인스톨도 잘 안되고 잘못 설치되면 제거하기도 어려움)

  sudo /opt/ti/uniflashv3/eclipse/uniflash 로 직접 실행을 하거나..
  sudo nautilus 로 탐색기 같이 생긴걸 실행하고 바탕화면의 링크를 수퍼유저로 실행해야함

■ 프로그램 다운로드
1. uniflash에서 기본적으로 사용되는 포맷은 ihex 파일임.
2. arm-non-eabi-objcopy -O ihex blink.mist-cc2538dk blink.ihex
   (contiki나 mist의 기본 출력 파일 포맷이 elf 파일)
3. 윈도우 상의 uniflash를 실행하고, 타겟 설정을 XDS100v3 - CC2538SF53으로 설정
    VmWare의 탐색기에서 Ctrl+C한 파일을 윈도우 폴더에 Ctrl+V해서 붙여놓은 다음 이 파일을 선택해서 다운로드해주면 끝~

Uniflashv3.png