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을 설정한다음 연결하면 다음과 같이 연결되는 것을 볼 수 있습니다.
이렇게 하고 나서 연결을 해보려고 하니깐 노드에 대한 설정이 아무것도 안되어 있네요.
CC2530 보드들끼리 통신이 되는 녀석들을 참고해서 뭘 어떻게 설정해야할지 천천히 살펴봐야겠습니다.
오늘한 일에 대해서 몇글자 안되지만 정리하다보니깐 벌써 시간이 늦었네요.
CC2530ZDK가 도착하면 각각 명령어에 대해서 뭘 어떻게 해야하는지..
문서 참고하면서 실험해서 찬찬히 정리해서 올리도록 하겠습니다.
번호 | 제목 | 닉네임 | 조회 | 등록일 |
---|---|---|---|---|
17 | [로드맵] 현 상황에서 로드맵.. [4] | just4you |
9007 | 2014-04-16 |
16 | contiki 예제 빌드 & 다운로드까지 성공~ [1] | just4you |
15451 | 2014-04-11 |
15 | [실패] Z-Stack Home에 LM3S9B96을 포팅하면서 느낀 점.. | just4you |
6144 | 2014-04-08 |
14 | [2014-02-15] 향후 진행 방향에 대한 논의 [1] | just4you |
11395 | 2014-03-17 |
13 | Contiki 예제 컴파일 후기.. [3] | just4you |
5171 | 2014-01-21 |
12 | CC2538 노드 및 디버거 회로도 [2] | just4you |
8215 | 2014-01-13 |
11 | ZLL Gateway 테스트 중... [1] | just4you |
7625 | 2013-08-13 |
10 | CC2538DK 개발 환경 설정하기. [1] | just4you |
8069 | 2013-08-02 |
9 | CC2538 Cortex-M3로 원칩 솔루션이 새로 나왔네요.. [3] | just4you |
3585 | 2013-06-03 |
8 | Z-Stack의 네트워크 초기화... | just4you |
3104 | 2013-05-16 |
7 | Z-Stack에 대한 SampleApp 예제 설명 및 테스트.. | just4you |
7258 | 2013-05-10 |
Z-Stack HomeAutomation SampleLight 소스 포팅 작업 | just4you |
8215 | 2013-04-26 | |
5 | 지금까지 TI의 Z-Stack에 대해 알아낸 사항들을 중간 정리합니다. [2] | just4you |
7954 | 2013-04-12 |