CC2530의 HomeAutomation\SampleLight 소스를 포팅하였습니다.

 

포팅 과정은 생각보다 꽤 길었습니다.

오늘 오전부터 온 종일 여기에 매달려야 했으니까요.

 

(지난번에 집인가 회사에선가 시도해보긴 했었는데..

 한 2~3시간 삽질하니깐 컴파일만 되는 것은 확인할 수 있었었습니다만...)

 

이래저래 혼자서 삽질을 하긴 했지만, 그런건 생략하기로 하고요.

 

 

▲ 간략한 과정 설명

 

1. 프로젝트 생성하기

 

먼저 CC2530의 \Projects\zstack\HomeAutomation 폴더를 통째로 카피합니다.

\Projects\zstack\HomeAutomation\SampleLight\CC2530DB을 지우고 \Projects\zstack\Samples\SampleApp\LM3S9B96 폴더를 복사합니다.

 

SampleApp.eww → SampleLight.eww

SampleApp.ewp  → SampleLight.ewp

SampleApp.ewd  → SampleLight.ewd

SampleApp.dep   → SampleLight.dep

 

그리고는 SampleLight.eww파일을 텍스트 뷰어로 열어서 SampleApp라는 문자열을 SampleLight로 교체합니다.

 

일단 여기까지 하고 SampleLight.eww파일을 열면 SampleLight 프로젝트가 열립니다.

 

 

 

 

2. 프로젝트 파일 정리하기

 

이 작업을 하는 요령은 다음과 같습니다.

포팅하고자 하는 SampleLight의 경우엔 ZStack-LM9B96-2.5.1엔 존재하지 않습니다.

따라서 CC2530의 프로젝트를 보면서 틀린점을 하나씩 찾아서 바꿔줘야합니다.

ZStack-CC2530-2.5.1a : SampleLight vs SampleApp

ZStack-LM9B96-2.5.1 : SampleLight vs SampleApp

 

바꿔주어야하는 부분은 소스 파일과 프로젝트의 설정입니다.

- Application Group

파일 제거 : OSAL_SampleApp.c, SampleApp.h, SampleApp.c, SampleAppHw.h, SampleAppHw.c

파일 추가 : OSAL_SampleLight.c, zcl_samplelight.h, zcl_samplelight.c, zcl_samplelight_data.c

- Profile Group

파일 추가 : zcl.h, zcl.c, zcl_general.h, zcl_general.c, zcl_ha.h, zcl_ha.c

※ ota_common.h, zcl_ota.h, zcl_se.h, zcl_key_establish.h, zcl_key_establish.c 파일은

    Monitor Task의 MT_UTIL 명령을 위해서 추가해야 하는 합니다.

   (그리고 \Projects\zstack\OTA 폴더도 복사해줘야합니다.)

 

Project Options → C/C++ Compiler → Preprocessor → Additional include directories

$PROJ_DIR$\.
$PROJ_DIR$\Source
$PROJ_DIR$\..\Source
$PROJ_DIR$\..\..\Source
$PROJ_DIR$\..\..\..\OTA\Source

$PROJ_DIR$\..\..\..\SE\Source
$PROJ_DIR$\..\..\..\Zmain\LM3Sxxxx
$PROJ_DIR$\..\..\..\..\..\Components\hal\include
$PROJ_DIR$\..\..\..\..\..\Components\hal\target\lm3s9B96cc2520
$PROJ_DIR$\..\..\..\..\..\Components\hal\target\_common\arm_cm3\drivers
$PROJ_DIR$\..\..\..\..\..\Components\hal\target\_common\arm_cm3\drivers\driverlib
$PROJ_DIR$\..\..\..\..\..\Components\hal\target\_common\arm_cm3\drivers\inc
$PROJ_DIR$\..\..\..\..\..\Components\hal\target\_common\arm_cm3\drivers\grlib
$PROJ_DIR$\..\..\..\..\..\Components\mac\include
$PROJ_DIR$\..\..\..\..\..\Components\mac\high_level
$PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\dual_chip
$PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04
$PROJ_DIR$\..\..\..\..\..\Components\osal\include
$PROJ_DIR$\..\..\..\..\..\Components\services\sdata
$PROJ_DIR$\..\..\..\..\..\Components\services\saddr
$PROJ_DIR$\..\..\..\..\..\Components\mt
$PROJ_DIR$\..\..\..\..\..\Components\stack\af
$PROJ_DIR$\..\..\..\..\..\Components\stack\nwk
$PROJ_DIR$\..\..\..\..\..\Components\stack\sapi
$PROJ_DIR$\..\..\..\..\..\Components\stack\sec
$PROJ_DIR$\..\..\..\..\..\Components\stack\sys
$PROJ_DIR$\..\..\..\..\..\Components\stack\zcl
$PROJ_DIR$\..\..\..\..\..\Components\stack\zdo
$PROJ_DIR$\..\..\..\..\..\Components\zmac
$PROJ_DIR$\..\..\..\..\..\Components\zmac\f8w
$PROJ_DIR$\..\..\common\arm_cm3
$PROJ_DIR$\..\..\..\..\..\Components\freertos\source\include
$PROJ_DIR$\..\..\..\..\..\Components\freertos\source\portable\iar\arm_cm3

 

 

Project Options → C/C++ Compiler → Preprocessor → Defined symbols

ewarm
PART_LM3S9B96

IAR_ARMCM3_LM
ZTOOL_P1
MT_AF_FUNC
MT_AF_CB_FUNC
MT_APP_FUNC
MT_DEBUG_FUNC
MT_NWK_FUNC
MT_NWK_CB_FUNC
MT_SYS_FUNC
MT_TASK
MT_UTIL_FUNC
MT_ZDO_FUNC
MT_ZDO_CB_FUNC
LCD_SUPPORTED=DEBUG

 

ewarm, PART_LM3S9B96는 제가 grlib, driverlib 라이브러리를 없애고,

소스파일로 집어넣으면서 에러를 없애기 위해서 넣은 부분입니다.

(StellarisWare를 받으면 grlib, driverlib 라이브러리 소스가 포함되어 있습니다.

 cpu파일인가 어디서 함수 이름이 똑같아서 에러가 났었는데.. 어디였는지 기억이 잘 안나네요.

 아무튼 기존에 Z-Stack에 포함된 소스와 비교해보시고 에러나는 부분의 함수를 바꿔주시면 됩니다.)

빨간 글씨 부분은 Z-Tool을 위해서 포함되어야 하는 부분입니다.

그리고 마지막의 LCD_SUPPORTED=DEBUG는 없을 경우엔 __error__ 가 없다고 나옵니다.

(자세히 따져보지는 않았지만 Debug 관련한 매크로의 문제인듯한데.. 그냥 이렇게 쓰면 됩니다)

 

 

Project Options → C/C++ Compiler → Extra Options

-f $PROJ_DIR$\..\..\..\Tools\LM3Sxxxx\f8wConfig.cfg
-f $PROJ_DIR$\..\..\..\Tools\LM3Sxxxx\f8wCoord.cfg
-f $PROJ_DIR$\..\..\..\Tools\LM3Sxxxx\f8wZCL.cfg

HomeAutomation 표준에서는 ZCL을 사용하기 때문에 커맨드라인 옵션에 추가합니다.

 

 

Project Options → Linker → Library

$PROJ_DIR$\..\..\..\Libraries\LM3Sxxxx\bin\Router-Pro.a
$PROJ_DIR$\..\..\..\Libraries\LM3Sxxxx\bin\Security.a
$PROJ_DIR$\..\..\..\Libraries\LM3Sxxxx\bin\Ecc.a
$PROJ_DIR$\..\..\..\Libraries\TIMAC\bin\TIMAC-LM3Sxx.a

런타임 라이브러리에도 MT_UTIL을 활용하기 위해서 위의 라이브러리를 추가합니다.

 

 

 

일단 이렇게 하고 Z-Tool을 설정한다음 연결하면 다음과 같이 연결되는 것을 볼 수 있습니다.

 

Z-Tool_CFG.PNG

 

Z-Tool.PNG

 

 

 

 

이렇게 하고 나서 연결을 해보려고 하니깐 노드에 대한 설정이 아무것도 안되어 있네요.

CC2530 보드들끼리 통신이 되는 녀석들을 참고해서 뭘 어떻게 설정해야할지 천천히 살펴봐야겠습니다.

 

오늘한 일에 대해서 몇글자 안되지만 정리하다보니깐 벌써 시간이 늦었네요.

CC2530ZDK가 도착하면 각각 명령어에 대해서 뭘 어떻게 해야하는지..

문서 참고하면서 실험해서 찬찬히 정리해서 올리도록 하겠습니다.